Страница 3 из 4 После того как мы снова перейдем в начало цикла, на этот раз на уровне будут присутствовать все литералы из цели и ни один из них не будет взаимно исключающим по отношению к любому другому. Это означает, что может существовать решение и в функции Extract-Solution будет предпринята попытка его найти. По сути, функция Extract-Solution решает булеву задачу CSP, переменными которой являются действия на каждом уровне, а значениями для каждой переменной служат индикаторы, показывающие, принадлежит ли она или не принадлежит к плану. Для этого можно воспользоваться стандартными алгоритмами CSP или определить функцию Extract-Solution как задачу поиска, в которой каждое состояние в поиске содержит указатель на уровень в графе планирования и множество невыполненных целей. Определим эту задачу поиска, как описано ниже. • Первоначальным состоянием является последний уровень графа планирования, , наряду с множеством целей из задачи планирования. • Действия, доступные в любом состоянии на уровне , должны выбирать любое бесконфликтное подмножество действий на уровне , результаты которых покрывают цели в этом состоянии. Результирующее состояние имеет уровень и включает в качестве своего множества целей все предусловия для выбранного множества действий. Под термином "бесконфликтный" подразумевается множество таких действий, что никакие два из них не являются взаимно исключающими и никакие два из их предусловий не являются взаимно исключающими. • Задача состоит в том, чтобы достичь на уровне такого состояния, чтобы все цели были выполнены. • Стоимость каждого действия равна 1.
|