13.3 Алгоритм нумерации вариантов
Далее, используя значения функции для
каждого узла, можно построить алгоритм нумерации вариантов. Этот алгоритм по
номеру из данного дерева по- лучает необходимый вариант подстановки.
Предварительно зададим две функции нумерации, которые по номеру варианта для
рассматриваемого узла вычисляют номера вариантов для сыновей. Для И-узла будет
следующая функция:
где z - рассматриваемый узел дерева;
 |
- множество сыновей узла z; |
|
- количество вариантов в поддереве с узлом
|
 |
ПРИМЕЧАНИЕ. При выполнении операции
деления используются алгоритмы целочисленной арифметики. Рассмотрим пример
использования этой функции. Пусть задан И-узел z, у которого имеется три сына (
S1, S2, S3 ), и известно количество вариантов w(z) = 6, w(S1) = 1, w(S2) = 3,
w(S3) = 2.
Тогда можно записать следующую
таблицу значений номеров вариантов для сыновей в зависимости от номера варианта
узла z:
Таблица 13.1: Таблица значений
номеров вариантов для сыновей
Для ИЛИ-узла необходимо определить не
только номер варианта, но и номер соответствующего сына. Для этого запишем
следующую функцию:
где z - рассматриваемый узел дерева;
 |
- множество сыновей узла z; |
|
- количество вариантов в поддереве с узлом
|
 |
Рассмотрим пример.
Пусть задан ИЛИ-узел с 3 сыновьями и w(z) =
9, w(S1) = 3, w(S2) = 2, w(S3) = 4.
w(z) = w(S1) + w(S2) + w(S3)
Тогда можно записать следующую таблицу
значений для номера сына и номера варианта в зависимости от значения варианта
узла z:
Таблица 13.1: Таблица значений для
номера сына
Алгоритм определения варианта подстановки
по заданному номеру будет следующий.
- Первоначально производится подсчет количества вариантов для каждого узла
дерева.
-
В вариант записывается корень дерева, и он становится текущим узлом.
-
Определяется тип текущего узла. Если это И-узел, то переход на шаг 4, иначе
переход на шаг 5.
-
Все сыновья рассматриваемого узла записываются в данный вариант подстановки и для них соответственно с функцией для И-узлов определяются номера
вариантов для соответствующих поддеревьев.
-
Если это ИЛИ-узел, то определяется единственный сын и номер варианта для
соответствующего поддерева.
-
Происходит переход на рассмотрение следующего узла из списка включенных в
данный вариант подстановок.
-
Процесс определения варианта подстановок будет происходить до тех пор, пока
не будут достигнуты листья для всех рассматриваемых узлов варианта подстановок.

рис.12.4 Все варианты для примера И/ИЛИ дерева
|