Инженерная логика против классической

Вид материалаКнига

Содержание


2.2. Алгоритм соседнего определения базы МОК.
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   20

2.2. Алгоритм соседнего определения базы МОК.


Алгоритм 1 требует раздельного размещения РОК и ЗОК. Приведение таблицы истинности к такому виду усложняет метод ОК.

Процесс минимизации методом ОК может быть существенно упрощен, если определение БМОК производить с использованием приводимого ниже алгоритма.

Алгоритм 2.

1. Присвоить индексу МОК значение 1, т.е. i := 1 .

2. Присвоить индексу РОК значение 1 , т.е. j := 1.

3. Взять РОК из исходной таблицы истинности и, сравнивая его со всеми ЗОК , определить переменные , по которым РОК может быть склеен с ЗОК. Эта совокупность переменных и будет базой МОКi . Перейти к п.7.

4. Если РОКj не имеет соседних ЗОК, то j := j + 1 и перейти к п.3. Если в таблице истинности нет ни одного РОК, соседнего хотя бы с одним ЗОК , то перейти к п.5.

5. Подсчитать по таблице истинности F0 и F1 для всех разрядов.

6. В качестве базы МОКi (БМОКi ) или дополнения к БМОКi выбрать переменную с максимальной F0 или F1. Если F0 = max, то переменная входит в БМОКi нулём. Если F1 = max , то переменная входит в БМОКi единицей . Если несколько переменных имеют одинаковые оценочные (максимальные) функции , то выбрать в качестве БМОКi ту переменную , у которой соответствующая запрещённая оценочная функция ( F0з или F1з ) имеет минимальное значение, в противном случае в качестве БМОКi взять любую переменную с максимальной оценочной функцией F0 или F1 .

7. Выписать РОК и ЗОК , покрываемые базой МОКi . Если БМОКi не покрывает ни одного РОК или покрывает все ЗОК, то приравнять нулю оценочные функции F0 и F1 для данного разряда и перейти к п.6. Если покрываемых ЗОК нет , то перейти к п.9.

8. Подсчитать F0 и F1 для всех разрядов РОК и ЗОК , покрываемых данной базой, кроме разрядов (переменных) , образующих БМОКi. Присоединить к БМОКi переменную (дополнение к БМОКi ) с максимальной оценочной функцией в соответствии с требованиями п.6. Считать полученный ОК новой базой МОКi . Если новая БМОКi покрывает столько же ЗОК, сколько и на предыдущем шаге, то приравнять нулю оценочные функции или дополнения к БМОКi , отбросить присоединённую переменную и добавить к БМОКi переменную с максимальной оценочной функцией в соответствии с положениями п.6, считать полученный ОК новой БМОКi .Если БМОКi покрывает хотя бы один ЗОК, перейти к п.7.

9. Принять в качестве МОКi базу МОКi .

10. Если все РОК из исходной таблицы истинности покрыты минимальными обобщёнными кодами, перейти к п.12.

11. Выписать из исходной таблицы истинности все ЗОК и те РОК , которые не покрыты минимальными обобщёнными кодами . Считать вновь полученную таблицу исходной таблицей истинности. Увеличить индекс МОК на единицу , т.е. i := i+1. Перейти к п.2.

12. Конец.

Задача 9.

Произвести минимизацию булевой функции , заданной таблицей.

п/п

x8 x7 x6 x5 x4 x3 x2 x1

y

1

2

3

4

5

6

7

8

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 1

0 0 0 0 0 1 0 0

0 0 0 0 1 1 0 0

0 0 0 0 1 0 0 1

0 0 0 0 1 0 0 0

0 1 1 0 0 0 0 0

0 1 1 0 0 0 0 1

1

1

1

1

1

1

1

1

1

2

3

4

0 0 0 1 0 0 0 1

0 1 0 1 0 0 0 1

1 1 0 1 1 0 0 0

0 0 0 0 0 1 1 0

0

0

0

0


Решение.

1. По алгоритму 2 пп. 1-3 для РОК2 находим соседний ЗОК, т.е. находим БМОК1 = ---0----.

