Экспертные системы

Раскрыть n. Вычислить значение g

для дочерних вершин.

Поместить эти вершины в список ОТКРЫТ.

Провести от них указатели к n.

рис.7 Блок- схема программы алгоритма равных цен для деревьев.

4.3 Метод перебора в глубину.

В методах перебора в глубину прежде всего раскрываются те вершины, которые были построены последними. Определим глубину вершины дереве следующим образом:

Глубина корня дерева равна нулю.

Глубина любой последующей вершины равна единице плюс глубина вершины, которая непосредственно ей предшествует.

Таким образом, вершиной, имеющей наибольшую глубину в дереве перебора, в данный момент служит та, которая должна в этот момент быть раскрыта.

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

Метод перебора в глубину определяется следующей последовательностью шагов:

1) Поместить начальную вершину в список, называемый ОТКРЫТ.

2) Если список ОТКРЫТ пуст, то на выход подается сигнал о неудаче поиска, в противном случае перейти к шагу (3).

3) Взять первую вершину из списка ОТКРЫТ и перенести в список ЗАКРЫТ. Дать этой вершине название n.

4) Если глубина вершины n равна граничной глубине, то переходить к (2), в противном случае к (5).

5) Раскрыть вершину n, построив все непосредственно следующие за ней вершины. Поместить их (в произвольном порядке) в начало списка ОТКРЫТ и построить указатели, идущие от них к n.

6) Если одна из этих вершин целевая, то на выход выдать решение , просматривая для этого соответствующие указатели, в противном случае переходить к шагу (2).

На рис.8 приведена блок- схема для метода перебора в глубину.

Пуск

Поместить s в список ОТКРЫТ.

 
нет Пуст ли да

список неудача

ОТКРЫТ?

Взять первую вершину из списка

ОТКРЫТ

и поместить ее в список ЗАКРЫТ.

Обозначить ее через n.

да Равна ли глубина нет

n граничной глубине

 

Раскрыть n. Вычислить значение g

для дочерних вершин.

Поместить эти вершины в список ОТКРЫТ.

Провести от них указатели к n

Являются ли

нет какие- либо да

из дочерних вершин успех

целевыми?

рис.8 Блок-схема программы алгоритма поиска в глубину для деревьев.

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

4.4. Изменение при переборе на произвольных графах

При переборе на графах, а не на деревьях, нужно внести некоторые естественные изменения в указанные алгоритмы. В простом методе полного перебора не нужно вносить никаких изменений, следует лишь проверять, не находиться ли уже вновь построенная вершина в список ОТКРЫТ или ЗАКРЫТ по той причине, что она уже строилась раньше в результате раскрытия какой- то вершины. Если это так, то ее не нужно вновь помещать в список ОТКРЫТ.


Страница: