Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
01.05.2014
Размер:
2.18 Mб
Скачать

2.4. Построение минимальных покрытий для функций, имеющих экстремали

Для большинства переключательных функций, как уже было отмечено в 2.1, покрытие, определяемое совокупностью минималей, не является покрытием минимального ранга. Ранг такого покрытия может быть уменьшен за счет удаления из него некоторых кодов. Напомним, что покрытием является такая совокупность кодов, которая покрывает все наборы множества Cn(). Назовем покрытие Н неизбыточным, если при удалении из него хотя бы одного кода оставшаяся совокупность кодов не покрывает всех наборов множества Cn(). Неизбыточному покрытию соответствует так называемая тупиковая ДНФ (КНФ).

Пример 2.3. Рассмотрим образование неизбыточных покрытий функции, приведенной в примере 2.1. Согласно примеру 2.2, множество минималей этой функции имеет вид P = {0zz1, 110z, 1z00, z101, z000, 000z}. Выбирая различные способы покрытия наборов, определяющих заданную функцию, нетрудно найти все ее неизбыточные покрытия:

H1 = {0zz1, 110z, z000}, H3 = {0zz1, 110z, 1z00, 000z},

H2 = {0zz1, 1z00, z101, z000}, H4 = {0zz1, 1z00, z101, 000z},

из которых покрытие H1 является минимальным.

Сравнивая неизбыточные покрытия, построенные в примере, нетрудно заметить, что код 0zz1 обязательно входит в каждое такое покрытие. Последнее обстоятельство объясняется тем, что наборы 0011 и 0111 покрываются только этим кодом 0zz1, и поэтому его удаление из любой совокупности кодов Hj привело бы к появлению непокрытых наборов из Cn().

Назовем набор Cn() существенным, если он покрывается только одним кодом “е” из множества минималей Р, а код “е”, покрывающий хотя бы один существенный набор, назовем экстремалью. В приведенном примере код 0zz1 является экстремалью, а наборы 0011 и 0111 являются существенными наборами. Все экстремали входят в любое неизбыточное покрытие заданной функции, поскольку каждая экстремаль покрывает хотя бы один набор Cn(), который не покрывается никаким другим кодом из Р.

Из сказанного вытекают два важных следствия.

Следствие 1. Все экстремали входят в любое минимальное покрытие заданной функции.

Следствие 2. Если минимальное покрытие состоит из экстремалей, то такое покрытие является единственным.

Отсюда следует, что второй этап построения минимальных покрытий имеет смысл начать с выделения обязательной части любого минимального покрытия, т. е. с нахождения множества экстремалей Е.

2.5. Неизбыточные покрытия, алгоритм извлечения экстремалей

Рассмотрим построение минимальных покрытий для таких функций, у которых в множестве Р имеются экстремали. Построение начинается с выделения множества экстремалей Е. Затем совокупность экстремалей следует удалить из множества Р, поскольку она должна входить в любое минимальное покрытие. Исключение экстремалей уменьшает число элементов множества Р и тем самым упрощает задачу построения минимального покрытия.

Каждая экстремаль покрывает некоторую совокупность наборов из Cn(). Если такие наборы являются существенными, то они не покрываются другими кодами из Р и их можно исключить из дальнейшего рассмотрения. Если же наборы, покрываемые экстремалями, не являются существенными, то их также целесообразно не учитывать в процессе дальнейшего построения, поскольку вполне достаточно, чтобы каждый набор из Cn() покрывался хотя бы одним кодом искомого покрытия. Исключение таких наборов еще больше упрощает задачу построения минимального покрытия.

Практически исключение наборов, покрываемых экстремалями, можно выполнить, используя таблицу покрытий. Столбцы такой таблицы отмечаются наборами Cn(), на которых функция принимает значения единицы, а строки - кодами Р, соответствующими минималям. Последовательно просматриваются все столбцы таблицы и на пересечении k-го столбца и l-й строки ставится отметка, если набор , которым отмечен столбец, покрывается минималью , которой отмечена строка. В качестве отметки может быть использована, например, галочка. Таблицу покрытий используют, в первую очередь, для выделения экстремалей. Если в некотором столбце таблицы имеется только одна отметка, то минималь, отмечающая эту строку, является экстремалью.

Например, табл. 2.2, которая построена для множества наборов C1 = = Q = Cn() = {0000, 0001, 1000, 0011, 0101, 0111, 1100, 1101} и множества минималей P1 = {0zz1, 110z, 1z00, z101, z000, 000z}, представляющих функ-

Таблица 2.2

Pi

0000

0001

1000

0011

0101

0111

1100

1101

0zz1

110z

1z00

Z101

