
- •Лекция: Предварительные сведения
- •Множества
- •Операции над множествами
- •Как доказывать равенство множеств?
- •Отношения и функции. Мощность множества
- •2. Лекция: Индукция и комбинаторика Содержание
- •Метод математической индукции
- •Элементы комбинаторики
- •Размещения, перестановки, сочетания
- •Принцип включения и исключения
- •Лекция: Булевы функции и их представления Содержание
- •Булевы функции от n переменных
- •Геометрическое представление
- •Табличное представление
- •Булевы функции от 1-ой и 2-х переменных
- •Формулы
- •Булевы функции и логика высказываний
- •Эквивалентные преобразования формул Соглашения об упрощенной записи формул.
- •Дизъюнктивные и конъюнктивные нормальные формы Определение днф и кнф
- •Совершенные днф и кнф
- •Сокращенные днф
- •Многочлены Жегалкина
- •Лекция: Полные системы функций и теорема Поста Содержание
- •Замкнутые классы функций
- •Критерий полноты (теорема Поста)
- •6. Лекция: Хорновские формулы и задача получения продукции Содержание
- •Хорновские формулы
- •Задача получения продукции
- •Решение задачи о продукции
- •Алгоритм замыкание(X,f)
- •Алгоритм ПрямаяВолна(X,y,f)
- •Алгоритм БыстроеЗамыкание(X,f)
- •Лекция: Язык логики предикатов
- •Утверждения о свойствах объектов и отношениях между ними
- •Язык логики предикатов
- •Синтаксис: формулы логики предикатов
- •Семантика: системы и значения формул на их состояниях
- •Эквивалентные формулы и нормальные формы
Совершенные днф и кнф
Рассмотрим
произвольную булеву функцию f(X1,…,Xn)
,
зависящую от переменных из
.
Oбозначим через Nf+
множество
наборов значений переменных, на которых
f
принимает значение 1, а через Nf-
множество
наборов, на которых f
принимает значение 0, т.е.
и
Определим по этим множествам две формулы:
и
Теорема 4.1.
Если функция f не равна тождественно 0, то формула
- это совершенная ДНФ, задающая функцию f.
Если функция f не равна тождественно 1, то формула
- это совершенная КНФ, задающая функцию f.
Доказательство получается непосредственным вычислением значения каждой из указанных формул с учетом того, что для любого σ {0, 1} имеют место равенства: 1σ = σ и 0σ = ¬σ (см. задачу 4.4).
Следствие 4.1.1. Каждая булева функция может быть задана формулой, содержащей переменные и функции конъюнкции, дизъюнкции и отрицания.
Приведенные выше формулы для и позволяют эффективно строить совершенные ДНФ и КН по табличному представлению функции f (Каким образом?). Можно ли получить такие специальные представления по произвольной формуле, задающей f, не выписывая ее полной таблицы? Приводимая ниже процедура позволяет это сделать, используя основные эквивалентности формул.
Процедура Приведение к совершенной ДНФ
Вход: формула Φ, включающая функции ¬, , , и +.
Используя эквивалентность (7), заменить все вхождения функции в Φ на ¬, и , затем использовать эквивалентность (8) для замены всех вхождений функции + на ¬, и .
Используя законы де Моргана (5) и снятия двойного отрицания(4), внести все знаки отрицания внутрь скобок так, чтобы все оставшиеся отрицания находились непосредственно перед переменными.
Получившаяся после шага (2) формула
имеет одну из двух форм:
или
.
Поскольку
каждая из формул Φ1
,
Φ2
имеет
меньшую глубину, чем формула Φ',
то предположим по индукции, что для них
уже построены эквивалентные ДНФ
и
,
соответственно.
Тогда в случае (а) имеем:
Каждый
член
этой
дизъюнкции представляет собой конъюнкцию
переменных и их отрицаний. Применяя
эквивалентности групп (1), (2) и (6), можно
удалить из нее повторения переменных,
после чего она превратится в некоторую
элементарную
конъюнкцию
или константу. Проделав такие преобразования
со всеми парами (i,j),
1
i
r,
1
j
s,
и удалив, если потребуется, константы
0, мы получим ДНФ,
эквивалентную исходной формуле Φ.
В
случае (б) формула
сама
уже является ДНФ.
Используя эквивалентности групп (1), (2) и (6), удалить из получившейся после шага (3) формулы повторные вхождения одинаковых конъюнкций.
Пусть после шага (4) получилась ДНФ
. Чтобы получить эквивалентную совершенную ДНФ, построим для каждой Ki (i=1,…, m) , эквивалентную совершенную ДНФ (см. задачу 4.5),заменим ею Ki , а затем устраним повторения одинаковых конъюнкций.
Из формулировок эквивалентностей (7) и (8) непосредственно вытекает
Предложение 4.1. На этапе (1) процедуры при последовательном выполнении преобразований (7), а затем - (8), до тех пор, пока ни одно из них не применимо, полученная в результате формула не будет содержать функций и +.
Доказательство этого предложения оставляем в виде упражнения (см. задачу 4.7).
Следующее утверждение гарантирует корректность этапа (2).
Предложение 4.2. На этапе (2) процедуры при любом порядке выполнения преобразований групп (4) и (5) до тех пор, пока ни одно из них не применимо, в полученной в результате формуле все знаки отрицания будут стоять непосредственно перед переменными.
Перед доказательством этого утверждения введем некоторые обозначения. Напомним, что в определениях 3.2 и 3.3 для каждой формулы Φ была определена ее глубина dep(Φ). Например, формула Φ=¬(X+Y) (¬(X ¬ Z) Y), построенная над системой F={ , , ¬, , +}, имеет глубину dep(Φ)=5.
Пусть Φ - это формула над F={ , , ¬}. Определим для каждой ее "отрицательной" подформулы вида ¬(Ψ) высоту h(¬(Ψ)) как 3dep(Ψ)-1 . И пусть высота всей формулы H(Φ) равна сумме высот всех ее отрицательных подформул. Например, для приведенной выше формулы Φ ее высота равна H(Φ)= h(¬(X+Y)) +h(¬(X ¬ Z))+ h(¬ Z) = (31-1) + (32-1) +(30-1) = 10.
Доказательство предложения 4.2 проведем индукцией по высоте формул.
Базис индукции. Если H(Φ)=0, то либо в Φ нет отрицаний, либо все отрицания находятся непосредственно перед переменными. Следовательно, Φ удовлетворяет требованию предложения 4.2.
Шаг индукции. Предположим, что при n k для всех формул высоты n Предложение 4.2 выполнено. Пусть Φ - произвольная формула высоты H(Φ)= k+1. Докажем наше утверждение для нее. Поскольку H(Φ) 1, то Φ содержит хотя бы одну отрицательную подформулу ¬(Ψ), у которой h(¬(Ψ)) 1 и, следовательно, dep(Ψ) 1. К такой формуле обязательно можно применить либо снятие двойного отрицания (4), либо один из законов де Моргана (5). (Объясните почему.) Пусть ¬(Ψ) - это та подформула Φ, которая на (2)-ом этапе процедуры первой заменяется на эквивалентную формулу Ψ' в соответствии с одной из указанных эквивалентностей. Пусть Φ' - это формула, получившаяся в результате этой замены из Φ. Нетрудно проверить (проделайте эту проверку!), что при любом из преобразований (4), (5) H(Ψ') < H(¬(Ψ)) и, следовательно, H(Φ') < H(Φ). Тогда H(Φ') k и по предположению индукции применение эквивалентностей (4), (5) в произвольном порядке приведет в конце концов к формуле, у которой все отрицания будут стоять непосредственно перед переменными. Тем самым, предложение 4.2 выполнено при n=k+1, что завершает индукционный шаг и все доказательство.
Рассмотрим применение процедуры приведения к совершенной ДНФ на примере.
Пример
4.1.
Пусть формула
.
На (1)-ом этапе процедуры получаем следующую цепочку эквивалентностей:
На (2)-ом этапе вносим отрицание внутрь первой скобки и получаем формулу
Устранив двойное отрицание, получим
Нетрудно видеть, что это уже ДНФ. Удалим на (4)-ом этапе повторное вхождение первой конънкции и получим ДНФ
Эта ДНФ не является совершенной, так как в каждую из ее трех конъюнкций входят не все переменные. Построим на этапе (5) для них эквивалентные совершенные ДНФ (используя решение задачи 4.5).
Подставив эти формулы в Φ1 и устранив повторения конъюнкций, получим совершенную ДНФ, эквивалентную исходной формуле Φ:
Мы видим, что ДНФ Φ1 , полученная после 4-го этапа, выглядит существенно проще, т.е. является более короткой, чем совершенная ДНФ Φ2 . Однако совершенные ДНФ и КНФ обладают важным свойством единственности, которое следует из их конструкции в теореме 4.1.
Следствие 4.1.2. Для каждой булевой функции от n переменных, не равной тождественно 0, существует единственная с точностью до перестановки конъюнкций и переменных внутри конъюнкций совершенная ДНФ, задающая эту функцию.
Это следствие позволяет предложить следующую процедуру для проверки эквивалентности формул Φ и Ψ.
Построить для Φ и Ψ эквивалентные совершенные ДНФ Φ' и Ψ' используя процедуру приведения к совершенной ДНФ.
Упорядочить в соответствии с нумерацией переменных X вхождения переменных в каждую конъюнкцию, а затем лексикографически упорядочить между собой конъюнкции, входящие в Φ' и Ψ'. Пусть в результате получатся совершенные ДНФ Φ'' и Ψ''
Если Φ'' = Ψ'', то выдать ответ "Да", иначе - ответ "Нет".
Замечание. Аналогичную процедуру можно построить с использованием совершенных КНФ.