Минимизация функции с помощью метода Квайна
Члены ![]() | Первое склеивание | Второе склеивание |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | |
![]() | ![]() | |
![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | |
![]() | + | + | |||
![]() | + | + | + | + |
Результат:
Минимизация функции с помощью метода Квайна-Мак-Класки.
Данная функция | Первое склеивание | Второе склеивание | |||
Коды | Группы | Коды | Группы | Коды | Группы |
000 * | X -00 | -00 * -10 * | --0 | ||
1 010 * 100 * | 0-0 | --0 | |||
-10 | 0-0 * 1-0 * | ||||
110 * | 1-0 | ||||
111 * | 11- | 11- |
11- | + | + | |||
--0 | + | + | + | + |
Результат:
Минимизация функции методом неопределенных коэффициентов.
.
После этого система примет вид
В полученной системе в силу свойства дизъюнкции можно приравнять к единице коэффициенты , тогда все уравнения этой системы превращаются в тождества. Все остальные коэффициенты во всех уравнениях положим равными нулю.
Результат:
Минимизация функции с помощью метода минимизирующих карт.
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Вычеркиваем строки, равные нулю. Затем вычеркиваем элементы, которые содержатся в вычеркнутых строках. Выбираем конъюнкции с минимальным числом знаков, чтобы они как можно чаще встречались (из каждой невычеркнутой строки). Записываем их дизъюнкцию, которая будет равна минимальной форме функции.
Результат:
Код программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ДМЛР2
{
class Program
{
static string output;
public static void AA(string[] A, string[] B, string[] C)
{
for (int i = 0; i <= 2; i++)
{
if (A[i] == B[i])
{
C[i] = A[i];
}
}
if ((C[0]!= "" && C[1]!= "") || (C[1]!= "" && C[2]!= "") || (C[0]!= "" && C[2]!= ""))
{
A[3] = "*"; B[3] = "*";
}
else
{
for (int i=0; i<=2;i++)
{
C[i] = "";
}
}
}
public static void A(string[] A, string[] B, string[] C)
{
for (int i = 0; i <= 2; i++)
{
if (A[i] == B[i])
{
C[i] = A[i];
}
}
if ((A[0]!= "" && B[0]!="" && A[1]!= "" && B[1]!= "") || (A[0]!= "" && B[0]!= "" && A[2]!= "" && B[2]!= "") || (A[1]!= "" && B[1]!= "" && A[2]!= "" && B[2]!= ""))
{
A[3] = "*"; B[3] = "*";
}
else
{
for (int i = 0; i <= 2; i++)
{
C[i] = "";
}
}
}
public static void B(string[] A)
{
if (A[3]!= "*" && ((A[0]!= "" && A[1]!= "") || (A[1]!= "" && A[2]!= "") || (A[0]!= "" && A[2]!= "")))
{
for (int i = 0; i <= 3; i++)
{
Console.Write(A[i]);
}
Console.WriteLine("");
}
}
public static void C(string[] A)
{
if ((A[0]!= "" && (A[1] == "" && A[2] == "")) || (A[1]!= "" && (A[0] == "" && A[2] == "")) || (A[2]!= "" && (A[0] == "" && A[1] == "")))
{
for (int i = 0; i <= 2; i++)
{
Console.Write(A[i]);
output += A[i] + " ";
}
Console.WriteLine("");
}
}
public static void D(string[] A)
{
if (A[3]!= "*")
{
for (int i = 0; i <= 2; i++)
{
output += A[i];
if (i == 2)
output += " ";
}
}
}
static void Main(string[] args)
{
string[] A12 = { "", "", "", "" }; string[] A13 = { "", "", "", "" }; string[] A14 = { "", "", "", "" }; string[] A15 = { "", "", "", "" }; string[] A23 = { "", "", "", "" }; string[] A24 = { "", "", "", "" }; string[] A25 = { "", "", "", "" }; string[] A34 = { "", "", "", "" }; string[] A35 = { "", "", "", "" }; string[] A45 = { "", "", "", "" };
string[] A1 = { "!x1", "!x2", "!x3", "" };
string[] A2 = { "!x1", "x2", "!x3", "" };
string[] A3 = { "x1", "!x2", "!x3", "" };
string[] A4 = { "x1", "x2", "!x3", "" };
string[] A5 = { "x1", "x2", "x3", "" };
string[] A1213 = { "", "", "", "" }; string[] A1214 = { "", "", "", "" }; string[] A1215 = { "", "", "", "" }; string[] A1223 = { "", "", "", "" }; string[] A1224 = { "", "", "", "" }; string[] A1225 = { "", "", "", "" }; string[] A1234 = { "", "", "", "" }; string[] A1235 = { "", "", "", "" }; string[] A1245 = { "", "", "", "" }; string[] A1314 = { "", "", "", "" }; string[] A1315 = { "", "", "", "" }; string[] A1323 = { "", "", "", "" }; string[] A1324 = { "", "", "", "" }; string[] A1325 = { "", "", "", "" }; string[] A1334 = { "", "", "", "" }; string[] A1335 = { "", "", "", "" }; string[] A1345 = { "", "", "", "" }; string[] A1415 = { "", "", "", "" }; string[] A1423 = { "", "", "", "" }; string[] A1424 = { "", "", "", "" }; string[] A1425 = { "", "", "", "" }; string[] A1434 = { "", "", "", "" }; string[] A1435 = { "", "", "", "" }; string[] A1445 = { "", "", "", "" }; string[] A1523 = { "", "", "", "" }; string[] A1524 = { "", "", "", "" }; string[] A1525 = { "", "", "", "" }; string[] A1534 = { "", "", "", "" }; string[] A1535 = { "", "", "", "" }; string[] A1545 = { "", "", "", "" }; string[] A2324 = { "", "", "", "" }; string[] A2325 = { "", "", "", "" }; string[] A2334 = { "", "", "", "" }; string[] A2335 = { "", "", "", "" }; string[] A2345 = { "", "", "", "" }; string[] A2425 = { "", "", "", "" }; string[] A2434 = { "", "", "", "" }; string[] A2435 = { "", "", "", "" }; string[] A2445 = { "", "", "", "" }; string[] A2534 = { "", "", "", "" }; string[] A2535 = { "", "", "", "" }; string[] A2545 = { "", "", "", "" }; string[] A3435 = { "", "", "", "" }; string[] A3445 = { "", "", "", "" }; string[] A3545 = { "", "", "", "" };
AA(A1, A2, A12); AA(A1, A3, A13); AA(A1, A4, A14); AA(A1, A5, A15); AA(A2, A3, A23); AA(A2, A4, A24); AA(A2, A5, A25); AA(A3, A4, A34); AA(A3, A5, A35); AA(A4, A5, A45);
Console.WriteLine("Первое склеивание:");
B(A12); B(A13); B(A14); B(A15); B(A23); B(A24); B(A25); B(A34); B(A35); B(A45);
A(A12, A13, A1213); A(A12, A14, A1214); A(A12, A15, A1215); A(A12, A23, A1223); A(A12, A24, A1224); A(A12, A25, A1225); A(A12, A34, A1234); A(A12, A35, A1235); A(A12, A45, A1245); A(A13, A14, A1314); A(A13, A15, A1315); A(A13, A23, A1323); A(A13, A24, A1324); A(A13, A25, A1325); A(A13, A34, A1334); A(A13, A35, A1335); A(A13, A45, A1345); A(A14, A15, A1415); A(A14, A23, A1423); A(A14, A24, A1424); A(A14, A25, A1425); A(A14, A34, A1434); A(A14, A35, A1435); A(A14, A45, A1445); A(A15, A23, A1523); A(A15, A24, A1524); A(A15, A25, A1525); A(A15, A34, A1534); A(A15, A35, A1535); A(A15, A45, A1545); A(A23, A24, A2324); A(A23, A25, A2325); A(A23, A34, A2334); A(A23, A35, A2335); A(A23, A45, A2345); A(A24, A25, A2425); A(A24, A34, A2434); A(A24, A35, A2435); A(A24, A45, A2445); A(A25, A34, A2534); A(A25, A35, A2535); A(A25, A45, A2545); A(A34, A35, A3435); A(A34, A45, A3445); A(A35, A45, A3545);
Console.WriteLine("Второе склеивание:");
C(A1213); C(A1214); C(A1215); C(A1223); C(A1224); C(A1225); C(A1234); C(A1235); C(A1245); C(A1314); C(A1315); C(A1323); C(A1324); C(A1325); C(A1334); C(A1335); C(A1345); C(A1415); C(A1423); C(A1424); C(A1425); C(A1434); C(A1435); C(A1445); C(A1523); C(A1524); C(A1525); C(A1534); C(A1535); C(A1545); C(A2324); C(A2325); C(A2334); C(A2335); C(A2345); C(A2425); C(A2434); C(A2435); C(A2445); C(A2534); C(A2535); C(A2545); C(A3435); C(A3445); C(A3545);
D(A12); D(A13); D(A14); B(A15); D(A23); D(A24); D(A25); D(A34); D(A35); D(A45);
string[] vivod = output.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
string[] result = vivod.Distinct().ToArray();
Console.WriteLine("Ответ:");
Console.WriteLine(string.Join(" ", result));
Console.ReadKey();
}
}
}
Блок-схема
Рисунок 1 – Блок-схема
Результат работы программы
Рисунок 2 – Результат работы программы