
- •Часть III Современные методы программирования на Прологе
- •Глава 14 Недетерминированное программирование
- •14.1. Метод «образовать и проверить»
- •14.2. Недетерминизм с произвольным выбором альтернативы и недетерминизм с неизвестным выбором альтернативы
- •14.3. Моделирование недетерминированных вычислений.
- •14.4. Классические интеллектуальные программы: analogy, eliza и McSam
- •Предложения и данные для тестирования программы
- •14.5. Дополнительные сведения
Предложения и данные для тестирования программы
lest_mcsam(Name, Understood Story)
Story(Name, Story), mcsam(Story, Understood Story).
Story(test, [[ptrans, John, John, XI, leones].
[ingest, X2, hamburger, X3],
[ptrans, Actor, Actor, X4, X5]]).
script(restaurant,
[[ptrans, Acta, Actor, Earlier_place, Restaurant],
[ptrans. Actor, Actor, Door, Seat],
[mtrans, Actor, Waiter, Food],
[ingest. Actor, Food [mouth. Actor]],
[atrans. Actor, Money, Actor, Waiter],
[ptrans. Actor, Actor, Restaurant, Gone]],
[[Actor, customer], Earlier_place, place!],
[Restaurant, restaurant], [Door, door],
[Seat, Seat], [Food, meal], [Waiter, waiter],
[Money, check], [Gone, place2]]).
trigger(leones, restaurant).
trigger(waiter, restaurant).
Программа 14.22. Тестовые данные для программы McSAM.
посещает Леониса и атом lеопеs запускает сценарий restaurant, идентифицированный' фактом trigger(leones,restaurant) в программе 14.22.
Сопоставление сюжета сценарию выполняется отношением match (Script, Story), которое связывает строки сюжета со строками в сценарии. Остающиеся поля в сценарии заполняются с помощью предиката name_(defoults(Defaults).В итоге программой формируются списки.
[ptrans,john.john, place ,leones]
[ptrans,john,john, door, seat]
[ptrans,john, waiter, hamburger]
[ingest,john, hamburger, [mouth,john]
[atrans,john, check, leones, waiter]
[ptrans,john, john, leones, place2J.
Результат преобразования этих списков в текст на английском языке представлен на рис. 14.8.
Вход: John went to Leones, ate a humburger and left.
Выход: John went to Leones. He was shown from the door to a seat. A waiter brought John a hamburger, which John ate by mouth. The waiter brought John a check, and John left Leones for another place.
Рис. 14.8. Разработка сюжета программы McSAM.
Вся работа первоначальной программы McSAM состояла в выполнении поиска и сопоставлении с шаблоном. Эти операции выполняются в Прологе механизмами недетерминированного программирования и унификации.
Упражнения к разд. 14.4
1. Измените программу 14.18 так, чтобы с ее помощью можно было решить три задачи на геометрические аналогии, представленные на рис. 14.9.
2. Расширьте программу ELIZA путем добавления новых шаблонов для пар стимул/ птклик.
3. Если седьмое предложение на рис. 14.7 заменить на предложение "I like teasing my father", то программа ELIZA даст ответ: "Does any one else in your family like teasing my father". Модифицируйте программу 14.20 так, чтобы она могла действовать указанным образом, изменив для этого такие ссылки, как I, my, to you, your и т.д.
4. Перепишите программу McSAM для использования структур.
14.5. Дополнительные сведения
Использование Пролога и метода «образовать и проверить» для решения задачи о N ферзях и задачи о раскрашивании плоской карты рассматривалось многими исследователями. Они прибегали к этим примерам как к свидетельству несовершенства управления в Прологе. Предлагались такие усовершенствования, как использование сопрограмм, реализованных в Прологе (Clark and McCabe, 1979). и «интеллектуальный» механизм возвратов (Bruynooghe nd Pereira, 1984). Хорошее обсуждение решения задачи о N ферзях средствами Пролога можно найти в (Elcock, 1983).
Логическая головоломка «зебра» [упражнение 14.1(4)] появлялась в Prolog Digest в начале 80-х гг. и была использована в качестве неофициальной контрольной задачи для оценки эффективности реализации Пролога и способности программистов писать на Прологе ясные программы. Обстоятельное обсуждение не детерминизм а с произвольным выбором альтернативы и недетерминизма с неизвестным выбором альтернативы в логическом программировании содержится в работе (Kowalski, 1979).
Рис. 14.9. Три задачи на определение аналогии.
Программа 14.11 (планирование с использованием поиска в глубину) является вариантом примера, заимствованного в (Kowalski, 1979). Первой программой планирования на Прологе была программа Warplan (Warren, 1976), воспроизведенная затем в (Coelho et al., 1980).
Описание автомата заимствовано из работы (Hopcroft and Ullrnan, 1979).
Работа (Burstall и Darlington, 1977) является классической работой по методу раскрытия в логическом программировании.
Программа ANALOGY была составной частью докторской диссертации Т. Эванса в MIT в середине 1960-х гг. Хорошее описание этой программы можно найти в книге Semantic Information Processing (Minsky, 1968). В программе Эванса уделялось внимание многим аспектам задачи, которые стали элементарными при нашем выборе представления фигур, например средствам описания фигур, вписанных в данную фигуру. Наш вариант программы (программа 14.17) возник в ходе обсуждений, проводимых первым автором книги со студентами - эпистемологами в Эдинбургском университете.
Программа ELIZA первоначально была опубликована в работе (Weizenbaum, 1966). Ее характеристики убедили некоторых, что достигнута некоторая ограниченная форма известного теста Тьюринга. Ее автор, Вайценбаум, был шокирован таким мнением о возможностям этой программы и вообще искусственного интеллекта. Он страстно умолял (Weizenbaurn, 1976) не
воспринимать эту программу слишком серьезно. Наша версия программы (программа 14.20) -вариант учебной программы (авторство приписывается Алану Банди. Ричарду О'Кифу и Генри Томпсону), использованной в курсе по искусственному интеллекту в Эдинбургском университете.
Программа McSAM - версия программы SAM, которая была подготовлена Шенком и Рисбеком как учебная (Schank и Riesbeck, 1981). Наша версия (программа 14.21) разработана Эрни Дэвисом и вторым автором книги-Шапиро. Дополнительные сведения о принципе концептуальной зависимости можно найти в работе Шенка и Айбельсона (Shank и Abelson, 1977).