Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретка_Экзамен_Ответы / булевы / 5 Вычисление значения булевой функции по бин графу

.docx
Скачиваний:
63
Добавлен:
11.03.2015
Размер:
20.21 Кб
Скачать

5.11.3. Вычисление значения булевой функции

по бинарному графу

Если булева функция задана бинарным графом (или деревом), то можно написать программу вычисления её значения с использованием только команд двух типов:

<условная команда>  <метка> если <аргумент> то <метка> иначе <метка>

<операторная команда>  <метка> F:=<значение> конец

Для того, чтобы написать программу, необходимо произвольным образом пронумеровать вершины бинарного графа, начиная с начальной вершины (рис.5.6). Каждой вершине графа соответствует команда программы. Начальной и условным вершинам соответствуют условные команды, а заключительным – операторные. Если в начальной или условной вершине с номером m записан аргумент xi, дуга, отмеченная нулём, идёт в вершину с номером n, а дуга, отмеченная единицей, идёт в вершину с номером k, то такой вершине соответствует команда:

m если xi то k иначе n

Заключительной вершине с номером l, в которой записано f=0, соответствует команда:

l F:=0 конец

Заключительной вершине с номером p, в которой записано f=1, соответствует команда:

p F:=1 конец

Рис.5.6. Бинарный граф булевой функции с пронумерованными вершинами

Программа вычисления значения булевой функции по бинарному графу (рис.5.6) будет такой:

1 если x1 то 3 иначе 2

2 если x2 то 4 иначе 5

3 если x2 то 7 иначе 4

4 если x3 то 7 иначе 5

5 если x4 то 7 иначе 6

6 F:=1 конец

7 F:=0 конец

Рассмотрим ещё один способ вычисления значения булевой функции по бинарному графу. Представим бинарный граф таблицей. Таблица имеет три столбца, нумерация которых начинается с нуля. Строки таблицы соответствуют вершинам графа. Если в начальной или условной вершине с номером m записан аргумент xi, дуга, отмеченная нулём, идёт в вершину с номером n, а дуга, отмеченная единицей, идёт в вершину с номером k, то такой вершине соответствует строка таблицы с номером m, нулевой столбец которой содержит n, первый - k и второй - i. Заключительной вершине с номером l, в которой записано f=0, соответствует строка таблицы с номером l, в которой все столбцы содержат нули. Заключительной вершине с номером p, в которой записано f=1, соответствует строка таблицы с номером p, в которой нулевой и первый столбцы содержат нули, а второй - единицу. Другими словами, если строка соответствует начальной или условной вершине, то нулевой и первый столбцы таблицы содержат номера вершин, в которые идут дуги из вершины, отмеченные соответственно нулём и единицей, а второй – содержит номер аргумента. Если же строка соответствует заключительной вершине, то нулевой и первый столбцы содержат нули, а второй – значение функции. Бинарный граф (рис.5.6) представлен таблицей 5.30.

Таблица 5.30

0

1

2

1

2

3

1

2

5

4

2

3

4

7

2

4

5

7

3

5

6

7

4

6

0

0

1

7

0

0

0

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

Алгоритм вычисления значения булевой функции по бинарному графу.

Вход: X – набор значений аргументов;

T – таблица бинарного графа булевой функции.

Выход: F – значение булевой функции.

1. v:=1;

2. Пока T[v,0]0 выполнять v:=T[v,X[T[v,2]]];

3. F=T[v,2].