Lt;структура-1>, ...,<структура-N>.
Конкретизация переменной – связывание переменной языка ПРОЛОГ с конкретным значением.
Конкретизация переменной обеспечивает возврат искомых значений переменных по запросам.
Выполнение запроса в языке ПРОЛОГ – процесс доказательства выводимости всех подцелей целевого утверждения методом резолюции с использовании линейной по входу стратегии.
Получив запрос, состоящий из нескольких предикатов, интерпретатор выбирает первый в последовательности запроса предикат и делает попытку (если этот предикат не встроенный) согласовать его с утверждениями, составляющими базы фактов и правил, для чего выполняется сопоставление этого предиката со всеми фактами и заголовками этих правил в простом линейном порядке до тех пор, пока оно не даст положительного результата. Если этого не происходит, ответом на запрос будет "Нет". В ходе согласования возможна конкретизация переменных значениями.
Если в ходе просмотра произошло сравнение с заголовком правила, то тело правила рекурсивно рассматривается в качестве нового целевого утверждения, доказательство которого реализуется с помощью рассматриваемой здесь процедуры.
Удовлетворив один предикат (подцель) запроса, интерпретатор переходит к соседнему справа, обрабатывая его аналогичным образом.
Запрос считается выполненным после удовлетворения его последней (крайней справа) подцели. Если же какая-либо подцель (но не первая) не может быть удовлетворена (согласована), то в работу включается механизм бэктрекинга, который заставляет интерпретатор, передвигаясь по предикатам целевого утверждения справа налево, вновь согласовывать эти предикаты, но уже на новых утверждениях программы. Если попытка пересогласовать какой-либо предикат (подцель) удается, то интерпретатор продолжает рассмотрение подцелей от данной в обычном порядке (слева направо).
Применение ПРОЛОГа для решения интеллектуальных задач, в частности в экспертных системах удачно настолько, что породило мнение, что ПРОЛОГ не является языком программирования в чистом виде. Его можно считать и оболочкой экспертной системы, и реализацией интеллектуальной база данных (не реляционной).
Машинная реализация языка предиката первого порядка имеет ряд серьезных проблем, которые связаны с универсальностью аппарата логического вывода. 1-я проблема — монотонность рассуждений (в процессе логического вывода нельзя отказаться от промежуточного заключения, если становятся известными дополнительные факты, которые свидетельствуют о том, что полученные на основе этого заключения решения не приводят к желаемому результату. 2-я проблема — комбинаторный взрыв ( в процессе логического вывода невозможно применять оценочные критерии для выбора очередного правила. Безсистемное применение правил в расчете на случайное доказательство приводит к тому, что возникает много лишних цепочек ППФ, активных в определенный момент времени. Это чаще всего приводит к переполнению рабочей памяти.
Билет №22
Дата добавления: 2016-05-11; просмотров: 1655;