Это в лекции 3. |
Эквивалентность формул и нормальные формы
Дизъюнктивные и конъюнктивные нормальные формы
Определение ДНФ и КНФ
В этом разделе мы интересуемся представлением произвольной булевой функции посредством формул специального вида, использующих только операции и
Пусть - это множество пропозициональных переменных. Введем для каждого i=1,...,n обозначения: и . Формула , в которой и все переменные разные, т.е. при , называется элементарной конъюнкцией ( элементарной дизъюнкцией ).
Определение 4.2. Формула называется дизъюнктивной нормальной формой (ДНФ), если она является дизъюнкцией элементарных конъюнкций, т.е. имеет вид , где каждая формула - это элементарная конъюнкция . называется совершенной ДНФ, если в каждую из ее конъюнкций входят все переменных из . Аналогично, формула называется конъюнктивной нормальной формой (КНФ), если она является конъюнкцией элементарных дизъюнкций, т.е. , где каждая формула Dj (j=1,...,r) - это элементарная дизъюнкция . Она является совершенной КНФ, если в каждую Dj входят все n переменных из .
Совершенные ДНФ и КНФ
Рассмотрим произвольную булеву функцию f(X1,...,Xn) , зависящую от переменных из . Oбозначим через Nf+ множество наборов значений переменных, на которых f принимает значение 1, а через Nf- множество наборов, на которых f принимает значение 0, т.е. и .
Определим по этим множествам две формулы:
и
Теорема 4.1.
- Если функция f не равна тождественно 0, то формула - это совершенная ДНФ, задающая функцию f.
- Если функция f не равна тождественно 1, то формула - это совершенная КНФ, задающая функцию f.
Доказательство получается непосредственным вычислением значения каждой из указанных формул с учетом того, что для любого имеют место равенства: и (см. задачу 4.4).
Следствие 4.1.1. Каждая булева функция может быть задана формулой, содержащей переменные и функции конъюнкции, дизъюнкции и отрицания.
Приведенные выше формулы для и позволяют эффективно строить совершенные ДНФ и КН по табличному представлению функции f (Каким образом?). Можно ли получить такие специальные представления по произвольной формуле, задающей f, не выписывая ее полной таблицы? Приводимая ниже процедура позволяет это сделать, используя основные эквивалентности формул.
Процедура Приведение к совершенной ДНФ
Вход: формула включающая функции и +.
- Используя эквивалентность (7), заменить все вхождения функции в на и затем использовать эквивалентность (8) для замены всех вхождений функции + на и
- Используя законы де Моргана (5) и снятия двойного отрицания (4), внести все знаки отрицания внутрь скобок так, чтобы все оставшиеся отрицания находились непосредственно перед переменными.
- Получившаяся после шага (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 для каждой формулы была определена ее глубина . Например, формула , построенная над системой , имеет глубину .
Пусть - это формула над . Определим для каждой ее "отрицательной" подформулы вида высоту как . И пусть высота всей формулы равна сумме высот всех ее отрицательных подформул. Например, для приведенной выше формулы ее высота равна .
Доказательство предложения 4.2 проведем индукцией по высоте формул.
Базис индукции. Если , то либо в нет отрицаний, либо все отрицания находятся непосредственно перед переменными. Следовательно, удовлетворяет требованию предложения 4.2.
Шаг индукции. Предположим, что при n <= k для всех формул высоты n Предложение 4.2 выполнено. Пусть - произвольная формула высоты . Докажем наше утверждение для нее. Поскольку , то содержит хотя бы одну отрицательную подформулу , у которой и, следовательно, . К такой формуле обязательно можно применить либо снятие двойного отрицания (4), либо один из законов де Моргана (5). ( Объясните почему.) Пусть - это та подформула которая на (2)-ом этапе процедуры первой заменяется на эквивалентную формулу в соответствии с одной из указанных эквивалентностей. Пусть - это формула, получившаяся в результате этой замены из Нетрудно проверить (проделайте эту проверку!), что при любом из преобразований (4), (5) и, следовательно, . Тогда и по предположению индукции применение эквивалентностей (4), (5) в произвольном порядке приведет в конце концов к формуле, у которой все отрицания будут стоять непосредственно перед переменными. Тем самым, предложение 4.2 выполнено при n=k+1, что завершает индукционный шаг и все доказательство.
Рассмотрим применение процедуры приведения к совершенной ДНФ на примере.
Пример 4.1. Пусть формула .
На (1)-ом этапе процедуры получаем следующую цепочку эквивалентностей:
На (2)-ом этапе вносим отрицание внутрь первой скобки и получаем формулу
Устранив двойное отрицание, получим
Нетрудно видеть, что это уже ДНФ. Удалим на (4)-ом этапе повторное вхождение первой конънкции и получим ДНФ
Эта ДНФ не является совершенной, так как в каждую из ее трех конъюнкций входят не все переменные. Построим на этапе (5) для них эквивалентные совершенные ДНФ (используя решение задачи 4.5).
Подставив эти формулы в и устранив повторения конъюнкций, получим совершенную ДНФ, эквивалентную исходной формуле
Мы видим, что ДНФ , полученная после 4-го этапа, выглядит существенно проще, т.е. является более короткой, чем совершенная ДНФ . Однако совершенные ДНФ и КНФ обладают важным свойством единственности, которое следует из их конструкции в теореме 4.1.
Следствие 4.1.2. Для каждой булевой функции от n переменных, не равной тождественно 0, существует единственная с точностью до перестановки конъюнкций и переменных внутри конъюнкций совершенная ДНФ, задающая эту функцию.
Это следствие позволяет предложить следующую процедуру для проверки эквивалентности формул и
- Построить для и эквивалентные совершенные ДНФ и используя процедуру приведения к совершенной ДНФ.
- Упорядочить в соответствии с нумерацией переменных X вхождения переменных в каждую конъюнкцию, а затем лексикографически упорядочить между собой конъюнкции, входящие в и . Пусть в результате получатся совершенные ДНФ и
- Если , то выдать ответ "Да", иначе - ответ "Нет".
Замечание. Аналогичную процедуру можно построить с использованием совершенных КНФ.