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