Упражнения

1. Запустите интерпретатор Пролога. Воспользуйтесь командой "consult" для того, чтобы в диалоговом режиме ввести несколько фраз со сведениями о Вашей семье, либо со сведениями из какой-нибудь другой прикладной области, с которой Вы хорошо знакомы. Придумайте запросы к этим фразам, используйте в этих запросах и константы, и переменные.

2. Воспользуйтесь редактором для создания текстового файла под названием "путешествие". Внесите в этот файл приведенные в данной главе факты "путешествие" и процедуры "можно—путешествовать" и "конкурент". Запустите интерпретатор языка Пролог и загрузите этот файл. Напишите запрос, в котором выясняется возможность путешествия из Нью-Йорка в Бирлингтон. Составьте запрос, позволяющий получить сведения обо всех парах компаний-конкурентов. Напишите запрос о возможности добраться самолетом из Канзас Сити в Нэшвил.

3. Создайте при помощи текстового редактора файл с Пролог-программой, который называется "группа". Соберите сведения об именах Ваших товарищей по учебе и внесите в программу факты, в каждом из которых должны быть указаны имя студента и наименование группы или факультета, на котором этот студент числится. Например, Генри числится в группе по разработке сетей, Розмари - в группе сопровождения компиляторов и т д.

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

Загрузите написанную Вами программу. Напишите запросы, позволяющие выяснить следующее. Кого знает Генри (или кто-то еще из Вашей программ)? Кого знает кто-то?

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

4. Как Вы считаете, симметрично ли отношение, в соответствии с которым одно лицо знает другое? Каким видом ограничения, обеспечивающего целостность, оно регулируется - один-к-одному, один-к-многим, многие-к-одному или многие-к-многим? Как будет обстоять дело для только что написанной Вами процедуры "знает"? Как можно было бы изменить процедуру "знает", чтобы она стала соответствовать результатам Вашего анализа отношения "знает"?

5. Придумайте транзитивное отношение (похожее на "можно_путешествовать4"), в котором имеется косвенная связь, например, связь по правам собственности между компанией и компанией-держателем ее пакета акций, или снабженческая связь между компанией-изготовителем и компанией-поставщиком, производящей детали.

Напишите Пролог-программу, моделирующую это отношение, включая все необходимые факты и правила. Протестируйте Вашу программу, чтобы проверить, выполняет ли она то, что было задумано.

6. Должна ли процедура "конкурент" быть симметричной? Является ли она симметричной?

7. Приступите к разработке своей собственной программы "советник по транспорту". Выберите либо сеть, состоящую из городов, либо транспортную сеть маршрутов поездов или автобусов в пределах одного города. Вы должны информировать систему о том, откуда и куда Вы собираетесь добраться, а система должна выдавать рекомендации о том, какими поездами, автобусами, самолетами и т. д. Вам следует воспользоваться, чтобы добраться до пункта назначения.

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие