Raw

Лекція 4. Мінімізація виразів. Логічні схеми

Огляд

У Лекції 3 ми ввели булеву область {0,1}\{0,1\}, операції \wedge (кон’юнкція, І), \vee (диз’юнкція, АБО),   \overline{\ \cdot\ } (заперечення, НЕ), їхні таблиці істинності та основні тотожності — комутативність, асоціативність, дистрибутивність, закони де Моргана, поглинання й доповнення. Усе це ми вважаємо відомим і вільно використовуємо. Заперечення позначаємо рискою зверху: x\overline{x} (те саме, що ¬x\neg x).

Там ця алгебра була набором правил. Ця лекція змушує правила працювати. За всіма питаннями нижче стоїть вартість: одну й ту саму булеву функцію можна записати незліченною кількістю рівносильних формул, а в апаратурі кожна виписана нами операція стає фізичним вентилем, який займає площу кристала, споживає енергію й вносить затримку. Процесор містить мільярди вентилів; зекономити один вентиль у схемі, яку повторено мільйон разів, — це вже відчутно. Тому центральна інженерна задача така: за заданою поведінкою (таблицею істинності) знайти найдешевшу формулу, що її реалізує. Ця лекція будує теорію й методи, які цю задачу розв’язують.

Ми пройдемо шість тем:

  • Логічні елементи (вентилі) — фізичні пристрої, що обчислюють одну булеву операцію: їхні умовні позначення, таблиці істинності, реальні мікросхеми та оглядово транзисторна реалізація.
  • Мінімізація законами алгебри — покрокове спрощення формули тотожностями Лекції 3.
  • Канонічні форми — досконала диз’юнктивна (ДДНФ) і досконала кон’юнктивна (ДКНФ) нормальні форми, які однозначно читаються з таблиці істинності.
  • Мінімальні форми — МДНФ і МКНФ, найдешевші дворівневі записи.
  • Карти Карно — код Грея, склеювання сусідніх клітин, зчитування МДНФ по одиницях і МКНФ по нулях.
  • Логічні схеми — побудова схеми за МДНФ/МКНФ та переписування її у базиси ТА-НІ (NAND) та АБО-НІ (NOR).

Усе тут — комбінаційна логіка: вихід залежить лише від поточних входів, без пам’яті. Оскільки істиннісних значень лише два, кожна функція nn змінних повністю описана скінченною таблицею істинності з 2n2^n рядків — цим фактом ми користуємося постійно. Побудовані нижче схеми ви складатимете власноруч в онлайн-симуляторі під час лабораторної роботи 1; ця лекція — її теоретична основа. Далі, у Лекції 5, ми переходимо від булевих схем до мови математичної логіки — висловлень та їхніх логічних зв’язок.

Про строгість. Кілька результатів нижче оформлені як теореми й твердження та супроводжуються доведенням, обмеженим позначками Доведення.\blacksquare. Читайте доведення активно, запитуючи на кожному кроці «чому цей крок дозволений?». Прийоми (аналіз за випадками, доведення через індикаторну властивість, подвійне включення множин розв’язків) — ті самі, що й у попередніх лекціях.


4.1 Логічні елементи (вентилі)

Що таке вентиль

Означення (логічний елемент). Логічний елемент (вентиль, англ. gate) — це фізичний пристрій, сьогодні транзисторна схема всередині інтегральної мікросхеми, що обчислює одну булеву операцію над своїми вхідними напругами, тлумачачи «високий» рівень як 11, а «низький» — як 00.

Вентилі — це атоми цифрової апаратури, а абстрактна алгебра Лекції 3 є рівно математикою того, що ці пристрої обчислюють. Кожному вентилю відповідає стандартне умовне графічне позначення (УГП) та таблиця істинності.

Умовні позначення основних вентилів: НЕ, І, АБО, ТА-НІ, АБО-НІ, XOR

Форма позначення кодує операцію: пряма спинка й округлений «ніс» — це І (AND); опукла спинка й гострий ніс — АБО (OR); трикутник — повторювач/НЕ (NOT). Кружечок (bubble) на виході завжди означає заперечення — саме тому ТА-НІ (NAND) малюють як І з кружечком, а АБО-НІ (NOR) — як АБО з кружечком. XOR — це АБО з додатковою дугою на спинці.

Таблиці істинності основних вентилів

Зведемо всі шість елементів у таблицю. Тут A,BA,B — входи; наведено булеву функцію, характерну форму позначення та приклад однокорпусної мікросхеми (за слайдами курсу).

Вентиль UA Функція Форма УГП Приклад мікросхеми
AND І ABA\wedge B пряма спинка, округлий ніс SN74LVC1G08
OR АБО ABA\vee B опукла спинка, гострий ніс SN74LVC1G32
NOT НЕ A\overline{A} трикутник + кружечок 7404 (шість інверторів)
NAND ТА-НІ AB\overline{A\wedge B} І + кружечок SN74AHC1G00
NOR АБО-НІ AB\overline{A\vee B} АБО + кружечок SN74AHC1G02
XOR «виключне АБО» ABA\oplus B АБО + дуга на спинці SN74LVC1G86

Таблиці істинності двовходових елементів (і одновходового НЕ):

AA BB ABA\wedge B ABA\vee B AB\overline{A\wedge B} AB\overline{A\vee B} ABA\oplus B
0 0 0 0 1 1 0
0 1 0 1 1 0 1
1 0 0 1 1 0 1
1 1 1 1 0 0 0

Виключне «або» ABA\oplus B дорівнює 11 саме тоді, коли входи різні; звідси його роль у контролі парності. Наприклад, мікросхема CY54FCT480T — це подвійний 8-бітовий генератор/контролер парності: усередині вона є деревом елементів XOR, бо парність вектора бітів дорівнює XOR усіх його бітів (XOR асоціативний, тож дерево визначене коректно).

Складні схеми та багатовходові елементи

Вентилі І, АБО, ТА-НІ, АБО-НІ бувають і на більше ніж два входи: тривходовий елемент І обчислює ABCA\wedge B\wedge C, nn-входовий АБО — диз’юнкцію nn входів тощо. Ціла булева функція реалізується мережею таких вентилів, з’єднаних провідниками; вихід однієї мережі стає входом іншої. Так з кількох простих елементів складають суматори, дешифратори, мультиплексори та згадані контролери парності.

Читають мережу зсередини назовні. Наприклад, у ланцюжку «елемент І над A,CA,C, потім елемент АБО над його виходом і сигналом B\overline{B}» проміжний вузол несе ACAC, а вихід — BAC\overline{B}\vee AC; сáме таку мережу ми будуємо в §4.6. Кожен фізичний вузол відповідає одному підвиразу формули — тому коротша формула — менша схема.

Штрих Шефера та стрілка Пірса

Два з наведених елементів мають власні імена й особливий статус (див. нижче).

Означення (штрих Шефера). Штрих Шефера (операція ТА-НІ, NAND) позначають ABA\mid B або ABA\uparrow B і означують як

AB  =  AB.A\uparrow B \;=\; \overline{A\wedge B}.

Означення (стрілка Пірса). Стрілку Пірса (операцію АБО-НІ, NOR) позначають ABA\downarrow B і означують як

AB  =  AB.A\downarrow B \;=\; \overline{A\vee B}.

Кожна з цих операцій сама по собі дає змогу виразити всі інші. Це — теоретичне обґрунтування того, що цілі мікросхеми будують з одного типу вентиля.

Твердження 4.1 (штрих Шефера є функціонально повним). Операція \uparrow сама по собі виражає заперечення, кон’юнкцію та диз’юнкцію:

A=AA,AB=(AB)(AB),AB=(AA)(BB). \overline{A}=A\uparrow A,\qquad A\wedge B=(A\uparrow B)\uparrow(A\uparrow B), \qquad A\vee B=(A\uparrow A)\uparrow(B\uparrow B).

Доведення. Перевіримо кожну тотожність, спираючись на означення \uparrow і тотожності Лекції 3. — AA=AA=AA\uparrow A=\overline{A\wedge A}=\overline{A} (ідемпотентність AA=AA\wedge A=A). — (AB)(AB)=(AB)(AB)=AB=AB=AB(A\uparrow B)\uparrow(A\uparrow B)=\overline{(A\uparrow B)\wedge(A\uparrow B)} =\overline{A\uparrow B}=\overline{\overline{A\wedge B}}=A\wedge B (подвійне заперечення). — (AA)(BB)=AB=AB=AB(A\uparrow A)\uparrow(B\uparrow B)=\overline{A}\uparrow\overline{B} =\overline{\overline{A}\wedge\overline{B}}=A\vee B (закон де Моргана). Оскільки набір {,,  }\{\wedge,\vee,\overline{\ \cdot\ }\} функціонально повний (кожну булеву функцію можна ним записати — див. Лекцію 3), а тепер кожну з цих трьох операцій виражено через \uparrow, то й один \uparrow функціонально повний. \blacksquare

Наслідок 4.2 (стрілка Пірса є функціонально повною). Двоїсто до Твердження 4.1:

A=AA,AB=(AB)(AB),AB=(AA)(BB). \overline{A}=A\downarrow A,\qquad A\vee B=(A\downarrow B)\downarrow(A\downarrow B), \qquad A\wedge B=(A\downarrow A)\downarrow(B\downarrow B).

Доведення дослівно повторює попереднє із заміною \wedge\leftrightarrow\vee і застосуванням другого закону де Моргана. \blacksquare

Типова помилка (неасоціативність). Ані \uparrow, ані \downarrow не асоціативні. Наприклад, (10)0=10=1(1\uparrow 0)\uparrow 0=1\uparrow 0=1, тоді як 1(00)=11=01\uparrow(0\uparrow 0)=1\uparrow 1=0. Тому запис ABCA\uparrow B\uparrow C неоднозначний; завжди ставте дужки й не плутайте ABCA\uparrow B\uparrow C із ABC\overline{ABC} (тривходовий елемент ТА-НІ — це інший вентиль).

Транзисторна реалізація (оглядово)

Сучасні вентилі будують за технологією КМОН (комплементарний метал-оксид- напівпровідник, англ. CMOS) із двох типів польових транзисторів. n-канальний транзистор провідний, коли на його затворі 11 (працює як замкнений ключ), і розімкнений при 00; p-канальний — навпаки (провідний при 00; на позначенні його затвор має кружечок). Транзистори з’єднують так, щоб вихід підтягувався до живлення +U+U (лог. 11) або до землі (лог. 00), але ніколи водночас.

Найпростіший елемент — інвертор (НЕ): один p-канальний транзистор між +U+U і виходом та один n-канальний між виходом і землею; входом керуються обидва затвори.

КМОН-реалізація елемента НЕ (інвертор): p-канальний та n-канальний транзистори

Коли A=0A=0, верхній (p) транзистор відкритий, нижній (n) закритий — вихід приєднано до +U+U, тобто F=1F=1. Коли A=1A=1 — навпаки, F=0F=0. Отже, F=AF=\overline{A}. Складніші вентилі будують за тим самим принципом: у ТА-НІ два n-транзистори з’єднують послідовно (обидва входи мають бути 11, щоб «просадити» вихід до нуля), а два p-транзистори — паралельно. Саме тому в КМОН елементи ТА-НІ та АБО-НІ дешевші за І та АБО (останні є ТА-НІ/АБО-НІ з додатковим інвертором): це практична причина, чому \uparrow і \downarrow вважають «природними» вентилями (§4.6).


4.2 Мінімізація булевих виразів законами алгебри

Алгебрична мінімізація застосовує тотожності Лекції 3, щоб зменшити формулу, зберігши її таблицю істинності. Робочі закони:

Закон Формулювання
Ідемпотентність AA=A,AA=AA\vee A=A,\qquad A\wedge A=A
Доповнення AA=1,AA=0A\vee\overline{A}=1,\qquad A\wedge\overline{A}=0
Поглинання AAB=A,A(AB)=AA\vee AB=A,\qquad A(A\vee B)=A
Поглинання (2-га форма) AAB=AB\overline{A}\vee AB=\overline{A}\vee B
Склеювання ABAB=AAB\vee A\overline{B}=A; і «розщеплення» P=P(AA)P=P\wedge(A\vee\overline{A})
Закони де Моргана AB=AB,AB=AB\overline{A\vee B}=\overline{A}\,\overline{B},\qquad \overline{A\wedge B}=\overline{A}\vee\overline{B}

Закон склеювання ABAB=AAB\vee A\overline{B}=A — алгебричне серце всіх методів цієї лекції: два добутки, що збігаються всюди, крім однієї змінної, у якій різняться, зливаються в один коротший. Карти Карно (§4.5) — це лише впорядкований, вичерпний спосіб знайти всі законні застосування цього одного закону.

Швидкий приклад (склеювання й поглинання)

XYXYXY  =  X(YY)XY  =  XXY  =  XY.XY\vee X\overline{Y}\vee \overline{X}Y \;=\; X(Y\vee\overline{Y})\vee\overline{X}Y \;=\; X\vee\overline{X}Y \;=\; X\vee Y.

Спершу склеїли XYXY з XYX\overline{Y} у XX, потім застосували другу форму поглинання XXY=XYX\vee\overline{X}Y=X\vee Y. Три добутки згорнулися в одну диз’юнкцію.

Приклад із «зайвим» доданком (консенсус). У виразі XYXZYZXY\vee\overline{X}Z\vee YZ третій доданок YZYZконсенсус перших двох (утворений викреслюванням протилежної змінної XX) — надлишковий:

YZ=YZ(XX)=XYZXYZ,XYZXY,  XYZXZ,YZ=YZ(X\vee\overline{X})=XYZ\vee\overline{X}YZ,\qquad XYZ\le XY,\ \ \overline{X}YZ\le\overline{X}Z,

тож YZXYXZYZ\le XY\vee\overline{X}Z і XYXZYZ=XYXZXY\vee\overline{X}Z\vee YZ=XY\vee\overline{X}Z. Уміння впізнавати надлишковий консенсус — це рівно те, що на карті Карно означає «не додавай групу, без якої можна обійтися».

Розгорнутий приклад

Спростимо вираз зі слайда лекції:

F=(xy)  ((yz)xz).F=\overline{(x\vee\overline{y})}\ \vee\ \bigl((\overline{y}\vee\overline{z})\vee \overline{x}\,z\bigr).

Тут xz\overline{x}\,z означає xz\overline{x}\wedge z. Ведемо перетворення покроково, на кожному кроці посилаючись на закон.

Крок Вираз Обґрунтування
1 (xy)((yz)xz)\overline{(x\vee\overline{y})}\vee\bigl((\overline{y}\vee\overline{z})\vee\overline{x}z\bigr) вихідний вираз
2 (xy)(yzxz)(\overline{x}\wedge\overline{\overline{y}})\vee(\overline{y}\vee\overline{z}\vee\overline{x}z) закон де Моргана до першого доданка; знято внутрішні дужки
3 xyyzxz\overline{x}y\vee\overline{y}\vee\overline{z}\vee\overline{x}z подвійне заперечення y=y\overline{\overline{y}}=y
4 xyxzy(xx)z(xx)\overline{x}y\vee\overline{x}z\vee\overline{y}(x\vee\overline{x})\vee\overline{z}(x\vee\overline{x}) переставлено доданки; помножено y,z\overline{y},\overline{z} на (xx)=1(x\vee\overline{x})=1
5 xyxzxyxyxzxz\overline{x}y\vee\overline{x}z\vee x\overline{y}\vee\overline{x}\,\overline{y}\vee x\overline{z}\vee\overline{x}\,\overline{z} розкрито дужки (дистрибутивність)
6 x(yy)x(zz)xyxz\overline{x}(y\vee\overline{y})\vee\overline{x}(z\vee\overline{z})\vee x\overline{y}\vee x\overline{z} згруповано xy\overline{x}y з xy\overline{x}\,\overline{y} і xz\overline{x}z з xz\overline{x}\,\overline{z}
7 xxxyxz\overline{x}\vee\overline{x}\vee x\overline{y}\vee x\overline{z} закон доповнення yy=1y\vee\overline{y}=1, zz=1z\vee\overline{z}=1
8 xx(yz)\overline{x}\vee x(\overline{y}\vee\overline{z}) ідемпотентність xx=x\overline{x}\vee\overline{x}=\overline{x}; винесено xx за дужки
9 x(yz)\overline{x}\vee(\overline{y}\vee\overline{z}) поглинання (2-га форма) xxW=xW\overline{x}\vee xW=\overline{x}\vee W, де W=yzW=\overline{y}\vee\overline{z}
10 xyz\overline{x}\vee\overline{y}\vee\overline{z} знято дужки

Отже,

F=xyz=xyz.F=\overline{x}\vee\overline{y}\vee\overline{z}=\overline{xyz}.

Зауваження (довший шлях зі слайда). Оригінальний слайд доходить до тієї самої відповіді з кроку 8 ланцюжком перетворень де Моргана, без явного поглинання:

xx(yz)=xx(yz)=x(xyz)=x(xyz)=xxxyz=xyz=xyz.\overline{x}\vee x(\overline{y}\vee\overline{z}) =\overline{\,x\wedge\overline{x(\overline{y}\vee\overline{z})}\,} =\overline{\,x\wedge(\overline{x}\vee\overline{\overline{y}\vee\overline{z}})\,} =\overline{\,x\wedge(\overline{x}\vee yz)\,} =\overline{\,x\overline{x}\vee xyz\,} =\overline{xyz} =\overline{x}\vee\overline{y}\vee\overline{z}.

Він правильний, але довший; упізнавання закону поглинання (крок 9 вище) згортає шість рядків в один. Саме тому нам потрібні систематичні методи: алгебрична вправність у різних людей різна, і немає гарантії, що ви побачили найкоротший шлях.

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

xx yy zz (xy)\overline{(x\vee\overline{y})} yz\overline{y}\vee\overline{z} xz\overline{x}z FF (вихідний) xyz\overline{xyz}
0 0 0 0 1 0 1 1
0 0 1 0 1 1 1 1
0 1 0 1 1 0 1 1
0 1 1 1 0 1 1 1
1 0 0 0 1 0 1 1
1 0 1 0 1 0 1 1
1 1 0 0 1 0 1 1
1 1 1 0 0 0 0 0

Алгебрична мінімізація діє завжди, проте не дає ані гарантії досягнення найменшої форми, ані правила зупинки — ніколи не певен, що вже завершив. Це мотивує систематичні методи, які справді знаходять найменшу дворівневу форму.


4.3 Канонічні форми: ДДНФ і ДКНФ

Мінімізації потрібна чітко визначена відправна точка. Її дають канонічні нормальні форми — стандартні вирази, побудовані прямо з таблиці істинності, по одному для кожної функції, єдині. Спершу — словник.

Означення (літерал). Літерал — це змінна або її заперечення (xx або x\overline{x}).

Означення (мінтерм, макстерм). Для набору значень a=(a1,,an){0,1}na=(a_1,\dots,a_n)\in\{0,1\}^n: мінтерм (конституента одиниці) — це кон’юнкція nn літералів, по одному на кожну змінну,

ma=i=1nxiai,xi1=xi,  xi0=xi;m_a=\bigwedge_{i=1}^{n} x_i^{a_i},\qquad x_i^{1}=x_i,\ \ x_i^{0}=\overline{x_i};

макстерм (конституента нуля) — це диз’юнкція nn літералів,

Ma=i=1nxi1aiM_a=\bigvee_{i=1}^{n} x_i^{\,1-a_i}

(змінна входить із запереченням там, де ai=1a_i=1, і без — де ai=0a_i=0: дзеркально до правила для мінтерма).

Уся теорія спирається на одну лему: кожен мінтерм «вмикається» рівно на одному рядку, а кожен макстерм «вимикається» рівно на одному рядку.

Твердження 4.3 (індикаторна властивість). Для всіх a,b{0,1}na,b\in\{0,1\}^n:

ma(b)=1    b=a,Ma(b)=0    b=a.m_a(b)=1\iff b=a,\qquad M_a(b)=0\iff b=a.

Доведення. Обчислимо літерал xiaix_i^{a_i} на наборі bb: якщо ai=1a_i=1, він дорівнює bib_i; якщо ai=0a_i=0, він дорівнює bi\overline{b_i}. В обох випадках літерал дорівнює 11 тоді й лише тоді, коли bi=aib_i=a_i. Мінтерм ma(b)m_a(b) — це кон’юнкція всіх nn літералів, тож він дорівнює 11 саме тоді, коли кожен літерал дорівнює 11, тобто коли bi=aib_i=a_i для всіх ii, тобто b=ab=a. Двоїсто, у MaM_a літерал xi1aix_i^{\,1-a_i} на наборі bb дорівнює 00 саме тоді, коли bi=aib_i=a_i; макстерм — це диз’юнкція цих літералів, отже Ma(b)=0M_a(b)=0 саме тоді, коли усі літерали дорівнюють 00, тобто знову b=ab=a. \blacksquare

Досконала диз’юнктивна нормальна форма (ДДНФ)

Означення (ДДНФ). Досконала диз’юнктивна нормальна форма функції FF — це диз’юнкція мінтермів усіх тих рядків, де F=1F=1.

Теорема 4.4 (існування та єдиність ДДНФ). Кожна булева функція f≢0f\not\equiv 0 дорівнює диз’юнкції мінтермів своїх одиничних рядків,

f=a:f(a)=1ma,f=\bigvee_{a:\,f(a)=1} m_a,

і це — єдиний спосіб записати ff як диз’юнкцію різних мінтермів.

Доведення. Існування. Нехай g=a:f(a)=1mag=\bigvee_{a:\,f(a)=1} m_a (непорожня диз’юнкція, бо f≢0f\not\equiv 0). Для довільного набору bb за Твердженням 4.3 доданок mbm_b дорівнює 11 саме тоді, коли f(b)=1f(b)=1, а всі інші мінтерми дорівнюють 00 на bb. Отже, g(b)=1    f(b)=1g(b)=1\iff f(b)=1, тобто g=fg=f. Єдиність. Нехай f=aSmaf=\bigvee_{a\in S}m_a для якоїсь множини наборів SS. Обчислимо на довільному bb: за Твердженням 4.3 єдиний доданок, що може бути ненульовим на bb, — це mbm_b, і він присутній саме тоді, коли bSb\in S. Тому f(b)=1    bSf(b)=1\iff b\in S, звідки S={b:f(b)=1}S=\{b:f(b)=1\} визначено однозначно. \blacksquare

Досконала кон’юнктивна нормальна форма (ДКНФ)

Означення (ДКНФ). Досконала кон’юнктивна нормальна форма функції FF — це кон’юнкція макстермів усіх тих рядків, де F=0F=0.

Теорема 4.5 (існування та єдиність ДКНФ). Кожна булева функція f≢1f\not\equiv 1 дорівнює

f=a:f(a)=0Ma,f=\bigwedge_{a:\,f(a)=0} M_a,

і це — єдиний її запис як кон’юнкції різних макстермів.

Доведення. За Твердженням 4.3 Ma(b)=0M_a(b)=0 саме тоді, коли b=ab=a. Отже, добуток h=a:f(a)=0Mah=\bigwedge_{a:\,f(a)=0}M_a дорівнює 00 на bb саме тоді, коли серед множників є MbM_b із f(b)=0f(b)=0, тобто коли f(b)=0f(b)=0; значить h=fh=f. Єдиність доводять як у Теоремі 4.4: обчислення на bb показує, що множник MbM_b присутній тоді й лише тоді, коли f(b)=0f(b)=0, тож множина макстермів визначена однозначно. \blacksquare

Приклад: F(A,B,C)F(A,B,C) зі слайда

Розгляньмо функцію трьох змінних, задану таблицею істинності:

AA BB CC FF № рядка
0 0 0 1 0
0 0 1 1 1
0 1 0 0 2
0 1 1 0 3
1 0 0 1 4
1 0 1 1 5
1 1 0 0 6
1 1 1 1 7

Будуємо ДДНФ. Одиничні рядки — це 0,1,4,5,70,1,4,5,7. Для кожного випишемо мінтерм (змінна без риски, якщо в рядку вона 11, і з рискою, якщо 00):

Таблиця істинності F(A,B,C): виділено рядки, де F=1 (мінтерми для ДДНФ)

F=ABC  ABC  ABC  ABC  ABC.F=\overline{A}\,\overline{B}\,\overline{C}\ \vee\ \overline{A}\,\overline{B}C\ \vee\ A\overline{B}\,\overline{C}\ \vee\ A\overline{B}C\ \vee\ ABC.

Позначаючи мінтерм десятковим номером його рядка, коротко пишуть F=m(0,1,4,5,7)F=\textstyle\bigvee m(0,1,4,5,7).

Будуємо ДКНФ. Нульові рядки — це 2,3,62,3,6. Для кожного випишемо макстерм (змінна з рискою, якщо в рядку вона 11, і без — якщо 00):

Таблиця істинності F(A,B,C): виділено рядки, де F=0 (макстерми для ДКНФ)

F=(ABC)(ABC)(ABC)=M(2,3,6).F=(A\vee\overline{B}\vee C)\,(A\vee\overline{B}\vee\overline{C})\,(\overline{A}\vee\overline{B}\vee C) =\textstyle\bigwedge M(2,3,6).

Зауваження (яка форма коротша). Рядки поділяються начисто: ДДНФ використовує одиничні рядки, ДКНФ — нульові, а разом їх 2n2^n. Тому #(мінтермів)+#(макстермів)=2n\#(\text{мінтермів})+\#(\text{макстермів})=2^{n}. Функція, що переважно дорівнює 11, має довгу ДДНФ і коротку ДКНФ, і навпаки — розкладайте навколо того значення, яке трапляється рідше. Для нашого FF: 55 мінтермів проти 33 макстермів, тож ДКНФ компактніша.

Типова помилка (полярність літералів протилежна). У мінтермі (одиничний рядок) змінна, що дорівнює 11, входить без риски; у макстермі (нульовий рядок) змінна, що дорівнює 11, входить із рискою. Переплутати ці полярності — найпоширеніша похибка; за сумніву перевиведіть правило з Твердження 4.3, а не завчайте.

Зауваження (поліном Жегалкіна). Існує й третя канонічна форма — алгебрична нормальна форма (поліном Жегалкіна), що використовує XOR замість диз’юнкції. Кожна функція єдиним чином подається як

f=c0c1x1cnxnc12x1x2c1nx1xn,ci{0,1}.f=c_0\oplus c_1x_1\oplus\cdots\oplus c_nx_n\oplus c_{12}x_1x_2\oplus\cdots\oplus c_{1\ldots n}x_1\cdots x_n,\qquad c_i\in\{0,1\}.

До неї переходять заміною a=a1\overline{a}=a\oplus 1 та ab=ababa\vee b=a\oplus b\oplus ab з подальшим спрощенням (aa=0a\oplus a=0, aa=aaa=a). Ця форма природна для задач парності та контрольних сум (згадана мікросхема CY54FCT480T).


4.4 Мінімальні форми (МДНФ, МКНФ)

Канонічні форми єдині, але зазвичай далекі від найкоротших. Тому вводять мінімальні форми та відповідний словник.

Означення (ДНФ, КНФ). Диз’юнктивна нормальна форма (ДНФ) — це диз’юнкція елементарних кон’юнкцій (добутків літералів), як-от BAC\overline{B}\vee AC. Кон’юнктивна нормальна форма (КНФ) — кон’юнкція елементарних диз’юнкцій (сум літералів). ДДНФ і ДКНФ — це часткові випадки, у яких кожен доданок містить усі змінні.

Означення (імпліканта, проста імпліканта). Добуток літералів pp називають імплікантою функції ff, якщо pfp\le f (тобто з p=1p=1 випливає f=1f=1). Імпліканту називають простою, якщо з неї не можна викреслити жодного літерала, зберігши властивість імпліканти. Суттєвою називають просту імпліканту, що покриває хоча б один одиничний набір, не покритий жодною іншою простою імплікантою.

Означення (МДНФ, МКНФ). Мінімальна диз’юнктивна нормальна форма (МДНФ) — це ДНФ функції з найменшою можливою сумарною «вартістю» (найменше число доданків, а за рівності — літералів). Аналогічно мінімальна кон’юнктивна нормальна форма (МКНФ) — найдешевша КНФ.

Мінімальна ДНФ — це найменший набір простих імплікант, що покриває всі одиниці; він обов’язково містить кожну суттєву просту імпліканту, а решту одиниць покриває найдешевше. Систематичний спосіб усе це знайти для функцій до 4455 змінних — карти Карно.


4.5 Карти Карно

Означення (карта Карно). Карта Карно — це таблиця істинності, перемальована у вигляді ґратки, рядки й стовпці якої підписані в порядку коду Грея 00,01,11,1000,01,11,10: сусідні підписи (зокрема й «замикання» останнього з першим) різняться рівно в одному біті.

Код Грея (2 біти) і порожній шаблон карти на 4 змінні

Саме таке підписування — весь сенс карти.

Твердження 4.6 (сусідство == зміна однієї змінної). За підписів кодом Грея дві клітини, що мають спільну сторону — або лежать на протилежних кінцях одного рядка чи стовпця («замикання»), — відповідають наборам, що різняться рівно в одній змінній.

Доведення. Горизонтальний перехід змінює лише підпис стовпця на один крок коду Грея, а це перемикає рівно одну зі «стовпцевих» змінних і лишає незмінними змінні рядка (та решту стовпцевих). Вертикальний перехід робить те саме для змінних рядка. Код Грея циклічний — для двох бітів 100010\to 00 теж різняться в одному біті, — тому перший і останній рядки (стовпці) також сусідні, що обґрунтовує «замикання». \blacksquare

За законом склеювання дві сусідні одиничні клітини, що різняться змінною vv, зливаються: (решта)v  (решта)v=(решта)(\text{решта})\,v\ \vee\ (\text{решта})\,\overline{v}=(\text{решта}). Повторюючи, блок із 2k2^k клітин, що утворює підкуб (де kk вибраних змінних пробігають усі комбінації, а решта nkn-k лишаються сталими), згортається в один добуток з nkn-k сталих літералів.

Теорема 4.7 (склеювання на карті). Блок із 2k2^k клітин, що утворює підкуб, відповідає добутку pp своїх nkn-k сталих літералів (стала 11 — змінна без риски, стала 00 — з рискою). Цей pp є імплікантою функції ff тоді й лише тоді, коли всі 2k2^k клітин містять 11.

Доведення. За побудовою p=1p=1 саме на 2k2^k клітинах підкуба: вільні змінні необмежені, а сталі літерали фіксують решту. Тоді pfp\le f означає, що f=1f=1 у кожній точці, де p=1p=1, тобто що всі ці клітини містять 11. Розмір блоку — степінь двійки, бо kk бінарних змінних дають 2k2^k комбінацій. \blacksquare

Отже, групування одиниць у найбільші законні підкуби прямо дає короткі добутки. Форми шаблонів (порожні клітини):

Дві змінні — рядки xx, стовпці yy:

x\yx\backslash y 0 1
0
1

Три змінні — рядки xx, стовпці yzyz у коді Грея:

x\yzx\backslash yz 00 01 11 10
0
1

Чотири змінні — рядки xyxy, стовпці ztzt, обидві осі в коді Грея:

xy\ztxy\backslash zt 00 01 11 10
00
01
11
10

Типова помилка. Не підписуйте осі 00,01,10,1100,01,10,11 (звичайний двійковий порядок). Між 0101 і 1010 змінюються два біти, тож такі «сусіди» не є логічно сусідніми і закон склеювання не діє. Порядок Грея 00,01,11,1000,01,11,10 обов’язковий. Так само групи мають бути прямокутниками розміру степеня двійки (1,2,4,8,1,2,4,8,\dots); «кутик» чи група з трьох клітин недопустимі.

Приклад 1 — МДНФ трьох змінних

Візьмемо F(A,B,C)=m(0,1,4,5,7)F(A,B,C)=\bigvee m(0,1,4,5,7) із §4.3. Рядки — AA, стовпці — BCBC:

Карта Карно 3 змінних для F(A,B,C): групи ¬B та AC дають МДНФ ¬B∨AC

  • Ліва половина (стовпці BC=00,01BC=00,01, обидва рядки) — чотири сусідні одиниці, у яких сталою є лише B=0B=0, тобто B\overline{B}. Ця проста імпліканта суттєва (тільки вона покриває клітини при BC=00BC=00).
  • Дві одиниці при (A=1, BC=01)(A{=}1,\ BC{=}01) і (A=1, BC=11)(A{=}1,\ BC{=}11) мають спільні A=1, C=1A=1,\ C=1, тобто ACAC. Суттєва, бо клітину при BC=11BC=11 (мінтерм 77) не покриває жодна інша група.

Разом вони покривають усі одиниці (клітину при A=1,BC=01A{=}1, BC{=}01 поділено, що дозволено), даючи МДНФ

F=BAC.F=\overline{B}\vee AC.

Це різко коротше за п’ятимінтермну ДДНФ (яку ми виписали в §4.3).

Приклад 2 — замикання країв