2. По алгоритму 2 пп. 7-9 находим

МОК1 = ---0--0-

Так как МОК1 покрывает все РОК , то в соответствии с п.10 алгоритма 2 получаем

y = x5’x2

Сущность алгоритма 2 заключается в том , что отыскиваются в первую очередь « необходимые « МОК, т.е. МОК для тех РОК , развязывание которых с ЗОК максимально затруднено , так как они развязываются только по тем переменным , по которым возможно склеивание данного РОК со всеми ЗОК. Под развязыванием понимается процесс выявления тех переменных в РОК, которые не встречаются в ЗОК.

Задача 10.

Произвести минимизацию булевой функции , заданной таблицей.




x6 x5 x4 x3 x2 x1

y

1

2

3

4

5

6

0 0 1 0 0 0

0 0 1 0 0 1

0 1 1 0 1 1

0 1 1 1 1 0

1 0 1 0 0 0

1 1 1 1 1 1

1

1

1

1

1

1

1

2

3

4

5

6

0 0 1 0 1 1

0 0 1 0 1 0

0 0 1 1 0 1

1 1 0 1 1 0

1 1 1 0 1 0

1 1 1 1 0 1

0

0

0

0

0

0



Решение .

1. По алгоритму 2 пп.1-3 для РОК1 находим

БМОК1 = ----0-

2. По алгоритму 2 пп.7, 8 строим таблицу.

1

2

5

0 0 1 0 0 0

0 0 1 0 0 1

1 0 1 0 0 0

1

1

1



0 0 1 1 0 1

1 1 1 1 0 1

0

0

3. По алгоритму 2 п.8 из таблицы находим БМОК1 = ---00-

4. По алгоритму 2 п.9

МОК1 = БМОК1 = ---00-

5. По алгоритму 2 для непокрытых РОК (для РОК3) находим

БМОК2 = -1----.

6. По алгоритму 2 пп.7, 8 , 11 строим таблицу.


3

4

6

0 1 1 0 1 1

0 1 1 1 1 0

1 1 1 1 1 1

1

1

1




1 1 0 1 1 0

1 1 1 0 1 0

1 1 1 1 0 1

0

0

0



5 - 2 3 2 2

1 - 4 3 4 4

F0

F1


7. По алгоритму 2 п.9 находим МОК2

МОК2 = 01----

8. По алгоритму 2 пп.7, 8, 11 строим следующую таблицу .


1 1 1 1 1 1

1

0 0 1 0 1 1

0 0 1 0 1 0

0 0 1 1 0 1

1 1 0 1 1 0

1 1 1 0 1 0

1 1 1 1 0 1

0

0

0

0

0

0


9. По алгоритму 2 п.3 находим БМОК3

БМОК3 = ----1-

10. По алгоритму 2 пп. 7, 8, 11 строим таблицу.


1 1 1 1 1 1

1

0 0 1 0 1 1

0 0 1 0 1 0

1 1 0 1 1 0

1 1 1 0 1 0

0

0

0

0

2 2 3 1 - 1

3 3 2 4 - 4

F0

F1

11. Из таблицы по алгоритму 2 п.8 находим

БМОК3 = ----11

12. По алгоритму 2 пп. 7, 8 строим следующую таблицу.


1 1 1 1 1 1

1

0 0 1 0 1 1

0

0 0 1 0 - -

1 1 1 1 - -

F0

F1

13. По таблице 17 определяем

МОК3 = -1--11

Таким образом ,

y = x3’x2’ + x5x2x1 + x6’x5

На рисунке представлено решение задачи 10 с помощью карты Карно . Функция y представлена в виде МДНФ.

Из рисунка видно , что результаты минимизации по карте Карно и по методу обобщённых кодов совпадают.




Карта Карно к задаче 10.


Задача 10а.

Произвести минимизацию логической функции, заданной таблицей истинности.


N%

x8x7x6x5x4x3x2x1

y

1

2

3

4

5

6

7

0 0 1 1 0 0 1 1

0 0 1 0 0 0 1 0

