TURBO PROLOG. Терёхин В.В. - 29 стр.

UptoLike

Составители: 

29
перекрестка. Здесь вы опять повернете направо и поищите вход в парк. Если
вам вновь неудастся найти вход в парк, вы еще раз вернетесь назад (выпол-
ните откат) и сделаете попытку на следующем перекрестке. Вы будете по-
вторять этот процесс до тех пор, пока вам не удастся достичь вашей цели
найти дом
, или же вы потерпите полную неудачу и откажитесь от этой затеи.
Для вас этот вид поиска, вероятно, будет утомительным, но Турбо-
Пролог неутомим при поиске всех возможных путей решения задачи. Так
же как и вы, Турбо-Пролог использует откат для того, чтобы попробовать
новые пути к решению. И, так же
как вы, Турбо-Пролог использует всю дос-
тупную информацию для выбора подходящего направления. Типичная про-
грамма на Турбо-Прологе содержит факты и правила, основанные на самых
различных взаимосвязях предикатов. Правила могут иметь несколько право-
сторонних частей, которые соединены связками. Цель может состоять из не-
скольких подцелей, а переменные могут быть
объектами предиката как в ут-
верждениях, так и в подцелях. Другими словами, типичные программы на
Турбо-Прологе представляют собой комбинации всех элементов, о которых
вы узнали до сих пор в этой главе.
Турбо-Пролог пытается вычислить цель при помощи сопоставления
терма предиката и объектов цели с соответствующими элементами в фак-
тах
и головах правил. Сопоставление выполняется слева направо. Некоторые
подцели, вероятно, будут неуспешными при сопоставлении с некоторыми
фактами или правилами, поэтому Турбо-Прологу требуется способ "запо-
минания точек", в которых он может продолжить альтернативные попытки
найти решение. Прежде чем попробовать один из возможных путей решения
подцели, Турбо-Пролог фактически помещает в
программу "указатель".
Указатель определяет точку, в которую может быть выполнен откат, если те-
кущая попытка будет неудачной.
По мере того, как Турбо-Пролог успешно заканчивает свои попытки
вычисления подцелей слева направо, указатели отката расставляются во
всех точках, которые могут привести к решению. Если некоторая подцель
оказывается неуспешной, то Турбо-Пролог
откатывается влево и останавли-
вается у ближайшего указателя отката. С этой точки Турбо-Пролог начинает
попытку найти другое решение для неуспешной цели.
До тех пор, пока следующая цель на данном уровне не будет успеш-
ной, Турбо-Пролог будет повторять откат к ближайшему указателю отката.
Эти попытки выполняются внутренними подпрограммами унификации
и ме-
ханизмом отката. Окончательным результатом будет либо успешное, либо
неуспешное вычисление цели.
С некоторыми небольшими дополнениями факты и правила о Мэри,
Бет и яблоках могут быть использованы для иллюстрации отката и внутрен-
ней унификации. Данный пример содержит переменные, а также факты и
правила, которые обрабатываются подпрограммой внутренней унификации
при
выполнении операций сопоставления.
Факты для отношения likes:
likes(mary, pears). /* Мэри любит персики */
перекрестка. Здесь вы опять повернете направо и поищите вход в парк. Если
вам вновь неудастся найти вход в парк, вы еще раз вернетесь назад (выпол-
ните откат) и сделаете попытку на следующем перекрестке. Вы будете по-
вторять этот процесс до тех пор, пока вам не удастся достичь вашей цели
найти дом, или же вы потерпите полную неудачу и откажитесь от этой затеи.
      Для вас этот вид поиска, вероятно, будет утомительным, но Турбо-
Пролог неутомим при поиске всех возможных путей решения задачи. Так
же как и вы, Турбо-Пролог использует откат для того, чтобы попробовать
новые пути к решению. И, так же как вы, Турбо-Пролог использует всю дос-
тупную информацию для выбора подходящего направления. Типичная про-
грамма на Турбо-Прологе содержит факты и правила, основанные на самых
различных взаимосвязях предикатов. Правила могут иметь несколько право-
сторонних частей, которые соединены связками. Цель может состоять из не-
скольких подцелей, а переменные могут быть объектами предиката как в ут-
верждениях, так и в подцелях. Другими словами, типичные программы на
Турбо-Прологе представляют собой комбинации всех элементов, о которых
вы узнали до сих пор в этой главе.
      Турбо-Пролог пытается вычислить цель при помощи сопоставления
терма предиката и объектов цели с соответствующими элементами в фак-
тах и головах правил. Сопоставление выполняется слева направо. Некоторые
подцели, вероятно, будут неуспешными при сопоставлении с некоторыми
фактами или правилами, поэтому Турбо-Прологу требуется способ "запо-
минания точек", в которых он может продолжить альтернативные попытки
найти решение. Прежде чем попробовать один из возможных путей решения
подцели, Турбо-Пролог фактически помещает в программу "указатель".
Указатель определяет точку, в которую может быть выполнен откат, если те-
кущая попытка будет неудачной.
      По мере того, как Турбо-Пролог успешно заканчивает свои попытки
вычисления подцелей слева направо, указатели отката расставляются во
всех точках, которые могут привести к решению. Если некоторая подцель
оказывается неуспешной, то Турбо-Пролог откатывается влево и останавли-
вается у ближайшего указателя отката. С этой точки Турбо-Пролог начинает
попытку найти другое решение для неуспешной цели.
      До тех пор, пока следующая цель на данном уровне не будет успеш-
ной, Турбо-Пролог будет повторять откат к ближайшему указателю отката.
Эти попытки выполняются внутренними подпрограммами унификации и ме-
ханизмом отката. Окончательным результатом будет либо успешное, либо
неуспешное вычисление цели.
      С некоторыми небольшими дополнениями факты и правила о Мэри,
Бет и яблоках могут быть использованы для иллюстрации отката и внутрен-
ней унификации. Данный пример содержит переменные, а также факты и
правила, которые обрабатываются подпрограммой внутренней унификации
при выполнении операций сопоставления.
      Факты для отношения likes:
      likes(mary, pears).   /* Мэри любит персики */


                                                                       29