Z000

000z

цию из примера 2.2, является таблицей покрытия. Из таблицы видно, что столбцы, отмеченные кодами 0011 и 0111, имеют только по одной отметке. Следовательно, эти коды являются существенными, а минималь 0zz1 является экстремалью. Таким образом, E= {0zz1}.

Учитывая, что экстремали должны входить в любое минимальное покрытие, удалим из табл. 2.2 строку, соответствующую экстремали, и столбцы, соответствующие наборам Q(E1) = {0001, 0011, 0101, 0111}, покрываемым этой экстремалью. В результате получаем табл. 2.3, в которой представлено множество наборов, не покрываемых экстремалями: C2=C1\Q(E1)= = {0000, 1000, 1100, 1101} и множество минималей P2 = P1 \ E1 = {110z, 1z00, z101, z000, 000z}

Таблица 2.3

Pi

0000

1000

1100

1101

110z

1z00

z101

z000

000z

Для того чтобы формально описать рассмотренную ситуацию, обозначим множество наборов, покрываемых кодом h в множестве С2, как V(h,C2) и введем отношение порядка между кодами множества Р2. Если коды h1, h2 Р2 и выполняются два следующих условия:

  1. ранг кода h1 не меньше, чем ранг кода h2: r (h1) r (h2);

  2. все наборы, покрываемые кодом h1 в Р2, покрываются кодом h2:

V(h1,C2) V(h2,C2), то между этими кодами существует отношение порядка, которое записывается так: h1 h2. Если же r(h1) = r(h2) и V(h1,C2) = V(h2,C2), то отношение порядка между кодами устанавливается произвольно. Например, меньшим кодом считают тот код, который раньше встречается в множестве P2. Условимся называть меньшие коды в множестве P2 ущербными кодами. Множество ущербных кодов Р2 можно исключить из P2 и решать задачу построения минимального покрытия для множества меньшей мощности P2 = P2\ P2.

Возвращаясь к нашему примеру и анализируя табл. 2.3 , находим, что минимали 000z и z101 покрывают в множестве С2 по одному набору, соответственно 0000 и 1101, причем эти наборы покрываются также кодами z000 и 110z. Учитывая, что ранги всех рассматриваемых минималей одинаковы, приходим к заключению, что минимали 000z и z101 являются ущербными кодами. В результате удаления множества ущербных кодов Р2 = {000z, z101} из множества Р2 получаем: P2 = P2 \ P2.

Таблица 2.4

Pi

0000

1000

1100

1101

110z

1z00

z000

После удаления ущербных кодов из табл. 2.3 получаем табл. 2.4. В полученной таблице появились коды 0000 и 1101, покрываемые только одной минималью из Р2. Назовем эти наборы существенными наборами второго порядка, а коды, покрывающие их, - экстремалями второго порядка. Для выделения таких экстремалей естественно использовать прием, рассмотренный ранее. В результате получаем множество экстремалей второго порядка: Е2 = {110z, z000}.

Это множество экстремалей покрывает все наборы множества С2, поэтому покрытие, включающее множество экстремалей первого и второго порядков, является искомым покрытием минимального ранга: Нmin = {0zz1, 110z, z000} с ценой по Квайну R=(2+3+3)+3=11.

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

Дано множество минималей Р и исходное покрытие Q=Cn().

1. Положить Р1 = Р, С1 = Cn(), Hmin=0 и i=1.

2. Пользуясь алгоритмом выделения экстремалей, построить множество Ei.

3. Если Ei = , то алгоритм заканчивает свою работу, в противном случае выполнять следующий пункт.

4. Hmin= HminEi

5. i:= i + 1.

6. Построить множество Сi путем извлечения из Сi-1 всех наборов, покрываемых экстремалями из Ei-1: Ci=Ci-1\Q(Ei-1)

7. Если Сi = , то алгоритм заканчивает свою работу, в противном случае выполнять следующий пункт.

8.Построить множество Pi = Pi-1 \ Ei-1.

9. Упорядочить коды в множестве Pi и определить множество ущербных кодов Pi.

10. Построить множество Pi = Pi \ Pi. Перейти к п. 2.

Приведенный алгоритм может закончить свою работу при выполнении п.3 или п. 7. В первом случае окончание алгоритма означает, что экстремали порядка i и более высоких порядков у заданной функции отсутствуют. Способ построения минимальных покрытий для функций, не имеющих экстремалей, будет рассмотрен в параграфе 2.6. Во втором случае окончание алгоритма показывает, что найдено минимальное покрытие, которое представляет собой совокупность экстремалей различных порядков:Hmin = Ej.

Соседние файлы в папке Конспект по ДМ