Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
- | == По заданной ФАЛ построить ее сокращенную ДНФ, ДНФ Квайна, ДНФ сумма тупиковых, все тупиковые ДНФ == | + | == From Ebaums Inc to MurkLoar. == |
- | | + | We at EbaumsWorld consider you as disgrace of human race. |
- | === Определения ===
| + | Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated. |
- | | + | Dig yourself a grave - you will need it. |
- | ==== Функция алгебры логики ====
| + | |
- | '''Функция алгебры логики''' — функция, переводящая вектор из n-элементов множества B = {0, 1} в элемент множества B. То есть, для каждого набора нулей и единиц у функции определено значение, равное нулю или единице.
| + | |
- | | + | |
- | === Построение сокращённой ДНФ ===
| + | |
- | | + | |
- | ==== Определения ====
| + | |
- | | + | |
- | ===== Буква x<sup>σ</sup> =====
| + | |
- | Есть алфавит ''X''(n) = {''x''<sub>1</sub>, … ''x''<sub>n</sub>}. '''Буква ''x''<sub>i</sub><sup>σ</sup>''' есть ''x''<sub>i</sub>, если σ = 1, и ''x̅''<sub>i</sub>, если σ = 0.
| + | |
- | | + | |
- | ===== Конъюнкция ранга r =====
| + | |
- | '''Конъюнкция ранга r''' ''K'' = ''x''<sub>i<sub>1</sub></sub><sup>σ<sub>1</sub></sup>…''x''<sub>i<sub>r</sub></sub><sup>σ<sub>r</sub></sup>, 0 ≤ r ≤ n; ''K'' = 0 при ''r'' = 0.
| + | |
- | | + | |
- | ===== Элементарная конъюнкция =====
| + | |
- | '''Элементарная конъюнкция''' — конъюнкция, у которой все переменные в буквах различны: ''x''<sub>i<sub>k</sub></sub><sup>σ<sub>l</sub></sup> ≠ ''x''<sub>i<sub>l</sub></sub><sup>σ<sub>l</sub></sup> при k ≠ l
| + | |
- | | + | |
- | ===== Импликанта =====
| + | |
- | Элементарная конъюнкция ''К'' называется '''импликантой''' ''f'', если ''K'' ∨ ''f'' = ''f''.
| + | |
- | | + | |
- | ===== Простая импликанта =====
| + | |
- | Импликанта ''К'' функции ''f'' называется '''простой импликантой''', если при вычёркивании любой буквы ''K'' получается элементарная конъюнкция, которая не является импликантой ''f''.
| + | |
- | | + | |
- | ===== Сокращённая ДНФ =====
| + | |
- | '''Сокращённая ДНФ''' — дизъюнкция всех простых импликант ''f''
| + | |
- | | + | |
- | ==== Геометрический метод (с использованием единичного куба) ====
| + | |
- | * Рисуем единичный куб (для 6 и более переменных это уже затруднительно)
| + | |
- | {|width="100%"
| + | |
- | !Единичный куб для двух переменных
| + | |
- | !Единичный куб для трёх переменных
| + | |
- | !Единичный куб для четырёх переменных
| + | |
- | |-
| + | |
- | |style="text-align:center"|[[Изображение:Cube 2d.png|240px]]
| + | |
- | |style="text-align:center"|[[Изображение:Cube.png|240px]]
| + | |
- | |style="text-align:center"|[[Изображение:Cube 4d.png|240px]]
| + | |
- | |-
| + | |
- | !colspan="3"|Единичный куб для пяти переменных
| + | |
- | |-
| + | |
- | |colspan="3" style="text-align:center"|[[Изображение:Cube 5d.png|720px]]
| + | |
- | |}
| + | |
- | * Отмечаем все грани максимальной размерности, во всех точках которых функция равна единице
| + | |
- | * Отмечаем все грани размерности на единицу меньше, во всех точках которых функция равна единице
| + | |
- | * …
| + | |
- | * Отмечаем все вершины, в которых функция равна единице
| + | |
- | | + | |
- | Таким образом, мы наглядно получаем максимальные грани, видим местоположение ядровых точек и т. п.
| + | |
- | | + | |
- | [[Изображение:Reduced_dnf_cube.png|thumb|Разметка куба для функции ''f'' = (0110 1111)]]
| + | |
- | ===== Пример =====
| + | |
- | Построить сокращённую ДНФ для функции ''f'' = (0110 1111). С использованием единичного куба.
| + | |
- | | + | |
- | '''Решение.'''
| + | |
- | Размеченный куб представлен справа. Как видно из иллюстрации, можно выделить следующие максимальные грани:
| + | |
- | * (1 − −) → ''x''<sub>1</sub>
| + | |
- | * (− 1 0) → ''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>
| + | |
- | * (− 0 1) → <span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub>
| + | |
- | | + | |
- | В результате получим сокращённую ДНФ ''x''<sub>1</sub> ∨ ''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub>
| + | |
- | | + | |
- | ==== Метод Блейка ====
| + | |
- | Пусть у нас имеется произвольная ДНФ функции ''f''. Определим два преобразования:
| + | |
- | * <span style="border-top:solid 1px">''x''</span>A ∨ ''x''B → <span style="border-top:solid 1px">''x''</span>A ∨ ''x''B ∨ AB
| + | |
- | * A ∨ AB → A
| + | |
- | Тогда, если сначала применять к имеющейся ДНФ первое преобразование, пока это возможно, а потом — второе, то получим сокращённую ДНФ.
| + | |
- | | + | |
- | ===== Пример =====
| + | |
- | Построить сокращённую ДНФ по имеющейся ДНФ
| + | |
- | | + | |
- | x1x2x3 ∨ x1<span style="border-top:solid 1px">''x2''</span>x3 ={применяем первое правило}= x1x2x3 ∨ x1<span style="border-top:solid 1px">''x2''</span>x3 ∨ x1x3 ={применяем второе правило дважды}= x1x3
| + | |
- | | + | |
- | ==== Метод Нельсона ====
| + | |
- | Метод Нельсона использует КНФ функции ''f''. Для построения сокращённой ДНФ по КНФ достаточно раскрыть скобки и привести подобные методом поглощения (A ∨ AB → A)
| + | |
- | | + | |
- | ===== Пример =====
| + | |
- | Построить сокращённую ДНФ по имеющейся КНФ
| + | |
- | f(x<sub>1</sub>,x<sub>2</sub>,x<sub>3</sub>)=(<span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub>)(x<sub>1</sub> ∨ x<sub>2</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>3</sub>)
| + | |
- | | + | |
- | f = <span style="border-top:solid 1px">''x''</span><sub>3</sub>x<sub>1</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>3</sub>x<sub>2</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ <strike>(<span style="border-top:solid 1px">''x''</span></strike><sub>1</sub><strike>x</strike><sub>1</sub><strike>)</strike> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub>x<sub>2</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>
| + | |
- | = <span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>3</sub>x<sub>1</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>3</sub>x<sub>2</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub>x<sub>2</sub>
| + | |
- | = <span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub>x<sub>2</sub>
| + | |
- | | + | |
- | ==== Метод с использованием карт Карно ====
| + | |
- | Данный метод удобен для функций от 4 переменных (его также можно использовать для функций от 3 переменных, но для них обычно используются другие методы). Он основан на нахождении блоков единиц на построенной специальном образом карте значений функции. Карта строится следующим образом: по вертикали выписываются переменные ''x''<sub>1</sub>, ''x''<sub>2</sub>; по горизонатли — ''x''<sub>3</sub>, ''x''<sub>4</sub>. Пары переменых выписываются в порядке (00), (01), (11), (10). После чего в таблицу заносятся значения функции для данных значений переменных. Рассмотрим построение карты для функции f = (f<sub>0000</sub>f<sub>0001</sub>f<sub>0010</sub>f<sub>0011</sub> f<sub>0100</sub>f<sub>0101</sub>f<sub>0110</sub>f<sub>0111</sub> f<sub>1000</sub>f<sub>1001</sub>f<sub>1010</sub>f<sub>1011</sub> f<sub>1100</sub>f<sub>1101</sub>f<sub>1110</sub>f<sub>1111</sub>):
| + | |
- | | + | |
- | {|
| + | |
- | !rowspan="2" colspan="2"|
| + | |
- | !''x''<sub>3</sub>
| + | |
- | !0
| + | |
- | !0
| + | |
- | !1
| + | |
- | !1
| + | |
- | |-
| + | |
- | !''x''<sub>4</sub>
| + | |
- | !0
| + | |
- | !1
| + | |
- | !1
| + | |
- | !0
| + | |
- | |-
| + | |
- | !''x''<sub>1</sub>
| + | |
- | !''x''<sub>2</sub>
| + | |
- | !
| + | |
- | !colspan="4"|
| + | |
- | |-
| + | |
- | !0
| + | |
- | !0
| + | |
- | !
| + | |
- | |f<sub>0000</sub>
| + | |
- | |f<sub>0001</sub>
| + | |
- | |f<sub>0011</sub>
| + | |
- | |f<sub>0010</sub>
| + | |
- | |-
| + | |
- | !0
| + | |
- | !1
| + | |
- | !
| + | |
- | |f<sub>0100</sub>
| + | |
- | |f<sub>0101</sub>
| + | |
- | |f<sub>0111</sub>
| + | |
- | |f<sub>0110</sub>
| + | |
- | |-
| + | |
- | !1
| + | |
- | !1
| + | |
- | !
| + | |
- | |f<sub>1100</sub>
| + | |
- | |f<sub>1101</sub>
| + | |
- | |f<sub>1111</sub>
| + | |
- | |f<sub>1110</sub>
| + | |
- | |-
| + | |
- | !1
| + | |
- | !0
| + | |
- | !
| + | |
- | |f<sub>1000</sub>
| + | |
- | |f<sub>1001</sub>
| + | |
- | |f<sub>1011</sub>
| + | |
- | |f<sub>1010</sub>
| + | |
- | |}
| + | |
- | | + | |
- | Далее на полученной карте находим все максимально возможные блоки единиц вида 2<sup>k</sup> × 2<sup>l</sup>; k, l ∈ '''N''', учитывая тот факт, что карта закольцована. Блоки могут пересекаться, но не должны включать друг друга. Далее для каждого блока выписывается вектор, в котором в случае, если переменная в пределах этого блока меняла значение, знак «–», если же не меняет, то её значение в пределах блока. Для позиций вектора ''i'', в которых стоит знак σ ∈ {0, 1}? в ЭК добавляется x<sub>i</sub><sup>σ</sup>. Дизъюнкция всех полученных ЭК и есть сокращённая ДНФ.
| + | |
- | | + | |
- | ===== Пример =====
| + | |
- | Найдём сокращённую ДНФ для функции ''f'' = (1010 0110 0111 1101) методом карт Карно.
| + | |
- | | + | |
- | '''Решение'''<br />
| + | |
- | Строим карту:<br />
| + | |
- | [[Изображение:Karno.png|240px]]
| + | |
- | | + | |
- | На основании карты получаем следующие блоки:
| + | |
- | * (0 0 − 0) = <span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | * (0 − 1 0) = <span style="border-top:solid 1px">''x''</span><sub>1</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | * (− 0 1 0) = <span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | * (− 1 0 1) = ''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>''x''<sub>4</sub>
| + | |
- | * (1 1 0 −) = ''x''<sub>1</sub>''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>
| + | |
- | * (1 0 1 −) = ''x''<sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub>
| + | |
- | * (1 − − 1) = ''x''<sub>1</sub>''x''<sub>4</sub>
| + | |
- | | + | |
- | В результате получаем сокращённую ДНФ <span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ ''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>''x''<sub>4</sub> ∨ ''x''<sub>1</sub>''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ ''x''<sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub> ∨ ''x''<sub>1</sub>''x''<sub>4</sub>
| + | |
- | | + | |
- | | + | |
- | | + | |
- | нужно обьединить в прямоугольник единицу (с координатами [1;1]) с единицей ,у которой координаты [4;1]
| + | |
- | нужно обьединить в прямоугольник единицу (с координатами [4;1]) с единицей ,у которой координаты [4;4]
| + | |
- | прокомментировал getbraine e-mail v000du@gmail.com
| + | |
- | | + | |
- | ==== Построение сокращенной ДНФ по совершенной ДНФ при помощи алгоритма Квайна ====
| + | |
- | Алгоритм Квайна построения сокращенной ДНФ по совершенной ДНФ:
| + | |
- | 0) i:=1
| + | |
- | 1)Пока возможно к слагаемым ранга n-i+1 применять неполное склеивание:
| + | |
- | xK v (not x)K = xK v (not x)K v K
| + | |
- | 2)пока возможно поглощение
| + | |
- | 3) i++; if (i<=n) goto 1
| + | |
- | | + | |
- | === Построение ДНФ Квайна ===
| + | |
- | | + | |
- | ДНФ, которую получают путем выбрасывания всех простых импликант, соответствующих максимальным граням, которые покрываются ядром, называется '''ДНФ Квайна'''.
| + | |
- | | + | |
- | Алгоритм построения ДНФ Квайна:
| + | |
- | | + | |
- | 1. получить сокращенную ДНФ;
| + | |
- | | + | |
- | 2. найти ядровые грани;
| + | |
- | | + | |
- | 3. удалить импликанты, покрываемые ядром.
| + | |
- | | + | |
- | Полученная ДНФ, является ДНФ Квайна.
| + | |
- | | + | |
- | === Построение ДНФ ΣT (суммы тупиковых) ===
| + | |
- | | + | |
- | см ниже
| + | |
- | | + | |
- | === Построение всех тупиковых ДНФ ===
| + | |
- | Пусть мы ищем все тупиковые решения для ФАЛ f. Выпишем таблицу M(''таблицу Квайна''), в которой столбцам соответствуют элементы из ''N<sub>f</sub>'' (наборы, на которых функция принимает значение 1), строкам соответствуют максимальные грани. В ячейке стоит 1, если грань, соответствующая строке содержит набор, соответствующий столбцу.
| + | |
- | | + | |
- | Затем выписываем КНФ функции покрытия следующим образом:
| + | |
- | | + | |
- | Пусть каждой строке соответствует некоторая переменая ''y<sub>i</sub>''.
| + | |
- | | + | |
- | Для каждого столбца, переменные, соотвествующие строкам в которых в данном столбце стоит 1, запишем через логическое или. Функция покрытия равна произведению таких сумм для каждого столбца.
| + | |
- | | + | |
- | ==== Пример ====
| + | |
- | Есть функция g: ''N<sub>g</sub> = {α<sub>1</sub> = (100), α<sub>2</sub> = (110), α<sub>3</sub> = (010), α<sub>4</sub> = (011), α<sub>5</sub> = (001), α<sub>6</sub> = (101) }''.
| + | |
- | | + | |
- | Множество максимальных граней = ''{N<sub>1</sub>,…,N<sub>6</sub>}'', где ''N<sub>i</sub>={α<sub>i</sub>,α<sub>i+1</sub>}'', причем α<sub>7</sub>=α<sub>1</sub>.
| + | |
- | | + | |
- | Таблица Квайна:
| + | |
- | | + | |
- | <center>[[Изображение:mKvaina.png]]</center>
| + | |
- | | + | |
- | ФАЛ покрытия: ''F(y) = (y<sub>6</sub> ∨ y<sub>1</sub>)(y<sub>1</sub> ∨ y<sub>2</sub>)(y<sub>2</sub> ∨ y<sub>3</sub>)(y<sub>3</sub> ∨ y<sub>4</sub>)(y<sub>4</sub> ∨ y<sub>5</sub>)(y<sub>5</sub> ∨ y<sub>6</sub>).''
| + | |
- | | + | |
- | Раскрывая скобки и приводя подобные, получаем:
| + | |
- | | + | |
- | ''F(y) = y<sub>1</sub>y<sub>3</sub>y<sub>5</sub> ∨ y<sub>2</sub>y<sub>4</sub>y<sub>6</sub> ∨ y<sub>1</sub>y<sub>2</sub>y<sub>4</sub>y<sub>5</sub> ∨ y<sub>2</sub>y<sub>3</sub>y<sub>5</sub>y<sub>6</sub> ∨ y<sub>1</sub>y<sub>3</sub>y<sub>4</sub>y<sub>5</sub>''.
| + | |
- | | + | |
- | Это соответствет тупиковым покрытиям ''1 = N<sub>1</sub>N<sub>3</sub>N<sub>5</sub>; 2 = N<sub>2</sub>N<sub>4</sub>N<sub>6</sub>; и т.д.''
| + | |
- | | + | |
- | ==== Пример ====
| + | |
- | Построить все тупиковые ДНФ для ФАЛ ''f'' = (1010 0110 0111 1101).
| + | |
- | | + | |
- | '''Решение.'''
| + | |
- | | + | |
- | Сокращённая ДНФ для данной функции есть <span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ ''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>''x''<sub>4</sub> ∨ ''x''<sub>1</sub>''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ ''x''<sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub> ∨ ''x''<sub>1</sub>''x''<sub>4</sub> (как было получено [[#Метод с использованием карт Карно|ранее]]). Выпишем все точки, где ЭК принимают значение, равное единице, следующим образом:
| + | |
- | {|
| + | |
- | !ЭК
| + | |
- | !<span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | | ∨
| + | |
- | !<span style="border-top:solid 1px">''x''</span><sub>1</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | | ∨
| + | |
- | !<span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | | ∨
| + | |
- | !''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>''x''<sub>4</sub>
| + | |
- | | ∨
| + | |
- | !''x''<sub>1</sub>''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>
| + | |
- | | ∨
| + | |
- | !''x''<sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub>
| + | |
- | | ∨
| + | |
- | !''x''<sub>1</sub>''x''<sub>4</sub>
| + | |
- | |-
| + | |
- | !α<sub>i</sub>
| + | |
- | |α<sub>1</sub> = (0000)<br />α<sub>2</sub> = (0010)
| + | |
- | |
| + | |
- | |α<sub>2</sub> = (0010)<br />α<sub>3</sub> = (0110)
| + | |
- | |
| + | |
- | |α<sub>2</sub> = (0010)<br />α<sub>4</sub> = (1010)
| + | |
- | |
| + | |
- | |α<sub>5</sub> = (0101)<br />α<sub>6</sub> = (1101)
| + | |
- | |
| + | |
- | |α<sub>7</sub> = (1100)<br />α<sub>6</sub> = (1101)
| + | |
- | |
| + | |
- | |α<sub>4</sub> = (1010)<br />α<sub>8</sub> = (1011)
| + | |
- | |
| + | |
- | |α<sub>9</sub> = (1001)<br />α<sub>8</sub> = (1011)<br />α<sub>6</sub> = (1101)<br />α<sub>10</sub> = (1111)
| + | |
- | |}
| + | |
- | | + | |
- | Построим таблицу (таблицу Квайна), у которой по строкам указаны ЭК, а по столбцам — точки, где функция принимает значение, равное единице. На пересечении ЭК и точки будет стоять значение ЭК в этой точке (фактически, входит ли данная точка в характеристическое множество данной ЭК, или нет). Для наглядности, единицы выделены.
| + | |
- | {|style="text-align:center"
| + | |
- | !
| + | |
- | !α<sub>1</sub>
| + | |
- | !α<sub>2</sub>
| + | |
- | !α<sub>3</sub>
| + | |
- | !α<sub>4</sub>
| + | |
- | !α<sub>5</sub>
| + | |
- | !α<sub>6</sub>
| + | |
- | !α<sub>7</sub>
| + | |
- | !α<sub>8</sub>
| + | |
- | !α<sub>9</sub>
| + | |
- | !α<sub>10</sub>
| + | |
- | |-
| + | |
- | !K<sub>1</sub> = <span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | !1 <!-- 1 -->
| + | |
- | !1 <!-- 2 -->
| + | |
- | |0 <!-- 3 -->
| + | |
- | |0 <!-- 4 -->
| + | |
- | |0 <!-- 5 -->
| + | |
- | |0 <!-- 6 -->
| + | |
- | |0 <!-- 7 -->
| + | |
- | |0 <!-- 8 -->
| + | |
- | |0 <!-- 9 -->
| + | |
- | |0 <!-- 10 -->
| + | |
- | |-
| + | |
- | !K<sub>2</sub> = <span style="border-top:solid 1px">''x''</span><sub>1</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | |0 <!-- 1 -->
| + | |
- | !1 <!-- 2 -->
| + | |
- | !1 <!-- 3 -->
| + | |
- | |0 <!-- 4 -->
| + | |
- | |0 <!-- 5 -->
| + | |
- | |0 <!-- 6 -->
| + | |
- | |0 <!-- 7 -->
| + | |
- | |0 <!-- 8 -->
| + | |
- | |0 <!-- 9 -->
| + | |
- | |0 <!-- 10 -->
| + | |
- | |-
| + | |
- | !K<sub>3</sub> = <span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub>
| + | |
- | |0 <!-- 1 -->
| + | |
- | !1 <!-- 2 -->
| + | |
- | |0 <!-- 3 -->
| + | |
- | !1 <!-- 4 -->
| + | |
- | |0 <!-- 5 -->
| + | |
- | |0 <!-- 6 -->
| + | |
- | |0 <!-- 7 -->
| + | |
- | |0 <!-- 8 -->
| + | |
- | |0 <!-- 9 -->
| + | |
- | |0 <!-- 10 -->
| + | |
- | |-
| + | |
- | !K<sub>4</sub> = ''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>''x''<sub>4</sub>
| + | |
- | |0 <!-- 1 -->
| + | |
- | |0 <!-- 2 -->
| + | |
- | |0 <!-- 3 -->
| + | |
- | |0 <!-- 4 -->
| + | |
- | !1 <!-- 5 -->
| + | |
- | !1 <!-- 6 -->
| + | |
- | |0 <!-- 7 -->
| + | |
- | |0 <!-- 8 -->
| + | |
- | |0 <!-- 9 -->
| + | |
- | |0 <!-- 10 -->
| + | |
- | |-
| + | |
- | !K<sub>5</sub> = ''x''<sub>1</sub>''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>
| + | |
- | |0 <!-- 1 -->
| + | |
- | |0 <!-- 2 -->
| + | |
- | |0 <!-- 3 -->
| + | |
- | |0 <!-- 4 -->
| + | |
- | |0 <!-- 5 -->
| + | |
- | !1 <!-- 6 -->
| + | |
- | !1 <!-- 7 -->
| + | |
- | |0 <!-- 8 -->
| + | |
- | |0 <!-- 9 -->
| + | |
- | |0 <!-- 10 -->
| + | |
- | |-
| + | |
- | !K<sub>6</sub> = ''x''<sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub>
| + | |
- | |0 <!-- 1 -->
| + | |
- | |0 <!-- 2 -->
| + | |
- | |0 <!-- 3 -->
| + | |
- | !1 <!-- 4 -->
| + | |
- | |0 <!-- 5 -->
| + | |
- | |0 <!-- 6 -->
| + | |
- | |0 <!-- 7 -->
| + | |
- | !1 <!-- 8 -->
| + | |
- | |0 <!-- 9 -->
| + | |
- | |0 <!-- 10 -->
| + | |
- | |-
| + | |
- | !K<sub>7</sub> = ''x''<sub>1</sub>''x''<sub>4</sub>
| + | |
- | |0 <!-- 1 -->
| + | |
- | |0 <!-- 2 -->
| + | |
- | |0 <!-- 3 -->
| + | |
- | |0 <!-- 4 -->
| + | |
- | |0 <!-- 5 -->
| + | |
- | !1 <!-- 6 -->
| + | |
- | |0 <!-- 7 -->
| + | |
- | !1 <!-- 8 -->
| + | |
- | !1 <!-- 9 -->
| + | |
- | !1 <!-- 10 -->
| + | |
- | |}
| + | |
- | | + | |
- | Далее, определим ядровые точки, то есть те α<sub>i</sub>, у которых в столбце только одна единица. Таковыми являются α<sub>1</sub>, α<sub>3</sub>, α<sub>5</sub>, α<sub>7</sub>, α<sub>9</sub>, α<sub>10</sub>. Соответственно, ядровыми гранями являются те грани, которые соответствуют конъюнкциям, которым принадлежат ядровые вершины (смотрим на строки, в которых хотя бы для одного из выбранных столбцов α<sub>i</sub> стоит единица), то есть K<sub>1</sub>, K<sub>2</sub>, K<sub>4</sub>, K<sub>5</sub>, K<sub>7</sub>. Дизъюнкция этих конъюнкций есть пересечение тупиковых.
| + | |
- | | + | |
- | Для нахождения всех тупиковых ДНФ построим КНФ, элементарныё дизъюнкции которой будут состоять из БП, соответствующих тем конъюнкциям, в которые входит рассматриваемая точка α<sub>i</sub> (то есть, всего дизъюнкций столько же, сколько есть точек, где функция принимает единичное значение, причём первая дизъюнкция будет содержать те БП, которые соответствуют тем ЭК, которым принадлежит α<sub>1</sub> (в данном примере это K<sub>1</sub>), вторая — те, которые соответствуют ЭК, которым принадлежит α<sub>2</sub> (K<sub>1</sub>, K<sub>2</sub>, K<sub>3</sub>), и так далее):
| + | |
- | | + | |
- | K<sub>1</sub> & (K<sub>1</sub> ∨ K<sub>2</sub> ∨ K<sub>3</sub>) & K<sub>2</sub> & (K<sub>3</sub> ∨ K<sub>6</sub>) & K<sub>4</sub> & (K<sub>4</sub> ∨ K<sub>5</sub> ∨ K<sub>7</sub>) & K<sub>5</sub> & (K<sub>6</sub> ∨ K<sub>7</sub>) & K<sub>7</sub> & K<sub>7</sub>
| + | |
- | | + | |
- | После раскрытия и приведения подобных получим ДНФ, состоящих из ЭК, которые будут соответствовать тупиковым ДНФ, причём БП в ЭК будут соответствовать ЭК, входящим в тупиковую ДНФ:
| + | |
- | | + | |
- | K<sub>1</sub> & (K<sub>1</sub> ∨ K<sub>2</sub> ∨ K<sub>3</sub>) & K<sub>2</sub> & (K<sub>3</sub> ∨ K<sub>6</sub>) & K<sub>4</sub> & (K<sub>4</sub> ∨ K<sub>5</sub> ∨ K<sub>7</sub>) & K<sub>5</sub> & (K<sub>6</sub> ∨ K<sub>7</sub>) & K<sub>7</sub> & K<sub>7</sub> = K<sub>1</sub>K<sub>2</sub>K<sub>4</sub>K<sub>5</sub>K<sub>7</sub> & (K<sub>1</sub> ∨ K<sub>2</sub> ∨ K<sub>3</sub>) & (K<sub>3</sub> ∨ K<sub>6</sub>) & (K<sub>4</sub> ∨ K<sub>5</sub> ∨ K<sub>7</sub>) & (K<sub>6</sub> ∨ K<sub>7</sub>) = K<sub>1</sub>K<sub>2</sub>K<sub>4</sub>K<sub>5</sub>K<sub>3</sub>K<sub>7</sub> ∨ K<sub>1</sub>K<sub>2</sub>K<sub>4</sub>K<sub>5</sub>K<sub>6</sub>K<sub>7</sub>
| + | |
- | | + | |
- | ДНФ K<sub>1</sub>K<sub>2</sub>K<sub>3</sub>K<sub>4</sub>K<sub>5</sub>K<sub>7</sub> ∨ K<sub>1</sub>K<sub>2</sub>K<sub>4</sub>K<sub>5</sub>K<sub>6</sub>K<sub>7</sub> соответствует тупиковым ДНФ
| + | |
- | {|
| + | |
- | !K<sub>1</sub> ∨ K<sub>2</sub> ∨ K<sub>3</sub> ∨ K<sub>4</sub> ∨ K<sub>5</sub> ∨ K<sub>7</sub>
| + | |
- | |<span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ ''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>''x''<sub>4</sub> ∨ ''x''<sub>1</sub>''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ ''x''<sub>1</sub>''x''<sub>4</sub>
| + | |
- | |-
| + | |
- | !K<sub>1</sub> ∨ K<sub>2</sub> ∨ K<sub>4</sub> ∨ K<sub>5</sub> ∨ K<sub>6</sub> ∨ K<sub>7</sub>
| + | |
- | |<span style="border-top:solid 1px">''x''</span><sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ <span style="border-top:solid 1px">''x''</span><sub>1</sub>''x''<sub>3</sub><span style="border-top:solid 1px">''x''</span><sub>4</sub> ∨ ''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub>''x''<sub>4</sub> ∨ ''x''<sub>1</sub>''x''<sub>2</sub><span style="border-top:solid 1px">''x''</span><sub>3</sub> ∨ ''x''<sub>1</sub><span style="border-top:solid 1px">''x''</span><sub>2</sub>''x''<sub>3</sub> ∨ ''x''<sub>1</sub>''x''<sub>4</sub>
| + | |
- | |}
| + | |
- | | + | |
- | {{Курс Основы Кибернетики}}
| + | |