Дискретка_Экзамен_Ответы / булевы / 5 Вычисление значения булевой функции по бин графу
.docx5.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].