Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пролог_шпоры.docx
Скачиваний:
35
Добавлен:
27.09.2019
Размер:
103.66 Кб
Скачать

9.Декларативный и процедурный смысл программы на Прологе.

Различают два уровня смысла.

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

Р:-А, В

Декларативный смысл этого предположения: Р истина, если А и В истинны. Процедурный смысл: чтобы решить Р, сначала надо решить А , а потом В. Способность Пролог-системы прорабатывать многие процедурные детали самостоятельно считается одним из специфических преимуществ Пролога. Этот факт имеет практическое значение, так как декларативные аспекты программы обычно являются более легкими для понимания чем процедурные детали.

10.Сопоставление. Правила сопоставимости термов, структур.

Наиболее важной операцией над термами являетяс соспоставление. Два терма сопоставимы если:

  • они идентичны;

  • переменные в обоих термах можно переписать в качестве значений объекта (то есть конкретизируют их).

Т.о., чтобы после подстановки этих объектов в терм вместо переменных 2 терма стали идентичны. Например термы дата (Д, М, 1999) и дата (Д1, май, Х) сопоставимы. С другой стороны дата (Д, М, 1999) и дата (Д1, М1, 1945) не сопоставимы.

Общие правила сопоставимости двух термов таковы:

  1. Если С и Т константы, то С и Т сопоставимы только если они являются одними и теми же объектами.

  2. Есил С – переменная, Т – произволный объект, то они сопоставимы и С приписывается значение Т.

  3. Если С и Т структуры, то они сопоставимы, если: С и Т имеют одинаковый главный функтор; все их составляющие компоненты сопоставимы.

В Прологе связывание переменных (со значениями) производится двумя способами: на входе и выходе. Когда переменная передается в предложение, она считается входным аргументом и обозначается символом (i). Когда же переменная возвращается из предложения, она является выходным аргументом и обозначается символом (о).

11 Согласование целевых утверждений. Поиск с возвратом. Цель может быть согласована, если она сопоставляется с заголовком какого-либо предложения. Если сопоставление происходит с фактом, то цель согласуется немедленно. Если же сопоставление происходит с заголовком правила, то цель согласуется только тогда, когда будет согласована каждая подцель в теле этого правила, после вызова ее в качестве цели. Подцели вызываются слева направо. Поиск подходящего для сопоставления предложения ведется с самого начала базы. Если подцель не допускает сопоставления, то система совершает возврат для попытки повторного согласования подцели. При попытке повторного согласования система возобновляет просмотр базы с предложения, непосредственно следующего за тем, которое обеспечивало согласование цели ранее. В программе на Прологе важен порядок предложений внутри процедуры, а также порядок хвостовых целей в теле предложений. От порядка предложений зависит порядок поиска решений и порядок, в котором будут находиться ответы на вопросы. Порядок целей влияет на количество проверок, выполняемых программой при решении. Часто при решении реальной задачи мы придерживаемся определенного пути для ее логического завершения. Если полученный результат не дает искомого ответа, мы должны выбрать другой путь. Так, вам, возможно, приходилось играть в лабиринт. Один из верных способов найти конец лабиринта - это поворачивать налево на каждой развилке лабиринта до тех пор, пока вы не попадете в тупик. Тогда следует вернуться к последней развилке и попробовать свернуть вправо, после чего опять поворачивать налево на каждом встречающемся распутье. Путем методичного перебора всех возможных путей вы, в конце концов, найдете выход. Пролог при поиске решения задачи использует именно такой метод проб и возвращений назад; этот метод называется поиск с возвратом. Если, начиная поиск решения задачи (или целевого утверждения), Пролог должен выбрать между альтернативными путями, то он ставит маркер у места ветвления (называемого точкой отката) и выбирает первую подцель, которую и станет проверять. Если данная подцель не выполнится (что эквивалентно достижению тупика в лабиринте), Пролог вернется к точке отката и попробует проверить другую подцель.Когда Пролог пытается произвести согласование целевогоутверждения, он начинает поиск с вершины программы.