Компьютерная дискретная математика Минимизация булевых функций Лекция 7 Н.В. Белоус Факультет компьютерных наук Кафедра ПО ЭВМ, ХНУРЭ ХНУРЭ, кафедра ПО ЭВМ, Тел. 7021-446, e-mail: belous@kture.Kharkov.ua Критерии минимизации Задача минимизации состоит в отыскании простейшей, согласно выбранному критерию минимизации, формулы среди множества формул, соответствующих заданной булевой функции. - Критерии минимизации: Количество переменных в формуле; Количество операций; Комбинирование. 2 Определения и понятия Импликантой некоторой функции f называется функция g, такая, что на всех интерпретациях, на которых g равна единице, f тоже равна единице. Примеры импликант: - минтермы функции; - элементарные конъюнкции ДНФ. 3 Определения и понятия Всякую элементарную конъюнкцию A, входящую в состав элементарной конъюнкции B и содержащую меньше переменных, чем конъюнкция B, называют собственной частью конъюнкции B. Пример B xy z Собственные части В: xy , x z , y z , x , y , z 4 Определения и понятия Простой импликантой называется такая импликанта, что никакая ее собственная часть не является импликантой данной функции. Множество всех простых импликант функции составляет покрытие данной функции. 5 Примеры импликант f x yz x y z x y x y z f x y xy 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 6 Определения и понятия Дизъюнкция всех простых импликант функции называется ее сокращенной ДНФ. Тупиковой ДНФ называется ДНФ данной булевой функции, состоящая только из простых импликант. Минимальной ДНФ (МДНФ) данной булевой функции называется одна из ее тупиковых ДНФ, которой соответствует наименьшее значение выбранного критерия минимизации ДНФ. 7 Минимальные формы Последовательность форм: получения минимальных 1. Функция должна быть представлена в совершенной нормальной форме (СДНФ или СКНФ) 2. Находят сокращенную ДНФ (КНФ) – она единственная для любой функции 3. Находят возможные тупиковые ДНФ (КНФ) 4. Из тупиковых форм выбирают минимальные ДНФ (КНФ) 8 Преобразования для построения сокращенной ДНФ Склеивание xA x A A Поглощение A Ax A Неполное склеивание Ax A x A Ax A x где А – некоторая элементарная конъюнкция переменных х – булева переменная 9 Карты Карно Карты Карно (Вейча) – это специального вида таблицы, используемые для задания переключательных функций и позволяющие упростить процесс поиска минимальных форм. Значения переменных разбиваются на части располагаются в заголовках строк и столбцов карты так, чтобы соседние строки и столбцы отличались значениями только одного переменной – (0,0)(0,1)(1,1)(1,0). 10 Карты Карно для функций трех переменных Карты Карно для функций трех переменных имеют вид таблицы 24, где столбцы соответствуют всевозможным наборам значений первых двух переменных, а строки – значениям третьей переменной. Пример Построить карту Карно для функции f ( x , y , z ) x y z x yz x yz xyz 11 Правила склеивания контуров карт Карно 1. Строится карта Карно, соответствующая данной функции. 2. Ячейки объединяются в группы, обозначающие операции склеивания. В объединении участвуют только соседние ячейки, в которых находятся единицы. 3. В группу можно объединить только количество ячеек, равное 2n, n=1,2,3,... . При этом группа может иметь только прямоугольную или квадратную форму. 12 Правила склеивания контуров карт Карно 4. Задача склеивания заключается в нахождении набора максимальных групп. Максимальная группа – это группа, которая не входит целиком ни в одну другую группу и соответствует простой импликанте функции. 5. Каждая группа, полученная после склеивания, соответствует импликанте функции. 6. Дизъюнкция всех полученных простых импликант представляет собой результат минимизации формулы и является минимальной ДНФ. 13 Карты Карно для функций трех переменных К конституентам единицы, соответствующим любым двум соседним ячейкам, можно применить операцию склеивания, так как они отличаются только одной переменной. Рисунок – Ячейки, соседние с ячейками А и B 14 Карты Карно для функций трех переменных. Пример Найти МДНФ для функции f ( x , y , z ) x y z xy z x y z xyz xy zt 0 1 00 01 11 10 1 1 1 B C 1 A A x y z B y z C xy f ( x , y , z ) x y z y z xy 15 Карты Карно для функций четырех переменных. Пример Карта Карно для функции четырех переменных имеет размер 44. Каждая ячейка имеет четыре соседних. f ( x , y, z ,t ) x y z t x y z t x y z t x y z t x y z t x y z t x y z t A xy 00 01 11 10 A yz 00 1 1 B yt 01 1 1 C xzt 11 1 1 D xyz t zt 1 10 1 B C D f ( x , y , z , t ) y z yt xzt xyz t 16 Карты Карно для функций пяти переменных Карта Карно для функции пяти переменных представляет в пространстве двухслойный параллелепипед, где каждый слой соответствует карте Карно от первых четырех переменных функции. Каждая ячейка на карте Карно для функции пяти переменных имеет пять соседних ячеек: четыре – на своем слое карты и пятая – на соседней, т.е. ячейку, которая совпадет с данной, если разместить слои карты один поверх другого. 17 Карты Карно для функций пяти переменных. Пример f ( x , y, z ,t ,w ) x y z t w x y z t w x y z t w x y z t w x yz t w x yz tw x yzt w x yzt w x yzt w x yzt w xy 00 01 11 10 zt xy 00 01 11 10 zt 00 00 1 1 1 1 1 1 01 01 11 1 11 1 10 1 A B C 1 Е 10 D f ( x , y , z , t , w ) x yzt w z t w y z t x t w xyz w 18 Карты Карно для функций шести переменных Карта Карно для функции шести переменных представляет в пространстве четырехслойный параллелепипед, где каждый слой соответствует карте Карно от первых четырех переменных функции. Слои карты считаются соседними, если соответствующие им интерпретации пятой и шестой переменной отличаются только одним разрядом. Каждая ячейка на карте Карно для функции шести переменных имеет шесть соседних ячеек: четыре – на своем слое карты и две на соседних слоях карты, которые (ячейки) совпадают с данной, если разместить соседние слои карты один поверх другого. 19 Карты Карно для функций шести переменных. Пример f ( x , y , z , t , w , v ) x yz t w v x yz t wv x yz t w v x yz t wv xy z t w v x y zt wv x yzt w v x yzt wv xy zt w v xyzt wv xy ztwv xy zt wv xyzt w v xy xy 00 01 11 10 zt zt 00 1 1 01 1 1 11 1 1 11 1 1 1 10 w=0,v=0 xy zt 00 01 11 xy zt 10 00 00 01 01 11 11 10 10 00 01 10 A 00 01 11 1 B w=1,v=1 10 1 w=0,v=1 00 01 11 10 A x yz t B xt v C xy ztv 1 1 w=1,v=0 C 20 Минимизация частично определенных функций Если для решения задачи используются не все наборы входных данных, то допустимо любое значение функции на неиспользуемых интерпретациях и такая функция называется частично-определенной. 21 Минимизация частично определенных функций Функция f(x,y,z,t) равна единице на наборах (0,0,1,0), (0,1,1,0), (1,0,1,0), (1,0,0,0) и не определена, если xy=1. Построить ДНФ. xy zt 00 01 11 10 00 1 01 11 10 1 1 х х х х 1 A zt B xt В f ( x , y, z ,t ) A B zt xt А 22 Алгоритм минимизации булевых функций Квайна-Мак-Класки 1.Записать СДНФ заданной функции. 2.Выполнить все возможные операции неполного дизъюнктивного склеивания. Результирующая формула является дизъюнкцией всех возможных импликант данной функции. 3.Выполнить все возможные операции дизъюнктивного поглощения. Результирующая формула является сокращенной ДНФ данной функции. 4.Составить импликантную таблицу и найти дизъюнктивное ядро. 23 Алгоритм минимизации булевых функций Квайна-Мак-Класки 5.Составить упрощенную импликантную таблицу, полученную из импликантной таблицы посредством удаления строк, соответствующих импликантам дизъюнктивного ядра и столбцов, соответствующих тем конституентам единицы, которые покрываются импликантами ядра. 6. Найти все тупиковые ДНФ данной функции. 7. Найти минимальную ДНФ. 24