DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Методичні вказівки щодо використання функцій алгебри логіки та мінімізації цих функцій у базисі Буля. Частина 2

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра прикладної математики

Інформація про роботу

Рік:
2015
Тип роботи:
Методичні вказівки
Предмет:
Дискретна математика
Група:
КН-1
Коротко про документ

Про що ця робота

У методичних вказівках розглянуто функціональну повноту систем функцій алгебри логіки та побудову поліномів Жегалкіна. Також описано методи мінімізації булевих функцій за допомогою алгоритму Квайна-Маккласкі та карт Карно.

У роботі розглядаються

  • Функціональна повнота
  • Алгебра логіки
  • Поліном Жегалкіна
  • Мінімізація булевих функцій
  • Метод Квайна-Маккласкі
  • Карти Карно
  • Сполучні терми

Зміст і розділи

  1. Функціональна повнота системи функцій алгебри логіки і наборів логічних елементів
  2. Мінімізація функцій методом Квайна-Маккласкі-Петрика
  3. Мінімізація функцій за допомогою карт Карно
  4. Визначення сполучного терма
Для кого:Студенти технічних спеціальностей закладів вищої освіти, які вивчають дискретну математику та теорію логічних схем.
Викладачі:Колектив кафедри

Ключові поняття

функція алгебри логікифункціонально повна системаполіном Жегалкінапроста імплікантамінімальна диз'юнктивна нормальна формакон'юнктивна нормальна формакарти Карноефект гоноксполучний термбазис Буля

Частина тексту файла (без зображень, графіків і формул):

