logo
дискретная математика

33. Минимизация на кубе соседних чисел

Несложные функции удобно минимизировать путем сравнения рабочих и запрещенных наборов. Задача заключается в том, чтобы в каждом рабочем наборе оставить минимальное количество переменных, позволяющих отличить этот набор от всех запрещенных наборов.

Покажем это на примере минимизации функции «импликация х в y»:

х

у

(0)

0

(0)

1

1

(1)

1

0

Здесь отдельно записаны три рабочих (единичных) набора: 00, 01, 11. Набор 10 запрещенный (нулевой). Видно, что в наборе 00 достаточно оставить переменную x, поскольку значение этой переменной в одном – единственном запрещенном наборе равно 1. Таким образом, получили импликанту (0-). Эта же импликанта покрывает и набор 01. Тогда для набора 11 необходимо оставить переменную y, то есть, получили импликанту (-1). Таким образом, импликация представлена в виде (0-)(-1), то есть xy =xy.

Часто такую минимизацию удобно выполнять графически, например, на кубе соседних чисел, и объединять рабочие вершины в фигуры, покрываемые одной импликантой. Для функции трех переменных возможны следующие фигуры: вершина, ребро, сторона.

Пример минимизации двоичной переключательной функции, заданной своим десятичным номером по решетке Хассе (кубу соседних чисел).

Дано: двоичная переключательная функция (ПФ) №17410 (табл. 39).

Получим соответствующий двоичный код: 101011102 (27+25+23+22+21).

Таблица 39

Таблица истинности ПФ №17410

Переменные

ВС

f(abc)

а

b

с

0

0

0

0

0

20

0

0

1

1

1

21

0

1

0

2

1

22

0

1

1

3

1

23

1

0

0

4

0

24

1

0

1

5

1

25

1

1

0

6

0

26

1

1

1

7

1

27

Минимизируем ПФ по кубу соседних чисел (рис. 49, рабочие вершины закрашены):

Рис. 49. Минимизация ПФ №17410 по решетке Хассэ

Квадрат соответствует обобщенному коду – импликанте (--1).

Ребро соответствует обобщенному коду – импликанте (01–)

Таким образом, ДНФ ПФ имеет вид: , т.еf(abc)=c a b.

На использовании куба соседних чисел основан метод поразрядного сравнения рабочих и запрещенных восьмеричных наборов – метод Л.Ф. Викентьева [6, 17].

34.Минимизация ПФ методом поразрядного сравнения восьмеричных рабочих и запрещенных наборов (метод Л.Ф. Викентьева).

Минимизация переключательных функций на основе поразрядного сравнения рабочих и запрещенных восьмеричных наборов.

Основа метода заключается в том, что минимизация переключательной функции большого числа переменных сводится к минимизации нескольких переключательных функций, зависящих не более чем от трех переменных. В свою очередь, для упрощения эти отдельные функции минимизируются по кубу соседних чисел, то есть исходную функцию необходимо задать в символической форме в восьмеричной системе счисления.

Тогда для каждого разряда восьмеричного рабочего числа функции определяются запрещенные цифры, то есть такие, которые в совокупности с другими разрядами восьмеричного рабочего числа приведут к получению запрещенных чисел функции. Затем, используя куб соседних чисел, следует минимизировать функцию трех переменных (определить покрытие данного разряда). Так минимизируются все разряды. По полученным обобщенным кодам для каждого восьмеричного разряда определяется ДНФ для всего рабочего числа. По полученному покрытию определяют, какие рабочие числа покрывает дополнительно полученная импликанта (кроме данного числа). Числа, покрытые полученной импликантой, удаляют. Оставшиеся числа вновь подвергают минимизации – пока не будут покрыты все рабочие наборы. Метод особенно эффективен для недоопределенных функций.

Пример 1. Задана функция в восьмеричной системе счисления:

f86х5х4х3х2х1)=56[26].