0 0 1 1 0 1 1 1

1 0 1 1 0 1 1 1

0 0 1 0 1 0 1 1

0 1 1 0 1 1 0 1

0 1 1 1 1 1 1 0

1

1

1

1

1

1

1

1

2

3

4

5

0 1 1 1 0 1 1 1

1 1 0 1 0 1 1 1

0 0 0 1 1 1 1 0

1 1 1 1 1 1 0 1

1 0 1 0 1 1 1 0

0

0

0

0

0




9 8 3 7 7 8 5 5

3 4 9 5 5 4 7 7

F0

F1



Т.к. РОК3 и ЗОК1 являются соседними по x7,то в качестве БМОК1 выбираем х7’,не обращая внимание на абсолютный максимум F0 для х8.БМОК1 покрывает РОК1 - РОК5 и ЗОК3,ЗОК5.Подсчитаем оценочные функции для выбора дополнения к БМОК1 и получения МОК1.


N%

x8x7x6x5x4x3x2x1

y

1

2

3

4

5


0 0 1 1 0 0 1 1

0 0 1 0 0 0 1 0

0 0 1 1 0 1 1 1

1 0 1 1 0 1 1 1

0 0 1 0 1 0 1 1


1

1

1

1

1


3

5

0 0 0 1 1 1 1 0

1 0 1 0 1 1 1 0

0

0




5 x 1 3 6 5 2 1

2 x 6 4 1 2 5 6

F0

F1



Дополнение х4’ могло бы привести нас к МДНФ,поэтому мы выберем эквивалентное по оценочной функции дополнение х1,чтобы убедиться в некоторых недостатках метода. В результате получим МОК1 = x7’x1. Поскольку МОК1 покрывает РОК с номерами 1,3 - 5,то стартовая таблица для синтеза БМОК2 выглядит так:



N%

x8x7x6x5x4x3x2x1

y

2

6

7

0 0 1 0 0 0 1 0

0 1 1 0 1 1 0 1

0 1 1 1 1 1 1 0

1

1

1

1

2

3

4

5

0 1 1 1 0 1 1 1

1 1 0 1 0 1 1 1

0 0 0 1 1 1 1 0

1 1 1 1 1 1 0 1

1 0 1 0 1 1 1 0

0

0

0

0

0




6 4 3 6 4 6 5 5

2 4 5 2 4 2 3 3

F0

F1


Исходя из этой таблицы получаем БМОК2 = x8’. Для нахождения МОК2 строим следующую таблицу.


N%

x8x7x6x5x4x3x2x1

y

2

6

7

0 0 1 0 0 0 1 0

0 1 1 0 1 1 0 1

0 1 1 1 1 1 1 0

1

1

1

1

3


0 1 1 1 0 1 1 1

0 0 0 1 1 1 1 0

0

0




х 2 1 4 2 3 3 3

х 3 4 1 3 2 2 2

F0

F1



Отсюда получаем МОК2 = х8’x5’, который дополнительно покрывает РОК2 и РОК6. Найдём БМОК3.


N%

x8x7x6x5x4x3x2x1

y

7

0 1 1 1 1 1 1 0

1

1

2

3

4

5

0 1 1 1 0 1 1 1

1 1 0 1 0 1 1 1

0 0 0 1 1 1 1 0

1 1 1 1 1 1 0 1

1 0 1 0 1 1 1 0

0

0

0

0

0




4 3 3 4 3 5 4 4

2 3 3 2 3 1 2 2

F0

F1


F0 для х3 имеет максимальное значение,но использовать x3’ в качестве БМОК3 нельзя,поскольку единственный РОК не имеет нуля в данном разряде. Принимаем БМОК3 = x8’. Строим очередную таблицу для синтеза последнего МОК.



N%

x8x7x6x5x4x3x2x1

y

7

0 1 1 1 1 1 1 0

1

1

3


0 1 1 1 0 1 1 1

0 0 0 1 1 1 1 0


0

0





х 1 1 2 1 2 2 2

х 2 2 1 2 1 1 1

F0

F1