Минимизация методом карт Карно
Карты Карно – это графическое изображение таблиц истинности.
Пусть задана функция . Подмножество элементов , в которых , называется носителем функции f и обозначается через supp(f). Конечные пересечения подмножеств вида: называются кубиками. Кубики будут равны: , для некоторых и , таких, что . Если кубики являются максимальными, содержащимися в носителе, и попарно не пересекаются, то формула
будет давать разложение в дизъюнктивную нормальную форму, минимальное по количеству слагаемых. Карты Карно позволяют «увидеть» эти кубики. Для функций двух, трех и четырех переменных они имеют следующие структуры:
x1 | x2 | ||
f(0,0) | f(0,1) | ||
f(1,0) | f(1,1) |
x2 x3 | |||||
x1 | |||||
f(0,0,0) | f(0,0,1) | f(0,1,1) | f(0,1,0) | ||
f(1,0,0) | f(1,0,1) | f(1,1,1) | f(1,1,0) |
х3 x4 | |||||
x1 x2 | |||||
f(0,0,0,0) | f(0,0,0,1) | f(0,0,1,1) | f(0,0,1,0) | ||
f(0,1,0,0) | f(0,1,0,1) | f(0,1,1,1) | f(0,1,1,0) | ||
f(1,1,0,0) | f(1,1,0,1) | f(1,1,1,1) | f(1,1,1,0) | ||
f(1,0,0,0) | f(1,0,0,1) | f(1,0,1,1) | f(1,0,1,0) |
Кубикам будут соответствовать отрезки и квадраты. Рассмотрим примеры кубиков и соответствующих им логических произведений:
Возможно превращение кубиков в квадраты и отрезки после отождествления противоположных сторон карты Карно, например:
Логические произведения состоят из сомножителей, значения которых не изменяются внутри кубика. Если это значение равно 1, то для переменной берется сомножитель , а если это значение равно 0 – то сомножитель .
Пример
Для булевой функции:
найти дизъюнктивную нормальную форму с наименьшим числом логических слагаемых.
Решение. Составим карту Карно:
х3 x4 | |||||
x1 x2 | |||||
Получаем 2 кубика: и . Внутри первого кубика не изменяются переменные и , и равны 0. Значит, первое слагаемое равно: . Внутри второго кубика не изменяются и , откуда второе слагаемое равно: . Следовательно, искомая дизъюнктивная нормальная форма равна: .
ИСЧИСЛЕНИЕ ВЫСКАЗЫВАНИЙ
Математическая логика основана на понятии простого высказывания. Простое высказывание – это утверждение, про которое можно сказать, истинно оно или ложно при данных условиях. Из простых высказываний с помощью логических операций строятся составныевысказывания,которые далее будут называться просто высказываниями. Сохраняющее эти операции сопоставление каждому высказыванию одного из значений «истина» или «ложь», обозначаемых соответственно 1 или 0, называется интерпретацией исчисления высказываний.
Классические логические задачи приводят к поиску интерпретации исчисления высказываний, при которой значения заданных высказываний известны. К таким задачам относятся, например, занимательные задачи об определении преступника на основе показаний, достоверность которых установлена.
В данной главе будет дано точное определение исчисления высказываний и доказаны теоремы о дедукции и полноте. Будет введено понятие формальной теории и доказана равносильность исчисления высказываний теории, основанной на аксиомах Клини.
Исчисление высказываний L
Алфавитом называется произвольное множество. Его элементы называются символами. Произвольная конечная последовательность символов называется словом. Слово может быть пустым.
Исчисление высказываний L определяется следующим образом:
Его алфавит состоит из символов , называемых логическими,и из символов, принадлежащих произвольному множеству Р, называемых нелогическими символами или буквами.
Синтаксис исчисления L определяется с помощью наименьшего подмножества S множества слов, такого, что
1) Р S;
2) Если A S и B S , то A S и (A B) S.
Элементы множества S называются (пропозициональными) формулами. Таким образом, формулами называются слова, определяемые по индукции с помощью правил 1 – 2 из логических и нелогических символов.
Аксиомами исчисления L называются формулы:
(A1) A (B A),
(A2) (A (B C)) ((A B) (A C)),
(A3) ( B A) (( B A) B).
Здесь A, B, C – произвольные формулы. Поэтому в действительности мы имеем бесконечное множество аксиом, в каждой из групп A1, A2 и A3.
Правилом выводаModus Ponens называется множество троек формул (A,A B,B), которое позволяет паре формул (A,A B) поставить в соответствие формулу B, называющуюся непосредственным следствием этих формул. Правило вывода Modus Ponens обозначается через MP и записывается, как
MP
Формула A называется выводимой в исчислении L из формул X1, X2, …, Xk, если существует последовательность формул: A1, A2, A3, …, An, такая, что для каждого формула Ai является либо аксиомой исчисления L, либо элементом множества {X1, …, Xk} , либо непосредственным следствием формул Ap и Aq, при некоторых
1 p, q i-1. В этом случае последовательность: A1, A2, A3, …, An называется выводом формулы A. Для обозначения выводимости формулы A в исчислении L из формул X1, …, Xk применяется запись:
X1, X2, …, Xk L A .
Если для вывода формулы A достаточно аксиом, то А называется теоремой теории L, а выводимость из пустого множества формул записывается, как
L А .
Лемма. Имеет место теорема L А А.
Доказательство. Построим вывод формулы А А из аксиом (А1) – (А3) следующим образом:
А1 будет аксиомой (А2) для формул А, B = (А А), С = А;
А2 будет аксиомой (А1) для формул А, В = (А А);
получим:
А1=(А ((А А) А)) ((А (А А)) (А А)),
А2=А ((А А) А).
Применяя правило вывода MP , будем иметь непосредственное следствие формул A2 и A1:
А3=(А (А А)) (А А).
Следующая формула получается из аксиомы (А1) подстановкой В = А:
А4=А (А А).
Применяя правило вывода MP, получим:
А5 = А А.
Последовательность формул: A1, A2, A3, А4, А5 = (А А) является искомым выводом формулы А А.
Теорема о дедукции
Пусть Г – множество формул. Запись Г L А означает, что существует конечная последовательность формул Xi Г, , такая, что X1, X2, …,Xn L A. Вместо Г {X} L А будем писать Г, X L А. Легко видеть, что из Г L (А В) следует существование вывода Г, А L В. Верно и обратное утверждение:
Теорема (о дедукции). Пусть Г – множество формул исчисления L; А и В – формулы, и пусть
Г, А L В.
Тогда Г L (А В). В частности, при пустом Г, из выводимости А L В вытекает теорема: L А В.
Доказательство. Пусть В1, В2, …, Вn = В – вывод формулы из формул, принадлежащих множеству Г {A}. Докажем с помощью индукции по i, что Г L (А Вi), а затем применим это к i = n, чтобы получить Г L (А В). При i = 1 имеем В1 Г, либо В1 = А, либо В1 – аксиома. Если В1 Г, либо В1 – аксиома, тогда получаем с помощью аксиомы (А1) формулу В1 (А В1). Применение MP к В1 и В1 (A В1) дает вывод для А В1 из Г. Если же В1 = А, то имеем: L (А В1) по доказанной лемме о том, что верна теорема L А А.
Докажем теперь: Г L (А Вi) при i > 1, предполагая, что выводимость
Г L (А Вк) уже доказана для всех k < i.
Для Вi имеем 4 возможности: Вi Г; Вi – аксиома; Вi = А; Вi непосредственно следует из Вj и Вm, при некоторых j, m i-1. В первых трёх случаях Г L А Вi доказывается так же, как при i = 1. В четвёртом случае формула Вm равна формуле (Вj Вi), и согласно предположению индукции имеем:
Г L (А Вj) и Г L (А (Вj Вi)),
ибо (Вj Вi)=Вm. По аксиоме (А2) верно
L (А (Вj Вi)) ((А Вj) (А Вi)).
Применение
MP
приводит к выводу Г L (А Вj) (А Вi). Из этого вывода и вывода Г
L (А Вj) с помощью Modus Ponens получаем:
Г L (А Вi).
Таким образом, Г L (А Вi), для всех i = 1,…,n. В частности, при i = n, получаем:
Г L (А В),
что и требовалось доказать.