для первого – X3X4;
для второго – X1X3;
для третьего – X2X3;
для четвертого – X1X2X4;
для пятого – X1X2X4;
Минимальная ДНФ будет выглядеть так:
F(X1X2X3X4) = X1X3 V X2X3 V X3X4 V X1X2X4 V X1X2X4.
Сравнивая метод карт Карно с другими методами минимизации функции можно сделать вывод, что первый больше всего подходит для ручного исполнения. Время ручной работы значительно сокращается (за счет наглядного представления склеивающихся импликант). Программная реализация данного метода имеет свои сложности. Так, очень сложно будет реализовать оптимальный выбор правильных прямоугольников, особенно для большого числа аргументов.
1.3.5 Метод неопределенных коэффициентов
Этот метод может быть использован для любого числа аргументов. Но так как этот метод достаточно громоздок, то применяется только в тех случаях, когда число аргументов не более 5-6.
В методе неопределенных коэффициентов используются законы универсального и нулевого множеств и законы повторения. В начале все коэффициенты неопределенны (отсюда и название метода).
Построим матрицу неопределенных коэффициентов для четырех аргументов. В этом случае мы будем иметь систему из 16-ти уравнений.
Система приведена на следующей странице.
Приравняем все коэффициенты 0 в тех строках, которым соответствует 0 в векторе столбце. Затем приравняем 0 соответствующие коэффициенты в других строках. После этих преобразований система примет следующий вид:
V = 1 V V V V V V = 1 V V V V V V = 1 V = 1 V V V = 1 V V V V V V = 1 V V V = 1 V V V V V = 1 V V V = 1Теперь в каждой строке необходимо выбрать коэффициент минимального ранга и приравнять его единице, а остальные коэффициенты – 0. После этого вычеркиваем одинаковые строки, оставляя при этом одну из них (те строки, у которых все коэффициенты равны 0, также вычеркиваются).
= 1 = 1 = 1 = 1 = 1Запишем теперь конъюнкции, соответствующие коэффициентам, равным единицам. Мы получим минимальную ДНФ.
F(X1X2X3X4) = X1X3 V X2X3 V X3X4 V X1X2X4 V X1X2X4.
Итак, мы получили несколькими способами минимальную ДНФ, Во всех случаях она получилась одинаковой, то есть любой из описанных методов может быть использован для минимизации функции. Однако эти методы существенно отличаются друг от друга как по принципу нахождения МДНФ, так и по времени исполнения. Для ручных расчетов очень удобен метод карт Карно. Он нагляден, не требует рутинных операций, а выбрать оптимальное расположение правильных прямоугольников не составляет большого труда. В то время как машинная реализация данного метода осложняется необходимостью нахождения оптимального расположения прямоугольников. Естественно применение других методов (метод Квайна, метод Квайна-Маккласки, метод неопределенных коэффициентов) для ручных расчетов нецелесообразно. Они больше подойдут для машинной реализации, так как содержат большое число повторяющихся простых операций.
Задание 2.
2.1 Схема алгоритма для метода Квайна
1. Начало.
2. Ввести матрицу ДСНФ исходной функции.
3. Проверить на склеиваемость i-ю (i=1,m-1: где m – количество строк в ДСНФ) и j-ую (j=i+1, m) строки. Если строки склеиваются, то перейти к пункту 6, в противном случае перейти к пункту 5.
4. Формировать массив простых импликант, предварительно пометив символом ‘*’ ту переменную, по которой данные строки склеиваются.
5. Перейти к пункту 2.
6. Строку, которая не склеилась ни с одной другой строкой записать в конечный массив.
7. Перейти к пункту 2.
8. Вывод полученной матрицы.
9. Конец.
Логическая схема алгоритма в нотации Ляпунова
1 1
VHV1Z1V2¯V3V4VK
VH – начало.
V1 – ввести матрицу ДСНФ исходной функции.
V2 – формировать массив простых импликант, предварительно пометив символом ‘*’ ту переменную, по которой данные строки склеиваются.
V3 – строку, которая не склеилась ни с одной другой строкой записать в конечный массив.
V4 – вывод полученной матрицы.
Z1 – если строки склеиваются, то перейти к пункту 3, в противном случае перейти к пункту 5.
VK – конец.
Граф-схема алгоритма.
Описаниемашинныхпроцедур
Procedure Stuck(S1, S2: Diz; IndexS1, IndexS2 : byte);
Данная процедура склеивает два, передаваемых ей дизъюнкта. Дизъюнкты задаются в параметрах S1, S2. Индексы IndexS1, IndexS2 определяют индексы этих дизъюнктов в главном рабочем массиве . Алгоритм работы процедуры следующий: сначала ищется количество склеивающихся символов. Если их 0, то они одинаковые, и в конечный массив записывается только один из них. Если 1, то определяется местоположение символа, по которому данные две дизъюнкции склеиваются, и заменяем этот символ на ‘*’. Все полученные результаты заносятся в массив REZ.
Все остальные функции и процедуры программы связаны с действиями над массивами, то есть не имеют непосредственного отношения к данному методу нахождения МДНФ. Поэтому нет смысла их описывать.
2.2 Схема алгоритма для метода Петрика
1. Начало.
2. Ввести матрицу ДСНФ исходной функции и простые импликанты, полученные в методе Квайна.
3. Составить таблицу меток.
4. По таблице меток построить конъюнкцию дизъюнкций, каждая из которых есть совокупность тех импликант, которые в данном столбце имеют метки.