3.2.1. Таблицы операторов и методика "средство -анализ завершения"
Допустимые операции, такие как перемещение робота из одной комнаты в другую или проталкивание объектов, кодируются в таблице операторов. Ниже показан элемент этой таблицы, соответствующий операции push (толкать):
push(X, Y, Z)
Предварительные условия at(po6oT, Y), at(X, Y)
Список удалений at (робот, Y), at(X, Y)
Список добавлений at (робот, Z), at(X, Z)
Здесь выражение push(X, Y, Z)
С точки зрения программиста переменные X, К и Z в определении оператора, заданном элементом таблицы, — это аналоги формальных параметров в определении процедуры, которая соответствует такому действию:
"Вытолкнуть какой-либо объект из какого-либо положения в любое другое положение, если имеют место заданные предварительные условия; затем удалить формулы, указанные в списке удаления, и добавить формулы, указанные в списке добавления".
С точки зрения логики элемент push таблицы операторов может быть прочитан в виде формулы, которая утверждает:
"При любых X, Y и Z объект X выталкивается из Y в Z, если робот и объект X находятся в 7, а затем состояние изменятся заменой Y на Z".
Целевое состояние также представляется формулой, например: а1(ящик1, комнатаА), а^ящик2, комнатаБ).
Программа STRIPS включает множество процедур, которые выполняют различные функции, в частности:
- обработка списка целей;
- выбор очередной цели;
- поиск операторов, которые могут быть использованы для достижения текущей цели;
- анализ соответствия между целью и формулам в списке добавлений в модель;
- установка сформулированных предварительных условий в качестве подцелей.
Этот простой пример обладает довольно интересными свойствами. Отметим, что формулы для модели мира в исходном состоянии
at(work), have(transport)
Такая стратегия "обратных" рассуждений, т.е. от целей к подцелям, чрезвычайно распространена в программах искусственного интеллекта и экспертных системах, как вы вскоре убедитесь на примере системы MYCIN. Но даже на таком ограниченном множестве операторов, как в нашем примере, может существовать несколько вариантов выполнения действий. В этом случае необходимо будет организовать какой-то механизм поиска наилучшей последовательности операторов, приводящих к достижению сформулированной цели.