Частина 2. Методичні вказівки щодо використання функцій алгебри логіки та мінімізації цих функцій у базисі Буля 2.1 Функціональна повнота системи функцій алгебри логіки і наборів логічних елементів Основна вимога, яка ставиться до набору логічних елементів, полягає в тому, щоб за допомогою цього набору можна було побудувати будь-яку логічну схему. З огляду на те, що функціонування елементів однозначно описується функціями алгебри логіки (ФАЛ), застосовуючи операцію суперпозиції, можна з деякої системи ФАЛ отримати будь-яку, скільки завгодно складну ФАЛ. Тоді ця деяка система ФАЛ буде називатися функціонально повною (ФПС ФАЛ). Функціонально повним є такий набір ФАЛ, який містить хоча б одну функцію, яка: не зберігає константу "0"; не зберігає константу "1"; не є монотонною; не є самодвоїстою; не є лінійною. Якщо функція F на нульовому наборі змінних дорівнює 0, тобто F(0,0,...,0)=0, то ця функція зберігає константу "0". Таблиця 2.1.1 ┌──┬────┬────────────────┬──────────────┬─────────┐ │х0 │0011│Назва ФАЛ │ Вираз ФАЛ │ Клас │ │х1 │0101│ │ ├─┬─┬─┬─┬─┤ │ │ │ │ │0│1│Л│М│С│ ├──┼────┼────────────────┼──────────────┼─┼─┼─┼─┼─┤ │F0 │0000│константа "0" │0 │X│ │X│X│ │ │F1 │0001│кон'юнкція, І │х0·х1 │X│Х│ │X│ │ │F2 │0010│заборона по х1 │х0·/х1 │X│ │ │ │ │ │F3 │0011│х0 │х0 │X│Х│Х│Х│Х│ │F4 │0100│заборона по х0 │/х0·х1 │X│ │ │ │ │ │F5 │0101│х1 │х1 │X│Х│Х│Х│Х│ │F6 │0110│сума за mod 2 │х0·/х1 v /х0·х1│X│ │Х│ │ │ │F7 │0111│диз'юнкція, АБО │х0 v х1 │X│Х│ │Х│ │ │F8 │1000│АБО-НЕ (Пірса) │/(х0 v х1) │ │ │ │ │ │ │F9 │1001│рівнозначність │х0·х1 v /х0·/х1│ │Х│Х│ │ │ │F10│1010│інверсія х1 │/х1 │ │ │Х│ │Х│ │F11│1011│імплікація звор.│х0 v /х1 │ │Х│ │ │ │ │F12│1100│інверсія х0 │/х0 │ │ │Х│ │Х│ │F13│1101│імплікація пряма│/х0 v х1 │ │Х│ │ │ │ │F14│1110│І-НЕ (Шефера) │/(х0·х1) │ │ │ │ │ │ │F15│1111│константа "1" │1 │ │Х│Х│Х│ │ └──┴────┴────────────────┴──────────────┴─┴─┴─┴─┴─┘ Якщо функція F на одиничному наборі змінних дорівнює 1, тобто F(1,1,...,1)=1, то ця функція зберігає константу "1". ФАЛ називається монотонною, якщо при будь-якому зростанні кількості "1" у послідовності сусідніх (тобто таких, які відрізняються тільки в одному розряді) наборів змінних (х0,х1,...,xn) значення функції не зменшується. ФАЛ називається самодвоїстою, якщо на кожній парі протилежних наборів (x0,x1,...,xn) та (/x0,/x1,...,/xn) вона приймає протилежні значення, тобто, якщо виконується умова F(x0,x1,...,xn) = /F(/x0,/x1,...,/xn), де знаком "/" позначена операція інверсії. ФАЛ називається лінійною, якщо її можна зобразити поліномом Жегалкіна без добутків змінних F(x0,x1,...,xn) = a0·x0 # a1·x1 # ... # an·xn, де ai = (0, 1); · - позначення операції І; Таблиця 2.1.2 ┌───┬─┐ │abc│f│ ├───┼─┤ │000│1│ │001│0│ │010│1│ │011│1│ │100│0│ │101│0│ │110│1│ │111│0│ └───┴─┘ # - позначення операції "додавання за модулем 2". Для того щоб записати функцію, яка задана таблично, у вигляді полінома Жегалкіна, досить записати цю функцію у вигляді суми за модулем 2 тих наборів аргументів, на яких функція дорівнює 1. Після цього потрібно всі змінні, які входять до отриманого виразу з інверсіями, замінити за допомогою співвідношення /х = х # 1, розкрити дужки і звести подібні члени за допомогою тотожності х # х # ... # х = х, якщо кількість х непарна; х # х # ... # х = 0, якщо кількість х парна. У табл. 2.1.1 наведені функції двох змінних і вказаний клас кожної ФАЛ. У графі "Клас" позначено: 0 - зберігає константу "0"; 1 - зберігає константу "1"; Л - лінійна; М - монотонна; С - самодвоїста. Приклад 2.1.1. Перевірити, чи створює функція трьох змінних, яка задана табл. 2.1.2, функціонально повну систему. 1) Оскільки на нульовому наборі f(0,0,0) = 1, то ця функція не зберігає константу "0". 2) Оскільки на одиничному наборі f(1,1,1) = 0, то ця функція не зберігає константу "1". 3) Послідовності сусідніх наборів подані в табл. 2.1.3 а, б, в, г, д, е. Оскільки на всіх шести послідовностях сусідніх наборів функція не є монотонною (а досить було б і на одному), то функція не є монотонною взагалі. 4) Пари протилежних наборів наведені в табл. 2.1.4. Оскільки на кожній парі протилежних наборів функція приймає протилежні значення, то функція є самодвоїстою. 5) Для визначення лінійності функції подамо її у вигляді полінома Жегалкіна F = /a·/b·/c # /a·b·/c # /a·bc # ab·/c = =(1#a)(1#b)(1#c) # (1#a)b(1#c) # (1#a)bc # ab(1#c) = =(1#a)(1#b#c#bc) # b(1#a#c#ac) # (bc # abc) # (ab # abc) = =(1 # b # c # bc # a # ab # ac # abc) # (b # ab # bc # abc) # (bc # Таблиця 2.1.3 ┌───┬─┐┌───┬─┐┌───┬─┐┌───┬─┐┌───┬─┐┌───┬─┐ │abc│f││abc│f││abc│f││abc│f││abc│f││abc│f│ ├───┼─┤├───┼─┤├───┼─┤├───┼─┤├───┼─┤├───┼─┤ │000│1││000│1││000│1││000│1││000│1││000│1│ │001│0││001│0││010│1││010│1││100│0││100│0│ │011│1││101│0││011│1││110│1││101│0││110│1│ │111│0││111│0││111│0││111│0││111│0││111│0│ └───┴─┘└───┴─┘└───┴─┘└───┴─┘└───┴─┘└───┴─┘ а б в г д е # abc) # (ab # abc) = = 1 # ( = 1) # a # ( = a) # b # b # ( = 0) # c # ( = c) # ab # ab # ab # ( = ab) # ac # ( = ac) # bc # bc # bc # ( = bc) # abc # abc # abc # abc = ( = 0) = 1 # a # c # ab # ac # bc. Таблиця 2.1.4 ┌─────┬───┬─────┬───┐ │ abc │ f │ abc │ f │ ├─────┼───┼─────┼───┤ │ 000 │ 1 │ 111 │ 0 │ │ 001 │ 0 │ 110 │ 1 │ │ 010 │ 1 │ 101 │ 0 │ │ 011 │ 1 │ 100 │ 0 │ └─────┴───┴─────┴───┘ Оскільки поліном містить добутки змінних, то функція не є лінійною. Отже, із п'яти необхідних для створення ФПС властивостей відсутня одна - несамодвоїстість, тому дана функція не утворює ФПС. 2.2. Мінімізація функцій методом Квайна-МакКласкі-Петрика Метод складається з двох частин. 1. Побудова простих імплікант. Логічна функція g(a,b,...,x) називається імплікантою логічної функції f(a,b,...,x), якщо f(a,b,...,x) & g(a,b,...,x) = g(a,b,...,x). Таблиця Таблиця 2.2.2 2.2.1 ┌─────────┬──────────────┬──────────┐ ┌────┬─┐│ I │ II │ III │ │abcd│f│├────┬──┬─┼────┬────┬──┬─┼────┬─────┤ ├────┼─┤│ К │П │У│ С │ К │П │У│ С │ К │ │0000│1│├────┼──┼─┼────┼────┼──┼─┼────┼─────┤ │0001│1││0000│a0 │+│a0b0 │000-│e0 │+│e0f3 │-00-│ │0010│0│├────┼──┼─┤a0b1 │0-00│e1 │+│e1f5 │--00│ │0011│1││0001│b0 │+│a0b2 │-000│e2 │+│e2f4 │--00│ │0100│1││0100│b1 │+├────┼────┼──┼─┤e2f2 │-00-│ │0101│0││1000│b2 │+│b0c0 │00-1│f0 │+│ │ │ │0110│1│├────┼──┼─┤b1c1 │01-0│f1 │ │ │ │ │0111│0││0011│c0 │+│b0c2 │-001│f2 │+├────┼────┤ │1000│1││0110│c1 │+│b2c2 │100-│f3 │+│ │ │ │1001│1││1001│c2 │+│b1c3 │-100│f4 │+│ │ │ │1010│0││1100│c3 │+│b2c3 │1-00│f5 │+│ │ │ │1011│1│├────┼──┼─┼────┼────┼──┼─┤f2g0 │-0-1│ │1100│1││1011│d0 │+│c0d0 │-011│g0 │+│f0g1 │-0-1│ │1101│1││1101│d1 │+│c2d0 │10-1│g1 │+│f3g3 │1-0-│ │1110│0││ │ │ │c2d1 │1-01│g2 │+│f5g2 │1-0-│ │1111│0││ │ │ │c3d1 │110-│g3 │+│ │ │ └────┴─┘└────┴──┴─┴────┴────┴──┴─┴────┴─────┘ Імпліканта називається простою, якщо вона є кон'юнкцією змінних, і будь-яка кон'юнкція, отримана з неї шляхом викреслювання будь-яких змінних, не є імплікантою. Побудова простих імплікант ілюструється прикладом 2.2.1. Приклад 2.2.1. Нехай функція f(a,b,c,d) задана в табл. 2.2.1. Випишемо до графи І табл. 2.2.2 усі набори, на яких функція f обертається в 1. Для виконання алгоритму їх зручно виписати розбитими на групи у відповідності з кількістю одиничних компонент у наборах (колонка К у графі І табл. 2.2.2). Оскільки мінімізуються (склеюються) лише набори, які відрізняються в одній компоненті, то для того, щоб провести всі склеювання по одній змінній, досить продивитися всі можливі пари наборів, які входять до двох сусідніх груп. Результати склеювання наборів із графи I розмістимо у графі II. Набори із графи I, які приймали участь у склеюваннях, позначимо знаком +. У графі II набори вже автоматично розбиваються на групи за кількістю одиниць (при склеюванні наборів графи I з груп із j-1 одиницями і з j одиницями отримуються набори графи II із j-1 одиницями). До створених наборів знову застосовуємо операцію склеювання (клеяться пари наборів, які мають риску на однакових місцях і відрізняються однією компонентою). При цьому треба знову переглянути всі пари наборів із сусідніх груп. Набори, до яких застосована операція, позначені знаком +. Результати склеювання заносимо до графи III таблиці. У графі III знову намагаємося виконати склеювання, але цього зробити не вдається. На цьому процедура завершується. У табл. 2.2.2 позначено графи: К - код набору; С - склеюванням яких наборів цей код утворився; П - умовне позначення набору; У - позначка про участь набору в склеюванні. В отриманій таблиці знаходяться всі імпліканти функції f, які мають вигляд кон'юнкцій. Простими будуть лише ті з них, які не мають позначки + (із яких не можна викреслити жодної змінної, інакше може бути застосована операція склеювання). В розглянутому прикладі простими імплікантами є кон'юнкції /ab/d, /b/c, /c/d, /bd, a/c, які відповідають наборам 01-0, -00-, --00, -0-1, 1-0-. 2. Формування мінімальної диз'юнктивної нормальної форми. Таблиця 2.2.3 ┌────┬──────┬────┬─────┬────┬────┐ │ │ I1 │ I2 │ I3 │ I4 │ I5 │ │abcd│/аb/d │/b/c│/c/d)│/bd │a/c │ │ │ 01-0 │-00-│--00 │-0-1│1-0-│ ├────┼──────┼────┼─────┼────┼────┤ │0000│ │ * │ * │ │ │ │0001│ │ * │ │ * │ │ │0011│ │ │ │ * │ │ │0100│ * │ │ * │ │ │ │0110│ * │ │ │ │ │ │1000│ │ * │ * │ │ * │ │1001│ │ * │ │ * │ * │ │1011│ │ │ │ * │ │ │1100│ │ │ * │ │ * │ │1101│ │ │ │ │ * │ └────┴──────┴────┴─────┴────┴────┘ Позначимо через I1, I2, ..., Is всі прості імпліканти функції f. Будемо говорити, що кон'юнкція К покриває набір n, якщо на наборі n вона дорівнює 1. Побудуємо імплікантну таблицю (таблицю покриття) по функції f. Її рядки відповідають одиничним наборам функції f, а графи - простим імплікантам. На схрещенні рядка n і графи Ij проставляється *, якщо імпліканта Ij покриває набір n (у протилежному випадку не ставиться нічого). Імплікантна табл. 2.2.3 відповідає функції, заданій у табл. 2.2.1, і імплікантам, знайденим за допомогою табл. 2.2.2. З імплікантою Ij будемо пов'язувати логічну змінну іj. Кожній множині імплікант приписується набір значень змінних іj: якщо Ij входить у множину, то іj=1, якщо ні, то іj=0. Розглянемо рядок таблиці покриття, який відповідає якомусь набору n. Нехай у цьому рядку символи * знаходяться у графах I1, I2, ..., Iw. Рядок n буде покритий тоді і лише тоді, коли до множини буде введена хоча б одна з імплікант I1, I2, ..., Iw, тобто коли диз'юнкція і1 v і2 v ... v іw дорівнює 1. Складемо таку диз'юнкцію для кожного рядка імплікантної таблиці і візьмемо їхній добуток по всіх рядках. Отримаємо функцію F, яка для табл. 2.2.3 має вигляд F=(і2 v і3)(і2 v і4)і4(і1 v і3)і1(і2 v і3 v і5)(і2 v і4 v і5)і4(і3 v і5)і5. Після спрощення F = і1і2і4i5 v і1і3і4і5. Тепер функція F вказує на 2 ненадмірних покриття: {I1, I2, I4, I5} та {I1, I3, I4, I5}. Їм відповідають дві ДНФ, кожна з яких складаються з 9 літер, тому кожна з них є мінімальною. Таким чином, дана функція f має дві мінімальні ДНФ: f = I1 v I2 v I4 v I5 = /ab/d v /b/c v /bd v a/c, f = I1 v I3 v I4 v I5 = /ab/d v /c/d v /bd v a/c. Мінімізація не повністю визначених функцій методом Квайна-МакКласкі-Петрика. Всі дії відбуваються, як описано вище. Лише на першому етапі до табл. 2.2.2 як початкові набори вводяться додатково і всі набори, на яких функція не визначена, а на другому – до табл. 2.2.3, як і раніше, тільки набори, на яких функція приймає значення 1. Приклад 2.2.2. Функція задана табл.2.2.4, Х – невизначене значення. Знаходження простих імплікант - табл. 2.2.5. Знаходження мінімального покриття - табл. 2.2.6. 2.3. Мінімізація функцій за допомогою карт Карно Карти Карно є одним з найефективніших засобів знаходження мінімальних диз'юнктивних нормальних форм (МДНФ) для функцій невеликої кількості змінних (4...6). На картах Карно кожному з 2n наборів відповідає одна клітинка. Якщо на даному наборі аргументів функція дорівнює 1, то в клітинці, яка відповідає даному набору, записується 1. Клітинки, які відповідають наборам, де функція дорівнює 0, або заповнюють 0, або залишають незаповненими. Клітинки, які відповідають наборам, де функція недовизначена, заповнюють Х (рис. 2.3.1). Кожна із змінних x розбиває карту Карно на дві половини - половину x і половину (-x). Половини карт, які відповідають неінверсним аргументам, позначені на рис 2.3.1, де зображена карта Карно на 5 змінних - e, a, b, c, d, які утворюють набори {eabcd}. Таблиця Таблиця 2.2.5 2.2.4 ┌────────────────┬───────────────────────┬────────────────┐ ┌────┬─┐│ I │ II │ III │ │abcd│f│├─────────┬────┬─┼──────┬─────────┬────┬─┼──────┬─────────┤ ├────┼─┤│ К │ П │У│ С │ К │ П │У│ С │ К │ │0000│0│├─────────┼────┼─┼──────┼─────────┼────┼─┼──────┼─────────┤ │0001│0││ 0 1 0 1 │ a0 │+│ a0b0 │ 0 1 - 1 │ d0 │+│ d0e2 │ - 1 - 1 │ │0010│0││ 1 0 1 0 │ a1 │+│ a0b2 │ - 1 0 1 │ d1 │+│ d1e0 │ - 1 - 1 │ │0011│0│├─────────┼────┼─┤ a1b1 │ 1 0 1 - │ d2 │+│ d2e3 │ 1 - 1 - │ │0100│0││ 0 1 1 1 │ b0 │+│ a1b3 │ 1 - 1 0 │ d3 │+│ d3e1 │ 1 - 1 - │ │0101│1││ 1 0 1 1 │ b1 │+├──────┼─────────┼────┼─┤ │ │ │0110│0││ 1 1 0 1 │ b2 │+│ b0c0 │ - 1 1 1 │ e0 │+│ │ │ │0111│Х││ 1 1 1 0 │ b3 │+│ b1c0 │ 1 - 1 1 │ e1 │+│ │ │ │1000│0│├─────────┼────┼─┤ b2c0 │ 1 1 - 1 │ e2 │+│ │ │ │1001│0││ 1 1 1 1 │ c0 │+│ b3c0 │ 1 1 1 - │ e3 │+│ │ │ │1010│Х│└─────────┴────┴─┴──────┴─────────┴────┴─┴──────┴─────────┘ │1011│Х│ Таблиця 2.2.6 │1100│0│ ┌───────┬───────────┬──────────┐ F = і1(і1 v і2) = │1101│Х│ │ │ I1 │ I1 │ = і1 v і1і2 = і1. │1110│Х│ │ abcd │ bd │ ac │ f = I1 = bd. │1111│1│ │ │ -1-1 │ 1-1- │ └────┴─┘ ├───────┼───────────┼──────────┤ │ 0101 │ * │ │ │ 1111 │ * │ * │ └───────┴───────────┴──────────┘ Номери наборів проставлені у верхніх лівих кутках клітинок карти (у шістнадцятковому коді). ┌───c ──┐ ┌────c ───┐ ╔═══╦════╦═══╦═══╗ ─┐ ╔════╦═══╦════╦════╗ ║10 ║11 ║13 ║12 ║ │ ║0 ║1 ║3┌─┐║2 ║ ║ 0║ 0 ║ 0║ X║ │ ║ 0 ║ 0 ║ │X│║ 0 ║ ╠═══╬════╬═══╬═══╣ ┐│ ╠════╬═══╬═╪═╪╬════╣ ─┐ ║14 ║15 ║17 ║16 ║ ││ ║4 ║5 ║7│ │║6 ║ │ ║ 0║ X ║ 0║ 0║ ││ ╫───┐║ ║ │ │║ ┌──╫─ │ ║ ║ ║ ║ ║ ││ ║ 1│║ 0 ║ │1│║ │X ║ │ ┌─╠═══╬════╬═══╬═══╣ be ┌─╠═══╪╬═══╬═╪═╪╬═╪══╣ b │ ║1C ║1D ║1F ║1E ║ ││ │ ║C │║D ║F│ │║E│ ║ │ │ ║ ║ ║ ║ ║ ││ │ ║┌──┼╫───╫─┼─┼╫─┼─┐║ │ │ ║ ┌─╫───┐║ ║ ║ ││ │ ║│┌─┼╫──┐║ │ │║ │ │║ │ │ ║ │1║ 1│║ 0║ X║ ││ │ ║││X│║ 1│║ │1│║ │X│║ │ │ ║ └─╫───┘║ ║ ║ ││ │ ╫┼┴─┴╫──┘║ │ │║ └─┼╫─ │ │ ║ ║ ║ ║ ║ ││ a ║└───╫───╫─┼─┼╫───┘║ │ a ╠═══╬════╬═══╬═══╣ ┘│ │ ╠════╬═══╬═╪═╪╬════╣ ─┘ │ ║18 ║19 ║1B ║1A ║ │ │ ║8 ║9 ║B│ │║A ║ │ ║ X║ 0 ║ X║ 0║ │ │ ║ 0 ║ X ║ │1│║ 0 ║ │ ║ ║ ║ ║ ║ │ │ ║ ║ ║ └─┘║ ║ └─╚═══╩════╩═══╩═══╝ ─┘ └─╚════╩═══╩════╩════╝ └────d ──┘ └───d ───┘ Рис 2.3.1. Правила мінімізації такі: 1) сусідніми вважаються клітинки, які відрізняються значенням лише однієї змінної, тобто: а) дві клітинки, які мають спільну грань; б) клітинки, які знаходяться в крайньому правому і крайньому лівому стовпцях однієї карти в одному рядку; в) клітинки, які знаходяться в крайньому верхньому і крайньому нижньому рядках однієї карти в одному стовпчику; г) клітинки, які займають однакове положення в сусідніх картах. Для випадку 5 змінних (e, a, b, c, d) мінімізація проводиться на двох картах, для 6 (g, e, a, b, c, d) змінних - на 4-х картах (рис. 2.3.2). Кожна карта розбивається змінними a, b, c, d на 16 клітинок однаково, як це показано на рис. 2.3.1. ┌───┬───┐┌───┬───┐ │0Y │1Y ││0Y │1Y │ └───┴───┘├───┼───┤─┐ └ е ┘│2Y │3Y │ g └───┴───┘─┘ └ е ┘ Примітка: Y = 0,...,F. Рис. 2.3.2. 2) Дві сусідні клітинки об'єднуються (склеюються), при цьому зникає змінна, якою ці клітинки відрізняються. 3) 4 сусідні клітинки, які утворюють прямокутник (або у просторі прямокутний паралелепіпед, якщо накласти карти одна на одну), об'єднуються (склеюються), при цьому зникають 2 змінні, якими ці клітинки відрізняються. 4) 8 сусідніх клітинок, які утворюють прямокутник (прямокутний паралелепіпед), об'єднуються (склеюються), при цьому зникають 3 змінні, якими ці клітинки відрізняються. 5) 16 сусідніх клітинок, які утворюють прямокутник (прямокутний паралелепіпед), об'єднуються (склеюються), при цьому зникають 4 змінні, якими ці клітинки відрізняються. 6) Загалом: 2n сусідніх клітинок, які утворюють прямокутник (прямокутний паралелепіпед), об'єднуються (склеюються), при цьому зникають n змінних, якими ці клітинки відрізняються. 7) Кожну клітинку можна склеювати безліч разів. 8) Невизначене значення функції (позначається на карті Х) можна вважати як 0, так і 1 в залежності від зручності мінімізації. 9) Так само, як і по 1, можна робити склеювання і по 0. В результаті буде отриманий вираз для інверсної функції /f. 10) Одночасно можна клеїти або тільки за 1, або тільки за 0. Приклад 2.3.1. Мінімізувати функцію, задану на рис. 2.3.1, за "1". Результати склеювання позначені на рис. 2.3.1. Всі склеювання - по 4 клітинки: клітинки 4, C, 6, E - результат /eb/d, зникли 2 змінні a і c. Це склеювання потрібне, щоб мінімізувати набір 4, на якому функція визначена і дорівнює "1"; клітинки C, D, F, E - результат /eab, зникли 2 змінні c і d. Це склеювання потрібне, щоб мінімізувати набори D і E, на яких функція визначена і дорівнює "1"; клітинки 3, 7, F, B - результат /ecd, зникли 2 змінні a і b. Це склеювання потрібне, щоб мінімізувати набори 7, F і B, на яких функція визначена і дорівнює "1"; клітинки C, D, 1C, 1D - результат ab/c, зникли 2 змінні e і d. Це склеювання потрібне, щоб мінімізувати набір 1C і 1D, на яких функція визначена і дорівнює "1". Невизначені значення функції в клітинках (наборах) 9, 12, 15, 1Е, 18, 1B довизначаємо як "0", оскільки вони не допомагають при склеюванні за "1". Невизначені значення функції в клітинках (наборах) 3, 6, C, Е довизначаємо як "1", оскільки вони допомагають при склеюванні за "1". Набори 3, 4, 6, 7, D, B, 1C, 1D - кожен бере участь в одному склеюванні. Набори D, F, E - беруть участь у двох склеюваннях кожний. Набір C - бере участь у трьох склеюваннях. Остаточний результат: f = /eb/d v /eab v /ecd v ab/c. Приклад 2.3.2. Мінімізувати функцію, задану на рис. 2.3.1, за "0". Результати склеювання позначені на рис. 2.3.3. ┌─── c ──────┐ ┌─ c ───┐ ╔══╪══╪╦═════╦════╦══╪══╪═╗ ─┐ ╔═══╪╦════╦══╦═╪══╗ ║10│ │║11┌─┐║13┌─╫──┼──┼┐║ │ ║0 │║1┌─┐║3 ║2│ ║ ║ │┌─┼╫──┼─┼╫──┼─╫──┼─┐││║ │ ║ ┌─┼╫─┼─┼╫──╫─┼─┐║ ║ ││0│║ │0│║ │0║ │X│││║ │ ║ │0│║ │0│║ X║ │0│║ ─╫──┼┼─┘║ │ │║ │ ║ └─┼┼┼╫─ │ ─╫─┼─┘║ │ │║ ║ └─┼╫─ ║ └┼──╫──┼─┼╫──┼─╫────┼┘│║ │ ║ └──╫─┼─┼╫──╫───┘║ ╠═══╪══╬══╪═╪╬══╪═╬════╪═╪╣ ┐│ ╠════╬═╪═╪╬══╬════╣ ─┐ ║14 │ ║15│ │║17│ ║16 │ │║ ││ ║4 ║5│ │║7 ║6 ║ │ ║ │0 ║ │X│║ │0║ 0│ │║ ││ ║ 1 ║ │0│║ 1║ X ║ │ ║ └──╫──┼─┼╫──┼─╫────┘ │║ ││ ║ ║ └─┘║ ║ ║ │ ║ ║ └─┘║ │ ║ │║ ││ ║ ║ ║ ║ ║ │ ┌─ ╠══════╬═════╬══╪═╬══════╪╣ be ┌─ ╠════╬════╬══╬════╣ b │ ║1C ║1D ║1F│ ║1E │║ ││ │ ║C ║D ║F ║E ║ │ │ ║ 1 ║ 1 ║ │0║ X │║ ││ │ ║ X ║ 1 ║ 1║ X ║ │ a ╠══════╬═════╬══╪═╬══════╪╣ ┘│ a ╠════╬════╬══╬════╣ ─┘ │ ║18 ║19 ║1B│ ║1A │║ │ │ ║8 ║9 ║B ║A ║ │ ─╫─────┐║ ║ │ ║ ┌───┼╫─ │ │ ─╫───┐║ ║ ║ ┌──╫─ │ ║ ┌──┼╫─────╫──┼─╫──┼──┐│║ │ │ ║ 0│║ X ║ 1║ │0 ║ │ ║ │ X│║ 0 ║ │X║ │0 ││║ │ │ ║ │║ ║ ║ │ ║ │ ║ │ │║ ║ └─╫──┼──┼┘║ │ │ ║ │║ ║ ║ │ ║ └─ ╚══╪══╪╩═════╩════╩══╪══╪═╝ ─┘ └─ ╚═══╪╩════╩══╩═╪══╝ └──── d ───┘ └────d ─┘ Рис.2.3.3. Склеювання по 8 клітинки: клітинки 0, 1, 2, 3, 10, 11, 12, 13 - результат /a/b, зникли 3 змінні - c, d і e. Це склеювання потрібне, щоб мінімізувати набори 0, 1, 2, 10, 11, 12, на яких функція визначена і дорівнює "0"; клітинки 0, 2, 8, A, 10, 12, 18, 1A - результат /b/d, зникли 3 змінні - a, c і e. Це склеювання потрібне, щоб мінімізувати набори 8, A, 1A, на яких функція визначена і дорівнює "0" (набори 0, 2, 10, 12 вже були мінімізовані на попередньому етапі); клітинки 10, 11, 12, 13, 14, 15, 16, 17 - результат /ae, зникли 3 змінні - b, c і d. Це склеювання потрібне, щоб мінімізувати набори 14, 16, 17, на яких функція визначена і дорівнює "0" (набори 10, 11, 12 вже були мінімізовані на попередніх етапах); клітинки 10, 11, 12, 13, 18, 19, 1A, 1B - результат /be, зникли 3 змінні - a, c і d. Це склеювання потрібне, щоб мінімізувати набори 19, 1A, на яких функція визначена і дорівнює "0" (набори 10, 11, 12 вже були мінімізовані на попередніх етапах); клітинки 12, 13, 16, 17, 1A, 1B, 1E, 1F - результат ce, зникли 3 змінні - a, b і d. Це склеювання потрібне, щоб мінімізувати набір 1F, на якому функція визначена і дорівнює "0" (набори 12, 16, 17, 1А вже були мінімізовані на попередніх етапах). Склеювання по 4 клітинки: клітинки 1, 5, 11, 15 - результат /a/cd, зникли 2 змінні - b і e. Це склеювання потрібне, щоб мінімізувати набір 5, на якому функція визначена і дорівнює "0" (набори 1 і 11 вже були мінімізовані на попередніх етапах). Невизначені значення функції в клітинках (наборах) 6, 9, C, F довизначаємо як "1", оскільки вони не допомагають при склеюванні за "0". Невизначені значення функції в клітинках (наборах) 3, 13, 15, 18, 1B довизначаємо як "0", оскільки вони допомагають при склеюванні за "0". Набори 3, 5, 8, A, 14, 19, 1E, 1F - беруть участь в одному склеюванні кожний. Набори 0, 1, 2, 16, 17, 18, 1B- беруть участь у двох склеюваннях кожний. Набори 10, 11, 1A - беруть участь у трьох склеюваннях кожний. Набір 12 - бере участь у чотирьох склеюваннях. Оскільки склеювання проводиться за “0”, то в результаті мінімізації отримаємо диз’юнктивну нормальну форму для інверсного значення функції /f: /f = /a/b v /b/d v /ae v /be v ce v /a/cd. Пряме значення функції f отримується згідно з правилами Моргана у вигляді кон'юнктивної нормальної форми: f = (a v b)(b v d)(a v /e)(b v /e)(/c v /e)(a v c v /d). 2.4. Визначення сполучного терма ┌────b ──┐ ╔══╦═══╦════╦═══╗ ║0 ║1 ║3 ║2 ║ c (=1) ┌──┐ ┌──┐ ║ ║ ║ ┌──╫──┐║ ───────────────┤& │ ac │1 │ ║ ║ ║ │1 ║ 1│║ a (1->0) │ ├──────┤ │ ║ ║ ║ └──╫──┘║ ──┬────────────┤ │(1->0)│ │ ┌─╠══╬═══╬════╬═══╣ │ ┌──┐ │ │ │ │f │ ║4 ║5 ║7 ║6 ║ │ │& │ /a ├──┤ │ ├───────── │ ║ ║ ┌─╫───┐║ ║ └─┤ o───────┤& │/ab │ │(1->0->1) a ║ ║ │1║ 1│║ ║ │ │ (0->1)│ ├──────┤ │ │ ║ ║ └─╫───┘║ ║ └──┘b (=1) │ │(0->1)│ │ └─╚══╩═══╩════╩═══╝ ───────────────┤ │ │ │ └─── c───┘ └──┘ └──┘ Рис. 2.4.1 Рис. 2.4.2 a (1->0) ┌──┐ ─────┐ ┌────────── ──┬──────────┤1 │ a "1"│ "0" │ "1" │┌──┐ │ │f └────────────┘ ││& │ -a │ ├───────── . . └┤ o──────┤ │(1->0->1) . ┌─────────┐ │ │(0->1)│ │ ─a "0". │ "1" . │ "0" └──┘ └──┘ ────────────┘ . └─────── Рис. 2.4.3 . . ──────┐ ┌───────────────── f "1"│ "0" │ "1" └─────┘ Рис. 2.4.4 Розглянемо функцію f(a, b, c), яка задана картою Карно (рис. 2.4.1). Результати мінімізації також зображені на рис. 2.4.1. Результат мінімізації f(a,b,c) = ac v /ab. Схема, яка реалізує цю функцію, наведена на рис. 2.4.2. ┌─────── b ──┐ ┌─ b ─┐ ┌─ b ─┐ ╔══╦═══╦════════╦═══╗ ╔════╦═══╦═╦═══╗ ╔══════╦═══╦═╦═══╗ ║0 ║1 ║3┌────┐ ║2 ║ ║0 ║1 ║3║2 ║ ║0┌───┐║1 ║3║2 ║ ║ ║ ║ │┌───┼─║──┐║ ║ ┌──╫──┐║ ║ ║ ║ │┌──┼╫──┐║ ║ ║ ║ ║ ║ ││ 1 │ ║ 1│║ ║ │0 ║ 0│║ ║ ║ ║ ││0 │║ 0│║ ║ ║ ║ ║ ║ │└───┼─║──┘║ ║ └──╫──┘║ ║ ║ ║ │└──┼╫──┘║ ║ ║ ┌╠══╬═══╬═╪════╪═╬═══╣┌╠════╬═══╬═╬═══╣ ┌╠═╪═══╪╬═══╬═╬═══╣ │║4 ║5 ║7│ │ ║6 ║│║4 ║5 ║7║6 ║ │║4│ │║5 ║7║6 ║ │║ ║ ┌─╫─┼───┐│ ║ ║│╫───┐║ ║ ║ ┌─╫ │╫─┼──┐│║ ║ ║ ┌─╫ a║ ║ │1║ │ 1││ ║ ║a║ 0│║ ║ ║ │0║ a║ │ 0││║ ║ ║ │0║ │║ ║ └─╫─┼───┘│ ║ ║│╫───┘║ ║ ║ └─╫ │╫─┼──┘│║ ║ ║ └─╫ │║ ║ ║ └────┘ ║ ║│║ ║ ║ ║ ║ │║ └───┘║ ║ ║ ║ └╚══╩═══╩════════╩═══╝└╚════╩═══╩═╩═══╝ └╚══════╩═══╩═╩═══╝ └─── c ──────┘ └─ c ─┘ └─ c ─┘ Рис. 2.4.5 Рис. 2.4.6 Рис. 2.4.7 Розглянемо, що відбувається на виході схеми, коли інформація на входах міняється, а власне комбінація abc (7-ий набір) міняється на комбінацію /abc (3-ій набір). При такому переході змінні b і c залишаються сталими (=1), а змінна a міняє свій стан від 1 до 0, що зображено на рис. 2.4.2. Згідно з рис. 2.4.1, значення f не повинно при цьому змінюватися. Еквівалентна схема для цього переходу зображена на рис. 2.4.3, а часова діаграма - на рис. 2.4.4 (сигнал f на рис. 2.4.4. показано без врахування внутрішньої затримки елемента АБО). Через затримку на елементі НЕ сигнал /a змінюється з запізненням відносно сигналу a. Це призводить до одночасної появи на входах елемента АБО 2-х сигналів низького рівня, наслідком чого буде поява короткочасного сигналу 0 (просічки) на виході елемента АБО. Виникає так званий ефект гонок. Щоб позбутися цього негативного ефекту, необхідно об'єднати всі сусідні набори, на яких функція приймає значення "1" і які не об'єднані в Таблиця 2.4.1 Можливі комбінації розрядів пар простих імплікант ┌───────────────────┬───────────────────┬─────────┐ │Перший елемент пари│Другий елемент пари│Результат│ ├───────────────────┼───────────────────┼─────────┤ │ - │ - │ - │ │ - │ 0 │ 0 │ │ - │ 1 │ 1 │ │ 0 │ - │ 0 │ │ 0 │ 0 │ 0 │ │ 0 │ 1 │ x(-)│ │ 1 │ - │ 1 │ │ 1 │ 0 │ x(-)│ │ 1 │ 1 │ 1 │ └───────────────────┴───────────────────┴─────────┘ результаті мінімізації спільним склеюванням (спільним термом), за допомогою так званого сполучного терма. Для наведеного прикладу це показано на рис. 2.4.5. Остаточний результат мінімізації із врахуванням сполучного терма: f = ac v /ab v bc. Тут bc - сполучний терм. Таблиця 2.4.2 ┌──────────┬────┐ │ Номер │ │ │імпліканти│abcd│ ├──────────┼────┤ │ і0 │-00-│ │ і1 │01--│ │ і2 │1-11│ └──────────┴────┘ Аналогічна ситуація може виникати при склеюванні за "0". Наприклад, рис. 2.4.6, де /f = a/c v /a/b. Гонки можуть виникати при здійсненні переходів між 0 і 4 наборами. Для їх усунення вводиться сполучний терм, як показано на рис. 2.4.7. Внаслідок цього остаточний результат буде /f = a/c v /a/b v v /b/c, де /b/c - сполучний терм. Визначення сполучного терма при записі методом Мак-Класкі. Попарне порозрядне порівняння (табл. 2.4.1) простих імплікант здійснюється після виконання мінімізації методом Квайна-Мак-Класкі для визначення сполучного терма. Якщо при порівнянні будь-якої пари імплікант символ "x" зустрічається тільки один раз, то це говорить про необхідність введення сполучного терму. Розряди такого терма визначаються згідно з графою "Результат" табл. 2.4.1 і при цьому символ "x" заміняється міткою "-". Приклад 2.4.1. Визначити сполучні терми для функції Таблиця 2.4.3 ┌────────────┬────┐┌────────────┬────┐┌────────────┬────┐ │Порівнюються│ ││Порівнюються│ ││Порівнюються│ │ ├────────────┼────┤├────────────┼────┤├────────────┼────┤ │ і0 │-00-││ і0 │-00-││ і1 │01--│ │ і1 │01--││ і2 │1-11││ і2 │1-11│ ├────────────┼────┤├────────────┼────┤├────────────┼────┤ │ │0x0-││ │10x1││ │x111│ │ Результат ├────┤│ Результат ├────┤│ Результат ├────┤ │ │0-0-││ │10-1││ │-111│ ├────────────┼────┤├────────────┼────┤├────────────┼────┤ │ Терм │/a/c││ Терм │a/bd││ Терм │bcd │ └────────────┴────┘└────────────┴────┘└────────────┴────┘ f = /b·/c v /a·b v a·c·d. Таблиця 2.4.4 ┌──────────┬────┐ │ Номер │ │ │імпліканти│abcd│ ├──────────┼────┤ │ і0 │0-0-│ │ і1 │01--│ │ і2 │1010│ └──────────┴────┘ При записі методом Мак-Класкі функція буде мати вигляд табл. 2.4.2. Результати попарного порівняння наведені в табл. 2.4.3. Оскільки при кожному порівнянні сформувався один символ "x", то кожний терм є сполучним і тому необхідним. Після введення сполучних термів, функція буде мати вигляд f = /b·/c v /a·b v v a·c·d v /a·/c v a·/b·d v v b·c·d. Наведений приклад ілюструється картою Карно (рис. 2.4.8). Приклад 2.4.2. Визначити сполучні терми, для функції f = /a·/c +/a·b + a·/b·c·/d. Таблиця 2.4.5 ┌────────────┬─────┐┌────────────┬─────┐┌────────────┬─────┐ │Порівнюються│ ││Порівнюються│ ││Порівнюються│ │ ├────────────┼─────┤├────────────┼─────┤├────────────┼─────┤ │ і0 │0-0- ││ і0 │0-0- ││ і1 │01-- │ │ і1 │01-- ││ і2 │1010 ││ і2 │1010 │ ├────────────┼─────┤├────────────┼─────┤├────────────┼─────┤ │ │010 -││ │x0x0 ││ │xx10 │ │ Результат ├─────┤│ Результат ├─────┤│ Результат ├─────┤ │ │немає││ │немає││ │немає│ ├────────────┼─────┤├────────────┼─────┤├────────────┼─────┤ │ Терм │немає││ Терм │немає││ Терм │немає│ └────────────┴─────┘└────────────┴─────┘└────────────┴─────┘ При записі методом Мак-Класкі функція буде мати вигляд табл. 2.4.4. Результати попарного порівняння наведені в табл. 2.4.5. Оскільки при попарному порівнянні або не формувалося жодного символу "x", або їх формувалося більше ніж один, то в даному прикладі сполучних термів не буде. Наведений приклад ілюструється картою Карно (рис. 2.4.9). │ │┌───c──┐ ┌───c──┐ ┌──c───┐ ╔╪══╦═╪╦═══╦══╗ ╔═══╦═══╦═══╦══╗ ╔═══╦══╦══╦═══╗ ║│ ║ │║ ║ ║ ║┌──╫──┐║ ║ ║ ║┌──╫─┐║ ║ ║ ║│1 ║1│║ ║ ║ ║│1 ║ 1│║ ║ ║ ║│1 ║1│║ ║ ║ ║└─0╫─1║ 3║ 2║ ║│ 0║ 1║ 3║ 2║ ║│ 0║ 1║ 3║ 2║ ╠═══╬══╬═══╬══╣─┐ ╠╪══╬══╪╬═══╬══╣─┐ ╠╪══╬═╪╬══╬═══╣─┐ ║┌──╫──╫───╫─┐║ │ ║│ ║ │║┌─┐║ ║ │ ║╟──╫─┼╫──╫──┐║ │ ║│1 ║1 ║ 1 ║1│║ │ ║│1 ║ 1│║│1│║1 ║ │ ║║1 ║1│║1 ║ 1│║ │ ║└─4╫─5╫──7╫─6║ │ ║└─4║──5║│ 7║ 6║ │ ║╚═4╬═5╫─7╫──6║ │ ┌─╠═══╬══╬═══╬══╣ b ┌─╠═══╬═══╬╪═╪╬══╣ b ┌─╠═══╬══╬══╬═══╣ b │ ║ ║ ║┌─┐║ ║ │ │ ║ ║ ║│ │║ ║ │ │ ║ ║ ║ ║ ║ │ │ ║ ║ ║│1│║ ║ │ │ ║ ║ ║│1│║ ║ │ │ ║ ║ ║ ║ ║ │ │ ║ C║ D║│ F║ E║ │ │ ║ C║ D║└─F║ E║ │ │ ║ C║ D║ F║ E║ │ a ╠═══╬══╬╪═╪╬══╣─┘ a ╠═══╬═══╬═══╬══╣─┘ a ╠═══╬══╬══╬═══╣─┘ │ ║┌──╫─┐║│ │║ ║ │ ║ ║┌──╫──┐║ ║ │ ║ ║ ║ ║┌─┐║ │ ║│1 ║1│║│1│║ ║ │ ║ 1 ║│1 ║ 1│║ ║ │ ║ ║ ║ ║│1│║ │ ║│ 8║ 9║└─B║ A║ │ ║ 8║└─9╫──B║ A║ │ ║ 8║ 9║ B║└─A║ └─╚╪══╩═╪╩═══╩══╝ └─╚═══╩═══╩═══╩══╝ └─╚═══╩══╩══╩═══╝ └──d───┘ └───d───┘ └──d──┘ Задана функція Сполучні терми Задана функція Рис. 2.4.8 Рис. 2.4.9
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!