Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






CLAUSES. Допустим, Вы используете VisualProlog для организации турнира по пинг-понгу между девятью летними спортсменами в теннисном клубе






player(peter, 9).

player(paul, 10).

player(chris, 9).

player(susan, 9).

 

Допустим, Вы используете VisualProlog для организации турнира по пинг-понгу между девятью летними спортсменами в теннисном клубе. Нужно устроить по две игры для каждой пары игроков клуба. Ваша цель состоит в том, чтобы найти все возможные пары игроков. Это может быть достигнуто с помощью следующей составной цели:

player(Person1, 9),

player(Person2, 9),

Person1< > Person2.

Это означает найти Person1 (9 лет) и Person2 (9 лет) так, чтобы Person1 и Person2 были разные люди.

Сначала Visual Prolog будет искать решение первой подцели player(Person1, 9) и перейдет к следующей только после того, как первая подцель будет достигнута. Первая подцель выполняется при сопоставлении Person1 с peter. Теперь Visual Prolog может перейти к следующей подцели:

player(Person2, 9).

Если опять сопоставить Person2 с peter, Пролог перейдет к третьей и заключительной подцели

Person1 < > Person2.

Так как Person1 и Person2 оба связаны со значением peter, третья подцель не выполняется. Из-за этого, Visual Prolog делает откат к предыдущей подцели, и ищет другое решение второй подцели:

player(Person2, 9).

Эта подцель выполняется, сопоставляя Person2 с chris.

Теперь третья подцель:

Person1 < > Person2

возвращает положительный результат, так как peter и chris разные люди. Теперь, основная цель выполняется, создавая турнир между chris и peter. Однако так как Visual Prolog должен найти все возможные решения, он делает откат к предыдущей цели, в надежде найти еще одно решение. Так как подцель

player(Person2, 9)

может также быть удовлетворена, сопоставляя Person2 со susan, Visual Prolog пробует третью подцель еще раз. Она опять выполняется (так как peter и susan разные люди), поэтому найдено еще одно решение.

Пытаясь найти большее количество решений, Visual Prolog еще раз делает откат ко второй подцели, но все решения для этой подцели были найдены. Поэтому теперь делается откат к первой подцели. Она может иметь и другое решение: Person1 сопоставим с chris. А решением второй подцели теперь оказывается сопоставление Person2 с peter, в итоге и третья подцель выполняется. Т.е. была найдена еще одна пара игроков для турнира: chris и peter.

Для поиска еще одного решения, Visual Prolog опять делает откат ко второй подцели в правиле. Person2 связывается с chris, но в данном случае третья подцель не выполняется, так как Person1 и Person2 один и тот же человек, поэтому опять происходит откат ко второй подцели в поиске другого решения. Person2 теперь связывается со значением susan, и третья подцель выполняется, обеспечивая еще одну пару для турнира (chris против susan).

И опять пытаемся найти новое решение. Пролог делает откат ко второй подцели, но на сей раз безуспешно. Когда вторая подцель не выполнилась, происходит откат к первой подцели, на этот раз, связывая Person1 со susan. Пытаясь выполнять вторую подцель, Пролог сопоставляет Person2 с peter, и третья подцель возвращает положительный результат при данных Person1 и Person2. Найдена пятая пара игроков для турнира.

Делая опять откат ко второй подцели, Person2 связываем с chris. Найдено шестое решение.

Последнее решение, это и Person1, и Person2 сопоставить с susan. Так как третья подцель в данном случае не выполнится, Visual Prolog делает откат ко второй подцели, но никаких новых решений не находится. Тогда Visual Prolog делает откат к первой подцели, но опять нам это ничего не дает. Так как для данной цели больше решений не может быть найдено, программа заканчивается.

4. Введите следующую составную цель:

player(Person1, 9),

player(Person2, 9),

Person1< > Person2.

5. Пролог выдаст вам ответ (рис. 1):

Person1=peter, Person2=chris

Person1=peter, Person2=susan

Person1=chris, Person2=peter

Person1=chris, Person2=susan

Person1=susan, Person2=peter

Person1=susan, Person2=chris

6 Solutions

 
 

Рис. 1. Вывод результата программы

 

6. Рассмотрим пример и создадим новый проект.

Имеется база данных, содержащая следующие предикаты: отдыхает(имя, город), украина(город), россия(город), прибалтика(город). Составить правило, позволяющее определить, кто отдыхал в России. Проследить поиск решения задачи с помощью отладчика Visual Prolog и построить целевое дерево поиска с возвратом.

7.

 
 

Запустите среду Visual Prolog и создайте новый проект (Project | New Project), активизируется окно Application Expert (Эксперт приложения) (рис. 2).

 

Рис. 2. Создание нового проекта

 

8. Определите имя проекта (Primer) и базовый каталог, куда будет сохранен проект (рис. 3).

Рис.3. Окно Application Expert

 

9.
На вкладке Target установите параметры и нажмите кнопку Create для создания проекта (рис. 4).

Рис. 4. Установки на вкладке Target окна Application Expert

 

10. Откройте окно Compiler Options (Options | Project | Compiler Options).

11. Откройте вкладку Warnings и установите опции компилятора для созданного проекта (рис. 5).

Рис. 5. Установки опций компилятора

 

Нажмите OK.

12. В окне проекта выделите файл Пример.pro и откройте его для редактирования (двойной щелчок или кнопка Edit) (рис. 6).

Рис. 6. Окно проекта

 

13. Файл с расширением *.pro содержит секции PREDICATES, CLAUSES, GOAL. Допишите необходимые определения так, чтобы получилась программа (рис. 7):


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал