- •Розділ 7 Основи теорії кодування План викладення матеріалу
- •7.1. Алфавітне й рівномірне кодування
- •7.2. Достатні умови однозначності декодування. Властивості роздільних кодів
- •7.3. Оптимальне кодування
- •7.4. Коди, стійкі до перешкод. Коди Хемінга
- •8.2. Алгебри булевих функцій
- •8.3. Спеціальні форми зображення булевих функцій в алгебрах Буля і Жегалкіна
- •8.3.1. Диз'юнктивні нормальні форми
- •8.3.2. Кон'юнктивні нормальні форми
- •8.3.3. Поліном Жегалкіна
- •8.4. Повнота і замкненість
- •8.4.1. Функціонально повні системи
- •8.4.2. Замкнені класи
- •8.4.4. Послаблена функціональна повнота
- •8.4.5. Передповні класи
- •8.5. Мінімізація булевих функцій
- •8.5.1. Основні результати
- •8.5.2. Методи побудови скороченої днф
- •8.5.3. Побудова тупикових днф
- •8.5.4. Властивості скороченої днф
- •8.5.5.Метод карт Карно побудови мінімальних днф
- •8.6. Реалізація булевих функцій схемами з функціональних елементів
- •Комп'ютерні проекти
- •Література
- •9.2. Формальні породжувальні граматики
- •9.3. Типи граматик (ієрархія Хомські)
- •9.4. Дерева виведення
- •9.5. Форми Бекуса-Наура
- •9.6. Скінченні автомати з виходом
- •9.7. Скінченні автомати без виходу
- •9.8. Подання мов
- •Комп'ютерні проекти
- •Література
- •Розділ 10
- •План викладення матеріалу
- •10.1. Основні вимоги до алгоритмів
- •10.2. Машини Тьюрінга
- •10.3. Обчислення числових функцій на машинах Тьюрінга
8.3.2. Кон'юнктивні нормальні форми
Двоїстим способом, заміною у визначеннях попереднього пункту нулів одиницями і навпаки, диз'юнкцій кон'юнкціями і навпаки, визначають поняття елементарної диз'юнкції, конституента нуля, кон'юнктивної нормальної форми, досконалої кон'юнктивної нормальної форми.
Нехай, як і раніше, зафіксовано множинуХ={х1,х2,..., хп). Елементарною диз'юнкцією називають вираз , уякому всі хijрізні. Числоrназивають рангом диз'юнкції. У разіr=0 диз'юнкцію називають порожньою і вважають рівною 0. Приклади елементарних диз'юнкцій: .
Кон'юнктивною нормальною формою (КНФ) називають кон'юнкцію d1∧d2∧…∧ds елементарних диз'юнкцій dj(J=1, 2, …, S), у якій всі dj різні.
Є алгоритм, який дає можливість для будь-якої формули булевої алгебри знайти рівну їй КНФ. Перший етап цього алгоритму такий же, як і для ДНФ. На другому етапі досягають, щоб усі диз'юнкції виконувались раніше кон'юнкцій. Для цього потрібно скористатись дистрибутивним законом або його наслідком (див. приклад 8.6 б). Далі, на основі співвідношень для констант і закону виключеного третього позбуваються одиниць та за законами ідемпотентності об'єднують рівні члени.
Приклад 8.14.Знайдемо КНФ для формули . Використовуючи сформульований алгоритм, одержимо
.▲
Елементарну диз'юнкцію рангу п називають конституентою нуля. Іншими словами, конституента нуля - це елементарна диз'юнкція, у яку входять всі змінні з множини X.
Кожному двійковому набору взаємно однозначно відповідає конституента нуля , яка перетворюється на ньому в 0. Усі інші констшуенти нуля на цьому наборі перетворюються в 1. Наприклад, набору 0111 відповідає конституента нуляx1∨х2∨x3∨х4.
Досконалою кон'юнктивною нормальною формою (ДКНФ) називають КНФ, у якої кожна елементарна диз'юнкція dj(j= 1, ..., s) є конституентою нуля.
Покажемо, що кожну булеву функціюf(x1, …, хп) можна зобразити досконалою кон'юнкгивною нормальною формою. Для цього запишемо ДДНФ f* (зазначимо, щоf*≠0).
f*(τ1, …, τn)
Візьмемо тотожність для двох формул
Ліва частина дорівнює , а праву перетворюємо далі
Отже,
Звідси випливає, що ДКНФ є кон'юнкцією конституент нуля, що відповідають усім наборам, на яких функція приймає значення 0.
Приклад 8.15.Побудуємо ДКНФ функції, заданої табл. 8.5. Функція приймає значення 0 на наборах 01 та 10. Отже
.▲
Зазначимо, що на основі тотожних перетворень будь-яку КНФ можна перетворити у ДКНФ. Якщо в деяку елементарну диз'юнкціюdне входить змінна х, то потрібно записати рівносильний вираз і скористатись дистрибутивним законом: . Після тривіальних перетворень отримаємо ДКНФ.
Приклад 8.16.Перетворимо КНФу досконалу КНФ. Використовуючи розщеплення диз'юнкцій, можемо записати
.▲
Зазначимо, що досконала КНФ єдина.
8.3.3. Поліном Жегалкіна
Елементарну кон'юнкцію називають монотонною, якщо вона не містить заперечень змінних. Наприклад,x1x2x3, x1,1-монотонні кон'юнкції.
Формулу
деk1k2,..., ks- попарно різні монотонні кон'юнкції змінних із множиниX={x1х2, …, хn}, називають поліномом Жегалкіна. Найбільший із рангів елементарних кон'юнкцій, що входять у поліном, називають степенем полінома. За окремим означенням 0 вважатимемо поліномом Жегалкіна.
Приклад 8.17. Формули х, 1,xyz xy z 1- поліноми Жегалкіна, ахх, xyz xy z 1не є поліномами Жегалкіна. ▲
Якщо маємо будь-яку формулу алгебри Жегалкіна, то для отримання полінома Жегалкіна достатньо розкрити дужки (дистрибутивний закон), скористатися, якщо можливо, законом ідемпотентності для кон'юнкції та звести подібні члени.
Теорема 8.5.Будь-яку булеву функцію можна єдиним способом зобразити у формі полінома Жегалкіна.
Доведення. Нехай - довільна булева функція.
Достатньо провести доведення для функцій, відмінних від констант, тому що 1 та 0 є поліномами Жегалкіна. Задамо функціюfдосконалою диз'юнктивною нормальною формою, тобто деякою диз'юнкцією конституент одиниціf=K1∨К2∨...∨Ks.Замінемо знак ∨знаком ⊕ і одержимоg= K1⊕К2⊕...⊕Ks. Покажемо, що функціїfта g рівні. На жодному наборі (а1,...,an) значень змінних дві різні конституенти одиниці не можуть одночасно перетворитись в 1, оскільки i-а конституента одиниці перетворюється в 1 лише на i-му наборі. Отже, під час обчислення значень функційfтаgпотрібно знайти значення диз'юнкції або, відповідно, суми за mod2 членів, із яких лише один може дорівнювати одиниці, решта - обов'язково нулі. Але у такому випадку диз'юнкція та додавання за mod2 призводять до одного й того ж результату (до нуля, якщо всі члени дорівнюють нулю, і до одиниці, якщо один і лише один член дорівнює одиниці).
Вотриманій формулі замінимо всі заперечення змінних згідно з тотожністю х = 1⨁х. Одержимо формулу алгебри Жегалкіна. Залишається лише розкрити дужки, скористатись законом ідемпотентності для кон'юнкції та привести подібні члени. Внаслідок цього одержимо зображення булевої функціїfу формі полінома Жегалкіна.
Доведемо, що тaке зображення єдине. Для цього підрахуємо кількість поліномів Жегалкіна від п змінних х1 х2, ...,хп. Кількість кон'юнкцій вигляду дорівнює кількості підмножин {i1 і2,…, is) множини {1, 2, ..., n}, тобто2n.Кожна з цих кон'юнкцій може входити в поліном із коефіцієнтом 0 або 1. Отже, кількість поліномів Жегалкіна від п змінних дорівнює кількості кортежів довжини 2nелементами яких є 0 або 1, тобто , що дорівнює кількості всіх булевих функційвід змінних x1, x2, …, xn. А оскільки доведено, щобудь-яку булеву функцію можна зобразити поліномом Жегалкіна, то звідси випливає єдиність цього зображення. ▲
Коротко зупинимось на методах побудови полінома Жегалкіна.
Побудова полінома Жегалкіна методом невизначених коефіцієнтів. Для функції записують найбільш загальний вигляд полінома Жегалкіна з невизначеиими коефіцієнтами(цих коефіцієнтів є 2n). Для кожного двійкового набору (a1, …, an) значень змінних записують рівняння .Одержують систему 2nрівнянь. Розв'язком цієї системи є коефіцієнти полінома .
Приклад 8.18.Побудуємо поліном Жегалкіна для функціїf(x,y)=x∽y.Загальний вигляд полінома від двох змінних з невизначеними коефіцієнтами такий:
Прирівняємо значення функції і полінома на всіх чотирьох наборах значень змінних і одержимо систему рівнянь відносно невизначених коефіцієнтів:
Звідси визначаємо с0=1,с1=1, с2=1, с3=0. Отже,x∽y=1⨁x⨁y. ▲
Побудова полінома Жегалкіна на основі тотожних перетворень. Один із способів побудови полінома Жегалкіна полягає у наступному. Спочатку будують рівносильну формулу, в якій є лише операції кон'юнкції та заперечення, а потім замінюють всюди на1⨁х. Після цього поліном одержують тривіальним шляхом.
Приклад 8.19.Побудуємо поліном Жегалкіна для функції :
. ▲
Побудова полінома Жегалкіна за досконалою ДНФ булевої функції. Цю побудову здійснюють за схемою доведення теореми 8.5. Такий спосіб доцільно застосовувати, коли функція задана досконалою ДНФ, або якщо цю форму легко знайти.
Приклад 8.20.Побудуємо зазначеним методом поліном Жегалкіна для функції . Спочатку перетворимо цю ДНФ у досконалу:
Повторюючи схему доведення теореми 8.5, матимемо
.▲
Поліном Жегалкіна має цікаву властивість, зручну для знаходження істотних змінних булевої функції.
Теорема 8.6.Булевафункція має істотними всі змінні, які входять у її поліном Жегалкіна.
Доведення. Нехай змінна х, входить у поліном Жегалкіна функції f(x1, х2,...,хп). Згрупуємо члени, які містятьх1, і винесемо х1 за дужки:
Функція оскільки у протилежному випадку змінна х1 не входила б у поліном для функціїf(через єдиність полінома Жегалкіна). Нехай на наборі (а2,...,аn) значення функціїf1 дорівнює одиниці. Тоді , де . Отже, зміна значення х1 у разі, коли значення решти змінних задані набором (а2,...,аn), змінює значення функції . Отже, змінна х1 істотна. ▲