Нехай G(A,B,C)=m(0,2,4,6)G(A,B,C)=\bigvee m(0,2,4,6) (усі парні рядки). Рядки — AA, стовпці — BCBC:

A\BCA\backslash BC 00 01 11 10
0 1 0 0 1
1 1 0 0 1

Чотири одиниці стоять у стовпцях BC=00BC=00 і BC=10BC=10першому й останньому, які сусідні через замикання. Усі вони мають спільне C=0C=0, тож утворюють одну законну групу розміру 44:

G=C.G=\overline{C}.

Без замикання довелося б хибно розбити її на дві групи розміру 22 (AC\overline{A}\,\overline{C} і ACA\overline{C}), а потім склеювати їх алгебрично. Замикання дає змогу карті одразу знайти найбільшу групу.

Приклад 3 — МДНФ і МКНФ чотирьох змінних (зі слайда)

Розгляньмо функцію F(x,y,z,t)F(x,y,z,t), задану вісьмома мінтермами (запис зі слайда):

xyztxyztxyztxyztxyztxyztxyztxyzt.xyz\overline{t}\vee x\overline{y}zt\vee\overline{x}yzt\vee\overline{x}\,\overline{y}zt\vee x\overline{y}\,\overline{z}t\vee\overline{x}\,\overline{y}\,\overline{z}t\vee x\overline{y}\,\overline{z}\,\overline{t}\vee\overline{x}\,\overline{y}\,\overline{z}\,\overline{t}.

Нанесемо кожен мінтерм на карту (рядки xyxy, стовпці ztzt):

xy\ztxy\backslash zt 00 01 11 10
00 1 1 1 0
01 0 0 1 0
11 0 0 0 1
10 1 1 1 0

МДНФ (групуємо одиниці).

Карта Карно 4 змінних: покриття одиниць чотирма групами дає МДНФ

  • Рядки xy=00xy=00 і xy=10xy=10 (сусідні через замикання, обидва мають y=0y=0) ×\times стовпці zt=00,01zt=00,01 (z=0z=0): блок 2×22\times2 yz\Rightarrow \overline{y}\,\overline{z}.
  • Ті самі два рядки (y=0y=0) ×\times стовпці zt=01,11zt=01,11 (t=1t=1): блок 2×22\times2 yt\Rightarrow \overline{y}t.
  • Стовпець zt=11zt=11, рядки xy=00,01xy=00,01 (x=0x=0): вертикальна пара xzt\Rightarrow \overline{x}zt (суттєва — лише вона покриває клітину (01,11)(01,11)).
  • Ізольована клітина xy=11, zt=10xy=11,\ zt=10 не розширюється (усі сусіди — нулі), тож лишається повним мінтермом xyzt\Rightarrow xyz\overline{t} (суттєва).

FМДНФ=yz  yt  xzt  xyzt.F_{\text{МДНФ}}=\overline{y}\,\overline{z}\ \vee\ \overline{y}t\ \vee\ \overline{x}zt\ \vee\ xyz\overline{t}.

МКНФ (групуємо нулі). Щоб отримати мінімальну КНФ, групуємо нулі й читаємо кожен блок як макстерм: змінні, сталі на блоці, беремо з рискою там, де змінна =1=1, і без — де =0=0 (Теорема 4.7 із протилежною полярністю, бо група нулів — це проста імпліканта функції F\overline{F}).

Карта Карно 4 змінних: покриття нулів чотирма групами дає МКНФ

  • Рядки xy=01,11xy=01,11 (y=1y=1) ×\times стовпці zt=00,01zt=00,01 (z=0z=0): блок 2×22\times2 (yz)\Rightarrow (\overline{y}\vee z).
  • Рядок xy=11xy=11 (x=1,y=1x=1,y=1) ×\times стовпці zt=01,11zt=01,11 (t=1t=1): пара (xyt)\Rightarrow (\overline{x}\vee\overline{y}\vee\overline{t}).
  • Стовпець zt=10zt=10 (z=1,t=0z=1,t=0), рядки xy=00,01xy=00,01 (x=0x=0): пара (xzt)\Rightarrow (x\vee\overline{z}\vee t).
  • Стовпець zt=10zt=10 (z=1,t=0z=1,t=0), рядки xy=00,10xy=00,10 (y=0y=0, через замикання): пара (yzt)\Rightarrow (y\vee\overline{z}\vee t).

FМКНФ=(yz)(xyt)(xzt)(yzt).F_{\text{МКНФ}}=(\overline{y}\vee z)\,(\overline{x}\vee\overline{y}\vee\overline{t})\,(x\vee\overline{z}\vee t)\,(y\vee\overline{z}\vee t).

Обидва записи описують ту саму функцію; форма ДНФ дешевша, коли одиниці збиваються в купки, а КНФ — коли купкуються нулі.

Невизначені стани (don’t-care)

Часто деякі комбінації входів не можуть трапитися або їхній вихід байдужий. Такі рядки називають невизначеними (don’t-care) і позначають ×\times. Невизначену клітину можна трактувати як 11 або як 00 — незалежно для кожної групи, як вигідніше, щоб групи були більшими. Покрити треба всі справжні одиниці, але жодну ×\times покривати не зобов’язані.

Приклад 4 — двійково-десятковий код. Входи A,B,C,DA,B,C,D кодують десяткову цифру 8A+4B+2C+D8A+4B+2C+D; комбінації 10101515 у такому коді неможливі, тож вони невизначені. Нехай F=1F=1 саме тоді, коли цифра 5\ge 5, тобто на мінтермах {5,6,7,8,9}\{5,6,7,8,9\} з ×\times на {10,,15}\{10,\dots,15\}. Рядки — ABAB, стовпці — CDCD:

AB\CDAB\backslash CD 00 01 11 10
00 0 0 0 0
01 0 1 1 1
11 ×\times ×\times ×\times ×\times
10 1 1 ×\times ×\times

Використовуючи ×\times як 11 там, де це допомагає:

  • уся нижня половина A=1A=1 (рядки 11,1011,10) може бути одиничною (справжні 11 на 8,98,9, решта — ×\times): група з 88 клітин A\Rightarrow A;
  • рядки 01,1101,11 (B=1B=1) ×\times стовпці 01,1101,11 (D=1D=1): 2×2BD2\times2 \Rightarrow BD;
  • рядки 01,1101,11 (B=1B=1) ×\times стовпці 11,1011,10 (C=1C=1): 2×2BC2\times2 \Rightarrow BC.

FМДНФ=ABCBD(3 доданки, 5 літералів).F_{\text{МДНФ}}=A\vee BC\vee BD\qquad(3\text{ доданки},\ 5\text{ літералів}).

Якби ми змусили кожну невизначеність дорівнювати 00, та сама функція звелася б до ABCABDABC\overline{A}BC\vee\overline{A}BD\vee A\overline{B}\,\overline{C} (3 доданки, аж 9 літералів) — помітно дорожче. Використання невизначеностей — один із найбільших практичних виграшів у синтезі логіки.

