Пролог

 Общая структура системы PROLOG показана на рис. 1. Пользователь взаимодействует с системой PROLOG, вводя запросы в форме предикатов и получая ответы. **Предикативная база данных** содержит предикаты, представленные в виде правил и фактов, которые были в нее введены и в результате сформировали базу знаний. Интерпретатор предпринимает попытки определить, следует ли предикат запроса, введенный пользователем, из базы данных. Если запрос сформулирован как факт и этот факт находится в базе данных, интерпретатор возвращает ответ yes, а если этот факт в базе данных отсутствует — возвращает ответ no. С другой стороны, если запрос сформулирован в виде правила, то интерпретатор предпринимает попытки выполнить подцели этого правила, проводя **поиск в глубину**, как показано на рис. 2. Для сравнения на этом рисунке показан также ход **поиска в ширину**, хотя такой режим работы в системе PROLOG обычно не применяется. Рис.1. Общая организация системы PROLOG При поиске в глубину поиск в дереве начинается от корня, продолжается настолько далеко, насколько это возможно, после чего происходит возврат. Еще одна отличительная особенность поиска в системе PROLOG состоит в том, что он происходит слева направо. А поиск в ширину предусматривает полную обработку узлов на текущем уровне перед переходом на следующий, более низкий уровень. Рис.2. Поиск в глубину и поиск в ширину применительно к дереву произвольной формы После того как система PROLOG принимает входной запрос, начинается поиск выражения, голова которого согласуется с входным шаблоном. Такая процедура называется **сопоставлением с шаблоном**. Поиск начинается с первого введенного оператора, который находится в **начале** списка операторов, и происходит в направлении к последнему оператору, находящемуся в **конце** списка. С точки зрения разработчиков экспертных систем, особенно важными возможностями PROLOG являются перебор с возвратами и сопоставление с шаблонами. К тому же важно то, что язык PROLOG имеет декларативный характер, поскольку это означает, что в качестве исполняемой программы непосредственно применяется спецификация программы.
 * Обеспечение поиска в языке PROLOG**

1. Джозеф Джарратано, Гари Райли «Экспертные системы: принципы разработки и программирование»: [] 2. «Язык PROLOG»; часть 1: [|http][|://][|www][|.][|williamspublishing][|.][|com][|/][|PDF][|/5-8459-0664-4/][|part][|.][|pdf]
 * Источники:**