Всего существует 64 набора переменных для функции 6 переменных. Как видно, используется только один рабочий и один запрещенный, остальные наборы – условные.

Каждое рабочее число соответствует члену СДНФ. Восьмеричная система позволяет очень легко переходить к СДНФ. Каждый разряд восьмеричного числа – это 3 разряда двоичного числа. В данном примере 6 переменных:

f86х5х4х3х2х1)=(101110)=.

Таким образом, говорят, что ранг такого представления =6.

Определим запрещенные числа для старшего разряда числа 56, т.е. для 5. Будем подставлять вместо первого разряда возможные числа, а их всего 7 – система-то восьмеричная!

Получаем: 06,16,26,36,46,66,76. Видим, что число 2 – запрещенное, в совокупности с ним второй разряд (6) приводит к получению запрещенного набора 26.

Результат анализа запишем следующим образом:

Цифра 5, стоящая над чертой указывает заданное значение старшего разряда рабочего числа, а цифра 2, стоящая под чертой, – запрещенное значение этого разряда.

Минимизируем функцию трех переменных f86х5х4)= 5[2] по кубу соседних чисел (рис. 49). Получаем возможное покрытие (1Ú3Ú5Ú7) и импликанту (--1).

Запишем это таким образом:

Эта запись означает, что функцию, заданную одним рабочим числом 56, мы доопределили до четырех рабочих чисел: 16, 36, 56, 76. Число 56 – рабочее – вошло в покрытие, а вот запрещенное – 26 – нет.

Теперь нужно аналогичным образом минимизировать младший разряд рабочего числа. Определим возможные наборы, которые могут получиться путем соединения покрытия (1Ú3Ú5Ú7) и второго разряда, который может принимать значения 0,…,7: 10,…,17,30,…,37,50,…,57,70,…,77. Очевидно, что ни в одном случае мы не получим запрещенного набора 26, а значит, запрещенных чисел для второго разряда 6 рабочего числа 56 нет, поскольку запрещенный набор начинается на число 2, а двойки в покрытии (1Ú3Ú5Ú7) нет.

Запишем результат следующим образом:

где .

Здесь прочерк под цифрой 6 означает отсутствие запрещенных разрядов.

Таким образом, доопределили функцию до 32 наборов, но набор 26, естественно, не вошел в покрытие. Пользуясь кубом соседних чисел, минимизируем второй разряд: f83х2х1)=6.

Здесь нет запрещенных чисел, поэтому получаем импликанту (---), которая соответствует объединению всех вершин куба (полный куб): f83х2х1)=(---).

Тогда f86х5х4х3 х2х1)=(--1)(---)=х1.

Получено одно из возможных решений, представляющее собой простую импликанту переключательной функции, покрывающую рассмотренное восьмеричное рабочее число.

Минимизация методом поразрядного сравнения не однозначна, возможны различные варианты решений. Можно было при минимизации первого разряда взять другие квадраты (4Ú5Ú6Ú7), (0Ú1Ú4Ú5), тогда ответ был бы другим, но все равно ранг его был бы равен 1.

Пример 2. Минимизировать переключательную функцию, заданную в символической форме в восьмеричной системе счисления:

f85х4х3 х2х1)=37,22,31[00,16,10].

Минимизируем рабочее число 37:

Проверим, какие рабочие числа покрывают этот член ДНФ (простая импликанта). Из выражения видно, что покрываются рабочие числа 37 и 31. Осталось число 22. Рассмотрим его:

Итак, f85х4х3х2х1)=(--)(--1)Ú(--)(01-)=.

Здесь в первом разряде обобщенных кодов два (символов «тире»), т.к. функция зависит от пяти переменных. Говорят, что старшая триада неполная.

Теперь начнем минимизацию той же функции с младшего разряда:

Получили x5. Очевидно, x5 покрывает все рабочие числа 37, 22, 31.

Видим, что данный вариант дает самую минимальную форму.