Історична довідка. Алгебру логіки створив Джордж Буль («Математичний аналіз логіки», 1847). Її застосування до схем належить Клоду Шеннону, чия магістерська праця 1937 р. показала, що булева алгебра точно описує — і спрощує — мережі реле та перемикачів; це заснувало цифрову техніку. Що одного зв’язкового досить, зауважив близько 1880 р. Чарлз Пірс (стрілка \downarrow), а Генрі Шеффер довів це друком 1913 р. для штриха \uparrow. Карту, якою ми користуємося, запропонував Едвард Вейч (1952) і вдосконалив Моріс Карно (1953, Bell Labs).

Практичні правила карт Карно.

  • Групи — прямокутники розміру степеня двійки; дозволене замикання через усі чотири краї (і чотири кути).
  • Беріть найбільші законні групи (більша група \Rightarrow менше літералів) і найменше число груп, що покривають усі цільові клітини.
  • Спершу виявляйте суттєві прості імпліканти (одиниця, яку може покрити лише одна група, змушує взяти цю групу), потім найдешевше покривайте решту.
  • Групи можуть перекриватися; кожна одиниця (для ДНФ) чи кожен нуль (для КНФ) має потрапити принаймні в одну групу.
  • Карти читні до 4455 змінних; далі застосовують табличний метод Квайна—Мак-Класкі.

4.6 Побудова логічних схем

Формула перекладається у мережу вентилів механічно: кожна операція стає вентилем, кожна змінна — вхідним провідником, а з’єднання йдуть за вкладеністю виразу. Заперечені входи створюють інвертори.

Схема за МДНФ

Диз’юнктивна форма (сума добутків) читається зліва направо як дворівнева схема: шар елементів І, чиї виходи подано на один елемент АБО, а інвертори постачають заперечені літерали. Візьмемо F=BACF=\overline{B}\vee AC (МДНФ із §4.5):

  • інвертор дає B\overline{B} з BB;
  • двовходовий елемент І дає ACAC з A,CA,C;
  • двовходовий елемент АБО об’єднує B\overline{B} та ACAC у FF.

Логічна схема МДНФ F = ¬B ∨ AC на елементах НЕ, І, АБО

Кількість вентилів: 11 НЕ + 1+\ 1 І + 1+\ 1 АБО = 3=\ 3. Порівняймо з прямою реалізацією п’ятимінтермної ДДНФ:

Показник ДДНФ m(0,1,4,5,7)\bigvee m(0,1,4,5,7) МДНФ BAC\overline{B}\vee AC
Добутків (елементів І) 5 (тривходові) 1 (двовходовий)
Літералів 15 3
Інверторів (НЕ) 3 1
Елементів АБО 1 (п’ятивходовий) 1 (двовходовий)
Усього вентилів 9 3

Мінімізація скоротила число вентилів утричі без втрати швидкодії (обидві схеми дворівневі). Помножте таку економію на мільйони примірників стандартної комірки в сучасному кристалі — і мотивація §§4.2–4.5 стає очевидною: алгебра і є проєкт, а менша алгебра — менший, швидший і холодніший кристал.

Схема за МКНФ

Кон’юнктивна форма (добуток сум) двоїсто читається як шар елементів АБО, що подають на один елемент І. Для FF з §4.5 МКНФ (yz)(xyt)(xzt)(yzt)(\overline{y}\vee z)(\overline{x}\vee\overline{y}\vee\overline{t})(x\vee\overline{z}\vee t)(y\vee\overline{z}\vee t) дає чотири елементи АБО (на 2233 входи) та один чотиривходовий елемент І, плюс інвертори для заперечених літералів.

Переписування у базис ТА-НІ (NAND)

Оскільки \uparrow функціонально повний (Твердження 4.1), будь-яку дворівневу схему І–АБО можна перемалювати як мережу з самих лише ТА-НІ тієї самої форми. Прийом: на кожен провідник між шаром І та шаром АБО додають два кружечки (подвійне заперечення, що не змінює значення). Елементи І дістають кружечок на виході й стають ТА-НІ; елемент АБО дістає кружечки на входах і за законом де Моргана також стає ТА-НІ. Коротко: І-потім-АБО перетворюється на ТА-НІ-потім-ТА-НІ.

Для F=BACF=\overline{B}\vee AC це дає надзвичайно компактний запис. За законом де Моргана

F=BAC=BAC=BAC=B(AC),F=\overline{B}\vee AC=\overline{\,B\wedge\overline{AC}\,}=B\uparrow\overline{AC}=B\uparrow(A\uparrow C),

бо AC=ACA\uparrow C=\overline{AC}. Отже, вистачає двох двовходових елементів ТА-НІ (а B\overline{B} окремо породжувати не треба — його «постачає» другий вентиль):

Та сама функція у базисі ТА-НІ: F = B ↑ (A ↑ C) на двох елементах NAND

Переписування у базис АБО-НІ (NOR)

Двоїсто, будь-яку схему АБО–І (за МКНФ) переписують у самі лише елементи АБО-НІ: АБО-потім-І перетворюється на АБО-НІ-потім-АБО-НІ. Знайдімо спершу МКНФ нашого F=BACF=\overline{B}\vee AC, згрупувавши нулі на його карті (§4.5, приклад 1): F=(AB)(BC)F=(A\vee\overline{B})(\overline{B}\vee C). Тоді за Наслідком 4.2

F=(AB)(BC)= AB  BC =(AB)  (BC),F=(A\vee\overline{B})\wedge(\overline{B}\vee C) =\overline{\ \overline{A\vee\overline{B}}\ \vee\ \overline{\overline{B}\vee C}\ } =(A\downarrow\overline{B})\ \downarrow\ (\overline{B}\downarrow C),

де заперечення B\overline{B} у базисі АБО-НІ дає сам вентиль B=BB\overline{B}=B\downarrow B. Так функцію реалізовано лише елементами АБО-НІ.

Зауваження (чому це зручно). На платі вже може бути встановлений корпус із вентилями ТА-НІ або АБО-НІ, і немає потреби додавати інші типи. До того ж у КМОН (§4.1) елементи \uparrow і \downarrow дешевші за І та АБО. Головний висновок: спершу мінімізуйте алгебру, бо кожен усунутий літерал і кожен усунутий доданок — це вентилі, транзистори, площа, затримка й енергія, яких ви ніколи не збудуєте.


Застосування у видавництві та поліграфії

Логічні схеми та їх мінімізація прямо обслуговують завдання фаху:

  • Керування друкарським обладнанням. Логіка блокувань і послідовностей у друкарській машині (папір на місці І фарба готова І захист знято) — це булеві вирази; їх реалізують у програмованих логічних контролерах саме як мінімізовані форми сум добутків.
  • Контроль парності при передачі. Під час передавання растрових даних до друкувального пристрою біти захищають контролем парності — деревом елементів XOR (згадана мікросхема CY54FCT480T). Це виявляє поодинокі помилки в потоці.
  • Растровий процесор (RIP). Порогові та логічні операції над бітовими площинами кольороподілу (CMYK) — кон’юнкції та диз’юнкції масок; мінімізація зменшує обсяг обчислень на піксель.
  • Вбудовані контролери. У ризографах, принтерах і фальцювальних автоматах менша логічна схема означає менше енергоспоживання й нижчу ціну керуючого мікроконтролера.
  • Умовне складання документів. Правила «показати блок, якщо (є знижка АБО статус VIP) І НЕ чернетка» у системах верстки — булеві функції, які варто спрощувати задля читності та швидкості.

Підсумок

  • Логічний елемент (вентиль) — фізичний пристрій, що обчислює одну булеву операцію; основні: І, АБО, НЕ, ТА-НІ, АБО-НІ, XOR. Кружечок на позначенні означає заперечення. У КМОН елементи будують з комплементарних n- і p-транзисторів.
  • Штрих Шефера AB=ABA\uparrow B=\overline{A\wedge B} та стрілка Пірса AB=ABA\downarrow B=\overline{A\vee B} кожен функціонально повні (Твердження 4.1, Наслідок 4.2): A=AA=AA\overline{A}=A\uparrow A=A\downarrow A тощо.
  • Алгебрична мінімізація застосовує тотожності (склеювання, поглинання, де Морган) — потужна, але без правила зупинки.
  • Канонічні форми читаються з таблиці: ДДНФ == сума мінтермів по одиничних рядках, ДКНФ == добуток макстермів по нульових; обидві існують і єдині (Теореми 4.4–4.5). Полярності мінтерма й макстерма протилежні.
  • Мінімальні форми (МДНФ, МКНФ) — найдешевші дворівневі записи; будуються з простих імплікант, серед яких обов’язкові — суттєві.
  • Карта Карно використовує код Грея, щоб сусідство означало зміну однієї змінної (Твердження 4.6); групування одиниць у підкуби степеня двійки (Теорема 4.7) дає МДНФ, групування нулів — МКНФ. Дозволене замикання країв.
  • Схему будують за МДНФ (І–АБО) чи МКНФ (АБО–І) і переписують у базис ТА-НІ (І–АБО \to ТА-НІ–ТА-НІ) або АБО-НІ (АБО–І \to АБО-НІ–АБО-НІ). Мінімізація економить вентилі, транзистори, площу, енергію та затримку.

Вправи

Для розігріву

  1. Побудуйте таблиці істинності елементів ТА-НІ та АБО-НІ й переконайтеся, що AB=ABA\uparrow B=\overline{A\wedge B} і AB=ABA\downarrow B=\overline{A\vee B}.
  2. Скориставшись лише елементами ТА-НІ, зберіть: (а) інвертор; (б) двовходовий І. Скільки вентилів у кожному випадку?
  3. Для набору (A,B,C)=(1,0,1)(A,B,C)=(1,0,1) випишіть: (а) його мінтерм; (б) його макстерм. Зверніть увагу на протилежну полярність.
  4. Чому стовпці карти Карно підписують 00,01,11,1000,01,11,10, а не 00,01,10,1100,01,10,11? Наведіть пару двобітових підписів, які за неправильного порядку стали б «сусідніми» помилково.
  5. Спростіть одним законом кожен вираз: (а) AABA\vee AB; (б) A(AB)A(A\vee B); (в) AAB\overline{A}\vee AB.

Стандартні

  1. Для F(A,B,C)=m(0,2,5,7)F(A,B,C)=\bigvee m(0,2,5,7) запишіть ДДНФ як вираз і ДКНФ як список M()\bigwedge M(\dots).
  2. Доведіть, що AB=ABA\wedge B=\overline{\overline{A}\vee\overline{B}}, і поясніть, чому звідси випливає функціональна повнота набору {,  }\{\vee,\overline{\ \cdot\ }\}.
  3. Мінімізуйте F(A,B,C)=m(0,1,2,3,4,5)F(A,B,C)=\bigvee m(0,1,2,3,4,5) картою Карно; подайте результат через іменовану операцію двох змінних.
  4. Мінімізуйте F(A,B,C,D)=m(1,3,5,7,9,11,13,15)F(A,B,C,D)=\bigvee m(1,3,5,7,9,11,13,15). (Спершу подивіться на таблицю, а тоді рахуйте.)
  5. Для МДНФ F=BACF=\overline{B}\vee AC: намалюйте схему на елементах НЕ, І, АБО, полічіть вентилі; тоді перепишіть її у базис ТА-НІ й порівняйте кількість вентилів.
  6. Побудуйте ДДНФ і ДКНФ функції F(A,B,C)=m(0,1,4,5,7)F(A,B,C)=\bigvee m(0,1,4,5,7) (наш приклад із §4.3) і перевірте, що множини {0,1,4,5,7}\{0,1,4,5,7\} та {2,3,6}\{2,3,6\} разом дають усі рядки {0,,7}\{0,\dots,7\}.

Підвищеної складності

  1. Доведіть двоїсту до Твердження 4.1 частину — що стрілка Пірса функціонально повна, — перевіривши всі три тотожності Наслідку 4.2.
  2. Виразіть ABA\oplus B (виключне «або») лише через елементи АБО-НІ й полічіть вентилі. (Підказка: AB=ABABA\oplus B=A\overline{B}\vee\overline{A}B; або спершу дістаньте   ,,\overline{\ \cdot\ },\wedge,\vee зі стрілки Пірса.)
  3. Функція чотирьох змінних дорівнює 11 на наборах {2,3,7,9,11,13}\{2,3,7,9,11,13\} і має невизначені значення (можна брати як завгодно) на {1,10,15}\{1,10,15\}, а на решті 00. Мінімізуйте її як ДНФ картою Карно, скориставшись невизначеностями, щоб збільшити групи.
  4. Доведіть, що 2n2^n мінтермів nn змінних утворюють розбиття множини {0,1}n\{0,1\}^n (кожен набір задовольняє рівно один мінтерм), і виведіть звідси ama1\bigvee_{a} m_a\equiv 1.
  5. Розгляньте функцію, задану на карті чотирьох змінних, у якій одиниці розташовані «в шаховому порядку» (немає двох сусідніх одиниць). Скільки груп матиме її МДНФ і чому карти Карно тут не дають виграшу? Зв’яжіть відповідь із поняттям простої імпліканти.

Lectures/ODM-L04.md · 63.4 KB · updated 2026-08-04 15:45