Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_ДМ_2часть.doc
Скачиваний:
86
Добавлен:
17.12.2018
Размер:
1.72 Mб
Скачать
    1. Аналитическое построение сокращенной днф

Сокращенная ДНФ обладает тем свойством, что записывается единственным образом для каждой булевой функции. Кроме того, любая ТДНФ, а следовательно и любая МДНФ, получается из сокращенной ДНФ (СокрДНФ) путем удаления из нее некоторых элементарных конъюнкций.

Для построения СокрДНФ обычно используется задание функции в виде СДНФ или произвольной ДНФ. Наиболее универсальным методом перехода к СокрДНФ является выполнение над исходной ДНФ преобразований вида:

а) AAB = A – поглощение, где A и B – элементарные конъюнкции;

б) x AB = x ABAB – склеивание;

или x AA = A – полное склеивание;

или x AA = x AAA – неполное склеивание.

При этом вначале следует выполнить всевозможные попарные склеивания входящих в ДНФ элементарных конъюнкций, а затем поглощения. Далее, если это возможно, преобразования применяют повторно. При этом сложность полученной СокрДНФ может оказаться больше сложности исходной ДНФ.

Пример:

Пусть функция трех переменных f(x, y, z) задана в виде СДНФ:

f(x, y, z) =

Выполним всевозможные попарные склеивания, т.е. будем склеивать первую конъюнкцию со второй, третьей, четвертой, затем вторую с третьей и четвертой, и наконец, третью с четвертой.

Тогда f(x, y, z) =

 x y = 

Теперь выполняя всевозможные поглощения, получим:

f(x, y, z) = .

Последняя формула является СокрДНФ.

Теперь рассмотрим функцию трех переменных f(x, y, z), заданную формулой вида ДНФ: f(x, y, z) =

При склеивании первой и второй конъюнкции получим 0, склеивание всех остальных пар добавит к исходной ДНФ дополнительные конъюнкции и тогда: f(x, y, z) = .

Выполняя поглощение, получим: f(x, y, z) =

Теперь, применяя ещё раз склеивание и поглощение, переходим к следующей формуле:

f(x, y, z) = x . И, поскольку преобразования больше невозможны, последняя формула является СокрДНФ.

    1. Локальные алгоритмы

Алгоритмы, устанавливающие свойства элементов множества и использующие на каждом шаге при этом только информацию об окрестности элемента, называются локальными.

Применение локальных алгоритмов к задаче минимизации булевых функций основано на понятии окрестности k–го порядка максимального интервала или соответствующей ему простой импликанты.

Под окрестностью нулевого порядка для некоторого максимального интервала NКi (или для элементарной конъюнкции Кi) функции f(x1x2, … , 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(x1x2, … , xn), которые имеют общий множитель с конъюнкцией Кi, или являются близкими к ней.

Окрестность 2-го порядка для NКi – это множество интервалов, пересекающихся с окрестностью 1-го порядка хотя бы в одной вершине. А в терминах конъюнкций – это множество близких к Кi конъюнкций, а также конъюнкций, близких к последним. Аналогично можно определить окрестность порядка k для интервала NКi – это множество всех максимальных интервалов функции f, имеющих непустое пересечение с окрестностью порядка (k1) для 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). И далее все окрестности более высоких порядков совпадают с уже найденными.