Метод минимизирующих карт
Для функций с небольшим числом переменных можно использовать метод минимизирующих карт. Рассмотрим метод на примере ДНФ. Допустим, необходимо построить МДНФ n-местной булевой функции f (х n).
1. Вначале строится полная карта всех возможных конъюнкций из переменных `х n и их отрицаний. В первых n столбцах строят все возможные одиночные сочетания из (х1,...,хn) и их отрицаний. В следующих n(n – 1)/2 строят все различные (с точностью до перестановок) попарные произведения переменных, стоящих в первых n столбцах. Далее строят все различные произведения по 3, 4, ... , n множителей. Ниже показана карта для 3 – местных функций.
Ø х | Ø у | Ø z | Ø x Ø y | Ø x Ø z | Ø уØ z | Ø xØ уØ z | |
Ø х | Ø у | z | Ø x Ø y | Ø x z | Ø у z | Ø xØ у z | |
Ø х | у | Ø z | Ø x y | Ø x Ø z | у Ø z | Ø x уØ z | |
Ø х | у | z | Ø x y | Ø x z | y z | Ø x у z | |
х | Ø у | Ø z | x Ø y | x Ø z | Ø у Ø z | xØ уØ z | |
х | Ø у | z | x Ø y | x z | Ø у z | xØ у z | |
х | у | Ø z | x y | xØ z | у Ø z | x уØ z | |
х | у | z | x y | x z | y z | x y z |
В самом крайнем правом столбце стоят конъюнкции вида К = х1a1& ... & хnan , где хi a i = хi либо хi a i = `хi . Полная карта имеет одинаковый вид для всех n - местных булевых функций.
2. Рассматриваем конкретную минимизируемую n - местную булеву функцию f(хn)и строим для нее множество элементарных наборов {N}, входящих во внутренние конъюнкции СДНФ. Например, у функции f = (01100111)из Примера 3 множество {N} будет следующим: N 1= (x,`y, z); N 2= (x, y,`z); N 3= (x,`y, z); N 4= (x, y,`z) ; N 5= (x, y, z).
В полной карте вычеркиваем те строки, у которых в последнем столбце стоят наборы переменных, не входящие в СДНФ функции. В рассматриваемом примере – это строки 0, 3, 4. Их номера можно было бы определить по вектору истинности f , поскольку на этих местах стоят нули.
3. Все конъюнкции, попавшие в вычеркнутые строки, вычеркиваем и из оставшихся строк. В примере таблица примет следующий вид:
Øу z | ØxØу z | ||||||
уØ z | Øx уØz | ||||||
x z | Øу z | xØ у z | |||||
x y | у Ø z | x уØ z | |||||
x y | x z | x y z |
В каждой строке оставляем только те конъюнкции, которые имеют минимальное число сомножителей. Более длинные вычеркиваем. В примере необходимо вычеркнуть все конъюнкции в столбце 7.
4. Множество тупиковых ДНФ {T} строим следующим образом: рассматриваем все возможные логические суммы, состоящие из конъюнкций, взятых по одной из каждой строки, устраняя возможное дублирование. В примере {T} имеет вид:
Т1= `y z Ú y`z Ú x z , Т2= `y z Ú y`z Ú x y .
5. Из множества тупиковых ДНФ {T} выбираем формы с минимальным количеством переменных, которые и будут искомыми минимальными формами.
Обе тупиковые формы являются также и минимальными.
ЗАДАЧИ
1. Доказать справедливость следующих правил преобразования нормальных форм:
а) полного склеивания,
б) неполного склеивания,
в) поглощения,
г) удаления дубликатов.
2. Доказать, что к простым элементарным наборам не применимы правила склеивания.
3. Построить СкДНФ, СкВНФ (в базисах {Ø, ¯} и {¯}) для функций:
а) Ø (x y) | (z Ú u) ; б) (x y ® z u) ® z ; в) (x ® u) (z Ú y) ;г) (01101110) ;д) (0110001010001001); е) (0011100101011010); ж) (1001011011000101).
4. Построить МДНФ, МВНФ (в базисах {Ø, ¯} и {¯}) следующих функций:
а) (x ® y) ® y z ; б) (x ® y z) ® u ; в) (x y | u) (x y ® z u);г) (01010011) ;д) (1000001010011000) ; е) (0101100101101000);ж) (1100010001100011).
5. Построить СкКНФ, СкШНФ (в базисах {Ø , |} и { | }) для функций:
а) (x y)|(z Ú u) ; б) (x ® y z) ® u ; в) (x y| u) Å (x y ® z u);г) (11010110) ; д) (1110101011101001); е) (0111101101011110) ;ж) (1101011011010101).
6. Построить МКНФ, МШНФ ( в базисах {Ø , | } и { | }) для функций:
а) (x ® y) ® y z; б) (x ® yz); в) (1110011011001011); г) (x ® u) Ú z y ;д) x y ® z u ;е) (01110110); ж) (0111100101111010);з) (1011101011011001).
7. Построить по методу минимизирующих карт МДНФ следующих функций: а)(xy ® zu) ® z;б) (x® u) (zÚ y);в) (01101011);г) (0010111010001010).
8. Рассмотреть метод минимизирующих карт для МКНФ и построить минимальные формы для функций: а) x y® z u ; б) (01100101); в) (0110110011011010).
1.7.Частично определенные функции.Их минимальное доопределение
При конструировании логических устройств зачастую встречаются ситуации, когда у реализуемой ими булевой функции f(хn) на некоторой части наборов переменных`хn значения функции не заданы. Обычно так бывает в тех случаях, когда состояния системы, описываемые данными наборами переменных, физически не достижимы либо срабатывание управляющей системы не влияет на производственный процесс. Допустим, необходимо реализовать функцию трех переменных f =(010??001), у которой в векторе истинности на местах с номерами 3 и 4(соответствующих наборам переменных (011) и (100)) значения не заданы и могут быть выбраны любыми (0 или 1).
Определение. Если значения функции f(хn) не определены на некотором числе p наборов ее переменных`хn, то ее называют частично определенной, сокращенно – ЧОФ.
Очевидно, доопределить (то есть присвоить недостающие значения истинности функции ¦ на p неопределенных наборах) можно 2P способами. В рассмотренном выше примере р =2; 2P =4. Наборам с номерами 3 и 4 могут быть присвоены значения (00), (01), (10), (11).
Определение. Функция g называется доопределением частично определенной функции ¦, если она совпадает с ней на тех наборах, где ¦ определена.
Например, функция g = (01000001) является одним из 4 возможных доопределений частично определенной функции ¦ =(010??001).
Построение доопределений возможно различными способами. Однако для практики представляют наибольший интерес те из них, у которых реализующие их физические устройства будут иметь наиболее простую структуру. Нормальные формы таких доопределений содержат минимальное число символов переменных.
Определение. Пусть f(хn)– частично определенная функция. Ее единичным f1(хn)(нулевым f0(хn)) доопределением называют такое доопределение, где на месте неизвестных значений ¦ стоят только единицы (нули).
Допустим, для ЧОФ необходимо построить нормальную форму заданного типа.
Определение. Минимальным доопределением частично определенной функции f называют ее доопределение g, имеющее минимальное число символов переменных, входящих в соответствующую нормальную форму.
Для ДНФ справедлива следующая теорема.
Теорема 2.1.1 о минимальном допределении частично определенной функции.
Минимальная ДНФ ЧОФ f(хn) есть самая короткая дизъюнкция простых наборов единичного доопределения f1(хn), которые в совокупности покрываются всеми единицами нулевого доопределения f0(хn).
Смысл утверждения теоремы заключается в следующем:
1)наиболее короткие простые наборы {P}1 имеет функция f1(хn)(так как у неё в векторе истинности максимально возможное число единиц),
2) минимально возможное число единиц в векторе значений (которые характеризуются элементарными наборами {N}0) имеет функция f0(хn), поэтому
3) минимальную ДНФ следует выбирать из всех тупиковых ДНФ, у которых простые наборы {P}1 покрываются элементарными наборами {N}0 .
Из теоремы вытекает следующий алгоритм построения минимального дополнения частично определенной функции f(х n):
1. Определяем СДНФ, СкДНФ и простые наборы {P}1= {P1, ... , Pm }1 единичного доопределения функции f1(хn).
2. Строим элементарные наборы {N}0 = {N1, ..., Nk}0 нулевого доопределения функции f0(х n) .
3. Формируем матрицу покрытий А простых наборов {P}1 элементарными наборами {N}0 .
4. Строим по единичным элементам столбцов j = 1, …, k матрицы А дизьюнкции Dj и решеточное выражение В = D1 &…& Dk.
5. Раскрывая в В все скобки и производя сокращения, находим для заданной ЧОФ все ТДНФ аналогично обычным функциям.
6. Из множества всех ТДНФ выбираем МДНФ, которая будет равна искомому минимальному доопределению g. Неизвестные значения истинности исходной ЧОФ определяем непосредственной подстановкой соответствующих наборов переменных в полученную МДНФ либо по ее полной таблице истинности.
Пример. Найти минимальное доопределение частично определенной функции ¦=(1?10?1??) .
Решение.Переменные функции обозначим через x, y, z. Применим метод покрытий.
1. Вначале строим СДНФ единичного доопределения ¦1=(11101111):
f1= `x`y` z Ú `x`y z Ú `x y` z Ú x`y` z Ú x` y z Ú x y`z Ú x y z.
Применяя правила алгоритма Куайна, получаем СкДНФ:
f1= x`y Ú`x` z Ú `y` z Ú` y z Ú y`z Ú x`y Ú x` z Ú x z Ú x y = xÚ`y Ú`z .
Простые наборы единичного доопределения ¦1 следующие: P1= (х), P2=(y), P3= (z), m = 3.
2. Элементарные наборы функции нулевого доопределения f0= (10100100):
N1 = (x,`y,`z), N2 = (x, y,`z), N3 = (x,`y, z), k=3.
3. Матрица покрытий простых наборов Р1, Р2, Р3 функции ¦1элементарными наборами N1, N2, N3 функции ¦0 имеет вид:
N1 | N2 | N3 | |
Р1 | |||
Р2 | |||
Р3 |
4. Решеточное выражение, задающее все варианты вхождения простых наборов в элементарные: В = (2Ú 3)& 3 & (1Ú 2).
5. Раскрываем скобки: В=(23Ú33)&(1Ú 2)=3&(1Ú 2)=13Ú 23.
6. В итоге получим две тупиковых ДНФ. В первую входят простые наборы P1 и P3, во вторую – P2и P3:
¦ 1 = х Ú`z , ¦2 = `y Ú`z.
Поскольку первая функция имеет только одно отрицание, примем её в качестве искомого доопределения g. Столбец истинности ее имеет вид: g = (10101111). Таким образом, в минимальном доопределении на наборах с номерами 1, 4, 6, 7 должны стоять, соответственно, значения 0, 1, 1, 1.
Алгоритмы, аналогичные рассмотренному для ДНФ, могут быть применены и для других форм.
Дата добавления: 2020-10-14; просмотров: 427;