Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2_ЛАБ_КЛ_2КСМ_2016-17.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
651.78 Кб
Скачать

1.2 Поняття елементарної диз'юнкції, кон’юнктивної нормальної форми (кнф) і досконалої кон`юнктивної нормальної форми (дкнф), констітуенти нуля, визначення дкнф на основі констітуент нуля

Елементарна диз'юнкція - вираз, що являє собою диз'юнкцію кінцевого числа попарно різних булевих змінних або їх заперечень.

За визначенням, до елементарних диз'юнкцій також відносять:

- вирази, що складаються з однієї змінної (з запереченням або без нього);

- константи 0 i 1.

Елементарні диз'юнкції, що відрізняються лише порядком розташування змінних, як правило, не розрізняють через комутативнiсть диз'юнкції.

Елементарну диз'юнкцію задає формула наступного виду:

.

Прикладами елементарних диз'юнкцій є вирази 0, х, , , .

Не є елементарними диз'юнкціями вирази x1x2x1, ab .

Кон’юнктивною нормальною формою (КНФ) називають кон’юнкцію кінцевого числа попарно різних елементарних диз'юнкцій.

Приклад КНФ: f(x1, x2, x3)=(x12)(  23) 3.

Приклад знаходження кон'юнктивної нормальної форми (КНФ) для формули .

Розв'язок завдання прикладу 3:

Приведення виразу до КНФ здійснюється згідно з наведеним нижче алгоритмом.

Крок 1. Якщо заданий вираз є КНФ, то алгоритм припиняє роботу, інакше переходимо до кроку 2.

Крок 2. Приводимо початковий вираз до безінверсної форми.

Крок 3. Послідовно застосовуємо другий дистрибутивний закон.

Крок 4. Виключаємо одиницi на основі тотожності x*1=x та об’єднуємо ріні кон’юнктивні члени на основі тотожності x*x=x.

Приклад приведення виразу до КНФ:

f(x,y,z,w) = (xy z) = (xy z)(  ) = (xy )(xyz)(x ) =

= ( y)( x)(zx)(zy)(x ) = (x )(xz)(yz)(x ).

Правильна елементарна диз'юнкція характеризується тим, що кожна змінна входить до неї не більше одного разу (включаючи входження зі знаком заперечення).

Повна правильна елементарна диз'юнкція щодо змінних x1, x2, ..., xn визначається тим, що кожна зі змінних входить до неї один раз (можливо, під знаком заперечення).

Досконалою кон’юнктивною нормальною формою (ДКНФ) щодо змінних x1, x2, ..., xn називають кон’юнктивну нормальну форму, в якій усі елементарні диз'юнкції не повторюються, є правильними та повними щодо зазначених змінних.

Будь-яку функцію f(x1, x2, ..., xn), яка є відмінною від тотожно дійсної, можна представити досконалою кон’юнктивною нормальною формою (ДКНФ):

Наведемо приклад знаходження досконалої кон’юнктивної нормальної форми (ДКНФ) для формули .

Розглянемо розв'язок завдання прикладу табличним методом, який спирається на наведене вище подання булевої функції у вигляді ДКНФ.

Етап 1. Для формули складається таблиця істинності.

Етап 2. У таблиці істинності виділяються ті набори , для яких значення формули не є істинним (тобто є хибним, дорівнює 0).

Етап 3. Для кожного виділеного набору складається елементарна диз'юнкція виду .

Етап 4. Формується кон’юнкція елементарних диз'юнкцій.

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

0

1

1

1

1

0

0

1

0

1

0

1

1

1

1

0

0

1

0

1

1

0

0

У підсумку, буде отримано наступний результат:

.

Також можна отримати розв'язок завдання прикладу аналітичним методом.

ДКНФ називають ДКНФ булевої функції f=f(x1…xn), якщо:

ДКНФ тотожно дорівнює данiй булевiй функції (приймає ті самі значення на тих самих наборах значень змінних);

– множина змінних, від яких залежить ДКНФ, співпадає з множиною аргументів булевої функції.

У заданої булевої функцiї існує необмежена кількість КНФ, що тотожно дорівнюють їй, одні з яких є громіздкішими та складнішими, а інші є простiшими.

Разом iз тим, важливу роль вiдiграє наступна властивість щодо існування й єдиності ДКНФ заданої булевої функції: для будь-якої булевої функцiї f(x1,…,xn), існує тільки одна ДКНФ, яка тотожно дорівнює їй.

Констітуентами нуля називають елементарні диз'юнкції, що містять в прямому або інверсному вигляді всі змінні заданої множини М.

Для множини М={x1, …, xn} довільну констітуенту нуля можна представити у вигляді 1 2 … n, де і дорівнює хі або , і=1, 2, ..., n.

Визначною властивістю констітуент нуля є те, що для будь-якої констітуенти нуля R= 1 2 n існує один і тільки один відповідний даній констітуенті набір =(1,…,n) значень змінних x1, …, xn, на якому дана констітуента приймає значення 0.

Розглянемо приклад констітуент нуля (для M={x1, x2, x3}) 1x2 3, x1 2 3, якi приймають значення 0 на наступних наборах:

1x2 3 – на наборі (1,0,1);

‒ x1 2 3 – на наборі (0,1,1).

Досконалою КНФ (ДКНФ) називають КНФ, у якої всі елементарні диз’юнкції, із яких вона складається, є констітуентами нуля.

Наприклад, для M={x1, x2, x3}:

- досконалою КНФ буде вираз (x1 2 3)( 1x2 3)( 1 2x3);

- вираз (x1 2)(x2 3)( 1 2x3) є тiльки КНФ, а не ДКНФ.

Алгоритм знаходження ДКНФ для булевої функцiї, що задана таблицею, полягає в наведених нижче дiях.

Крок 1. Обираємо з таблиці ті набори значень двійкових змінних, на яких дана булева функцiя приймає значення 0.

Крок 2. Записуємо відповідні вказаним наборам констітуенти 0.

Крок 3. Об’єднуємо отримані констітуенти 0 знаками кон’юнкції.

Наведемо пояснювальний приклад.

Нехай булеву функцiю задано наступною таблицею істинності:

Х

Y

Z

F(х, y, z)

0

0

0

0

0

0

1

0

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

0

1

1

0

1

1

1

1

1

Знайдемо ДКНФ, яка дорiвнює заданiй булевiй функцiї:

f(x,y,z)=(x y z)(x y )( y )

Існує алгоритм знаходження для визначеної булевої функцiї, що задана аналітично, тотожно рiвної ДКНФ

Алгоритм, який дозволяє для будь-якого виразу булевої алгебри знайти ДКНФ, яка тотожно дорiвнює йому, наведено нижче.

Етап 1. Приводимо довільний вираз булевої алгебри до КНФ.

Етап 2. Доки не всі елементарні диз’юнкції, що входять до КНФ, є констітуентами нуля, здiйснюємо наведенi нижче дії.

Крок 2_1. Обираємо елементарну диз’юнкцію q, яка входить до КНФ, та яка не містить в собі деякої зi змінних хi (i= 1,…,n), від яких залежить булева функцiя.

Крок 2_2. У КНФ замінюємо диз’юнкцію q виразом, який дорівнює їй у силу наступних тотожностей: g = gx i = (gxi)(g i)

Наведемо пояснювальний приклад, в якому потрібно привести до ДКНФ вираз f(x, y, z) = (x  z):

f(x, y, z) = (x  z) = ( )(x  z) = ( )(x  z) =

= (  y )(x z)(x  y  z) =

= (  y )( )(x   z )(  z)(x  y  z )(x v v z).