Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Лабораторная работа №2 - файл 1.doc


Лабораторная работа №2
скачать (54.5 kb.)

Доступные файлы (1):

1.doc55kb.02.12.2011 07:29скачать


1.doc

«ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ»

ЛАБОРАТОРНАЯ РАБОТА №2

«Поиск с возвратом и предикат not»

Теория:

Часто при решении реальной задачи мы придерживаемся определенного пути для её логического завершения. Если полученный результат не дает искомого результата, мы должны выбрать другой путь. Например, один из верных способов найти верный путь в игре в лабиринт - это поворачивать налево на каждой развилке лабиринта до тех пор, пока вы не попадаете в тупик. Тогда следует вернуться к последней развилке и попробовать свернуть вправо, после чего опять поворачивать налево на каждом встречающемся распутье. Путем методичного перебора всех возможных путей можно найти выход. VP при поиске решения задачи использует именно такой метод проб и возвращений назад: метод поиска с возвратом. Если, начиная поиск целевого утверждения VP должен выбрать между альтернативными путями, то он ставит маркер у места ветвления (точки отката) и выбирает первую подцель, которую станет проверять. Если данная подцель не выполнится, т.е. не сопоставится с имеющимися фактами и правилами, то VP вернется к точке отката и попробует проверить другую подцель.

Для того, чтобы цель считалась успешно выполненной при условии, что не может быть доказана истинность данной подцели, используется предикат not. Т.е. not будет успешным, если не может быть доказана истинность данной подцели. Данный предикат нельзя применять к свободным переменным.

Задача

Условие:

На собрании должны выступить 5 человек: А, Б, В, Г и Д. Сколькими способами можно расположить их в списке ораторов при условии, что А должен выступить непосредственно перед Б.

Примечание:

Даны два варианта решения задачи. Основное отличие в визуализации вывода результата.

/*первый вариант решения задачи */

domains

номер_позиции=integer

predicates

nondeterm оратор(номер_позиции)

nondeterm собрание(номер_позиции,номер_позиции,номер_позиции,номер_позиции,номер_позиции)

nondeterm номер_на_букву(номер_позиции)

clauses

оратор(1).оратор(2).оратор(3).оратор(4).оратор(5).

собрание (X,Y,Z,T,K):-X=1,Y=2,оратор(Z),оратор(T),оратор(K),

X<>Z, X<>T, X<>K, Y<>Z,Y<>T,Y<>K,Z<>T,Z<>K,T<>K,

номер_на_букву(X),номер_на_букву(Y),номер_на_букву(Z),

номер_на_букву(T),номер_на_букву(K),nl.

собрание (X,Y,Z,T,K):-Y=1,Z=2,оратор(X),оратор(T),оратор(K),

X<>Y, X<>Z, X<>T, X<>K,Y<>T,Y<>K,Z<>T,Z<>K,T<>K,

номер_на_букву(X),номер_на_букву(Y),номер_на_букву(Z),

номер_на_букву(T),номер_на_букву(K),nl.

собрание (X,Y,Z,T,K):-Z=1,T=2,оратор(X),оратор(Y),оратор(K),

X<>Y, X<>Z, X<>T, X<>K,Y<>Z,Y<>T,Y<>K,Z<>K,T<>K,

номер_на_букву(X),номер_на_букву(Y),номер_на_букву(Z),

номер_на_букву(T),номер_на_букву(K),nl.

собрание (X,Y,Z,T,K):-T=1,K=2,оратор(X),оратор(Y),оратор(Z),

X<>Y, X<>Z, X<>T, X<>K,Y<>Z,Y<>T,Y<>K,Z<>T,Z<>K,

номер_на_букву(X),номер_на_букву(Y),номер_на_букву(Z),

номер_на_букву(T),номер_на_букву(K),nl.

номер_на_букву(X):-X=1,write("A").

номер_на_букву(X):-X=2,write("B").

номер_на_букву(X):-X=3,write("C").

номер_на_букву(X):-X=4,write("D").

номер_на_букву(X):-X=5,write("E").

goal

write("Собрание:"),nl,собрание(X,Y,Z,T,K).
/*второй вариант решения задачи*/

domains

номер_позиции=symbol

predicates

nondeterm оратор(номер_позиции)

nondeterm собрание(номер_позиции,номер_позиции,номер_позиции,номер_позиции,номер_позиции)

clauses

оратор("A").оратор("B").оратор("C").оратор("D").оратор("E").

собрание (X,Y,Z,T,K):-X="A",Y="B",оратор(Z),оратор(T),оратор(K),

X<>Z, X<>T, X<>K, Y<>Z,Y<>T,Y<>K,Z<>T,Z<>K,T<>K,nl.

собрание (X,Y,Z,T,K):-Y="A",Z="B",оратор(X),оратор(T),оратор(K),

X<>Y, X<>Z, X<>T, X<>K,Y<>T,Y<>K,Z<>T,Z<>K,T<>K,nl.

собрание (X,Y,Z,T,K):-Z="A",T="B",оратор(X),оратор(Y),оратор(K),

X<>Y, X<>Z, X<>T, X<>K,Y<>Z,Y<>T,Y<>K,Z<>K,T<>K,nl.

собрание (X,Y,Z,T,K):-T="A",K="B",оратор(X),оратор(Y),оратор(Z),

X<>Y, X<>Z, X<>T, X<>K,Y<>Z,Y<>T,Y<>K,Z<>T,Z<>K,nl.

goal

собрание(X,Y,Z,T,K),write(X,Y,Z,T,K),nl.








Скачать файл (54.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации