
-
Локальные алгоритмы
Алгоритмы, устанавливающие свойства элементов множества и использующие на каждом шаге при этом только информацию об окрестности элемента, называются локальными.
Применение локальных алгоритмов к задаче минимизации булевых функций основано на понятии окрестности k–го порядка максимального интервала или соответствующей ему простой импликанты.
Под окрестностью нулевого порядка для некоторого максимального интервала NКi (или для элементарной конъюнкции Кi) функции f(x1, x2, … , xn) понимают сам этот интервал (или саму эту конъюнкцию). Записывают этот факт так S0(NКi)={NКi}.
Окрестность 1-го порядка интервала NКi представляет множество всех максимальных интервалов, имеющих непустое пересечение с S0(NКi), т.е. S1(NКi)={S0(NКi),NКj,…,NКm}, где NКj∩ S0(NКi),…,NКm∩ S0(NКi). В терминах конъюнкций окрестность 1–го порядка простой импликанты Кi представляет собой множество тех простых импликант функции f(x1, x2, … , xn), которые имеют общий множитель с конъюнкцией Кi, или являются близкими к ней.
Окрестность 2-го порядка для NКi – это множество интервалов, пересекающихся с окрестностью 1-го порядка хотя бы в одной вершине. А в терминах конъюнкций – это множество близких к Кi конъюнкций, а также конъюнкций, близких к последним. Аналогично можно определить окрестность порядка k для интервала NКi – это множество всех максимальных интервалов функции f, имеющих непустое пересечение с окрестностью порядка (k–1) для NКi.
В локальных алгоритмах могут рассматриваться окрестности 1–го (алгоритм Куайна), 2–го (алгоритм регулярных точек) и k –го порядков (кольцевой алгоритм). Накопление информации об окрестностях простых импликант позволяет в дальнейшем проанализировать возможность удаления импликанты из СокрДНФ для получения минимальной ДНФ.
Рассмотрим построение окрестностей максимальных интервалов и простых импликант на примере.
Пусть функция трех
переменных задана сокращенной ДНФ:
.
Это задание равносильно заданию функции
сокращенным покрытием Nf:
{(1,1,0),(1,1,1)}{(1,0,0),(1,1,0)}{(0,0,0),(1,0,0)}.
Введем обозначения: К1=ху,
К2=
,
К3=
и NК1=
{(1,1,0),(1,1,1)}, NК2={(1,0,0),(1,1,0)},
NК3={(0,0,0),(1,0,0)}.
Тогда окрестности нулевого порядка для
каждой простой импликанты и каждого
максимального интервала совпадают с
ними самими. Окрестность 1–го порядка
импликанты К1
есть множество {К1,
К2},
а максимального интервала NК1
– соответственно S1(NК1)=
{NК1,
NК2}.
S1(К2)= {К2, К1, К3}, S1(NК2)= {NК2, NК1, NК3};
S1(К3)= {К3, К2}, S1(NК2)= {NК3, NК2};
S2(К1)= {К1, К2, К3}, S2(NК1)= {NК1, NК2, NК3};
S2(К2)= {К2, К1, К3}= S1(К2), S2(NК2)= {NК2, NК1, NК3}= S1(NК2);
S2(К3)= {К3, К2, К1}, S2(NК3)= {NК3, NК2, NК1};
S3(К1)= {К1, К2, К3}= S2(К1), S3(NК1)= {NК1, NК2, NК3}= S2(NК1);
S3(К3)= {К3, К2, К1}= S2(К3), S3(NК3)= {NК3, NК2, NК1}= S2(NК3). И далее все окрестности более высоких порядков совпадают с уже най
-
Алгоритм Куайна
Входными данными для работы алгоритма является задание сокращенного покрытия функции или СокрДНФ. Алгоритм выполняется в два этапа.
1) На каждом шаге 1-го этапа для очередного максимального интервала (простой импликанты) строится окрестность 1-го порядка: S1(NКi)={NКi, NКi1, NКi2,…,NКim}, где NКi1, NКi2,…,NКim – это максимальные интервалы функции f, имеющие непустое пересечение с интервалом NКi.
Затем проверяется включение NКi NКi1 NКi2 … NКim.
Если это включение не имеет места, то конъюнкция Ki отмечается некоторым способом, как входящая во все МДНФ или как ядровая конъюнкция, а интервал NКi – как ядровой интервал. Объединение всех ядровых интервалов называется ядром сокращенного покрытия.
2) Пусть на первом этапе множество максимальных интервалов функции f разбилось на два подмножества: Я={Я1,Я2,…,Яр} – все ядровые интервалы и В={В1,В2,…,Вq} – все остальные интервалы (или что то же самое – конъюнкции).
Для каждого интервала из множества В проверяется включение в ядро, т.е. ВiЯ1 Я2 … Яр. Об интервалах, для которых это включение выполняется, говорят, что они покрываются ядром. Соответствующие им простые импликанты не входят ни в одну МДНФ, они удаляются из СокрДНФ.
ДНФ, полученная в результате работы этого алгоритма, носит название ДНФ Куайна. Важным свойством этой ДНФ является её единственность для каждой функции алгебры логики, которая вытекает из её построения.
Пример.
Пусть функция
задана в виде СокрДНФ:
= К1 К2 К3
Или, что то же самое, в виде сокращенного покрытия:
Nf = {(0,0,0),(0,0,1)} {(0,0,0),(1,0,0)} {(1,0,0),(1,1,0)}= N1 N2 N3, где N1, N2, N3 – максимальные интервалы для f.
На первом этапе строим окрестности 1-го порядка для каждого максимального интервала
S1(N1)={N1, N2} и т.к. N1N2 N1 – ядровой интервал;
S1(N2)={N2, N1, N3} и т.к. N2 N1 N3 N2 – не ядровой интервал;
S1(N3)={N3, N2} и т.к. N3N2 N3 – ядровой интервал;
На втором этапе
имеем множество ядровых интервалов:
Я={N1,
N3}
и один не ядровой интервал N2,
и, т.к. N2
N1
N3,
– покрывается ядром, то конъюнкцию,
соответствующую интервалу N2,
можно удалить. В результате ДНФ Куайна
имеет вид: f(x,
y,
z)
=.
В данном случае ДНФ Куайна совпадает с МДНФ функции f.
Построение ДНФ Куайна может быть оформлено в виде таблицы Куайна. В этой таблице по горизонтали выписывают все элементарные конъюнкции СДНФ, а по вертикали – простые импликанты сокращенной ДНФ. На пересечении столбцов и строк проставляют единицы в тех местах, где импликанта «накрывает» элементарную конъюнкцию (т.е. все символы импликанты имеются в элементарной конъюнкции). Если в некотором столбце имеется только одна единица, то соответствующая импликанта является ядровой. Определив таким способом все ядровые конъюнкции, далее нетрудно выявить те импликанты, которые покрываются ядром, – все единицы таких импликант имеются среди единиц ядра. Удалив эти импликанты, получим ДНФ Куайна.
По такой таблице можно также построить и МДНФ. Заметим, что в каждом столбце может быть проставлено несколько единиц, в то время как достаточно иметь только одну. Поэтому избыточные единицы можно исключить. Выбор единиц выполняется из соображений минимальности общего числа букв и с тем, чтобы выбранное подмножество импликант (единиц) «накрывало» все элементарные конъюнкции исходной СДНФ (т.е. чтобы в каждом столбце была бы выбрана по крайней мере одна единица). При этом решений может быть несколько.
Пример:
Пусть функция
задана в виде СДНФ:
.
Построим её СокрДНФ:
Таблица 3
|
|
|
|
|
xyz |
|
1 |
|
1 |
|
|
yz |
|
1 |
|
|
1 |
|
|
|
1 |
1 |
|
xy |
|
|
|
1 |
1 |



