Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемСветлана Туголукова
1 Управление выполнением программы на Прологе Лекция 6
2 План 1.Метод поиска в глубину 2.Метод отката после неудачи 3.Отсечение и откат 4.Метод поиска, определяемый пользователем
3 Бэктрекинг DOMAINS s=string PREDICATES mother(s,s) grandmother(s,s) CLAUSES mother("Даша","Маша"). mother("Наташа",Даша"). mother("Наташа",Глаша"). mother("Даша",Саша"). grandmother(X,Y):– mother(X,Z), mother(Z,Y). Внешняя цель: grandmother(B,V)
4 Метод отката после неудачи DOMAINS s=string PREDICATES mother(s,s) grandmother(s,s) CLAUSES mother("Даша","Маша"). mother("Наташа",Даша"). mother("Наташа",Глаша"). mother("Даша",Саша"). grandmother(X,Y):– mother(X,Z), mother(Z,Y). GOAL grandmother(B,V), write(Имя бабушки –,B), write(Имя внучки –,V),nl
5 Метод отката после неудачи DOMAINS s=string PREDICATES mother(s,s) grandmother(s,s) show_names CLAUSES mother("Даша","Маша"). mother("Наташа",Даша"). mother("Наташа",Глаша"). mother("Даша",Саша"). grandmother(X,Y):– mother(X,Z), mother(Z,Y). GOAL write(Имена дочек:),nl, show_names. show_names:– mother(_,Name), write(" ", Name), nl, fail.
6 Метод отката после неудачи DOMAINS s=string PREDICATES mother(s,s) grandmother(s,s) show_names2(s) CLAUSES mother("Даша","Маша"). mother("Наташа",Даша"). mother("Наташа",Глаша"). mother("Даша",Саша"). grandmother(X,Y):– mother(X,Z), mother(Z,Y). GOAL write(Имена дочек Даши:),nl, show_names2(Даша). show_names2(Mother):– mother(M,Name), M=Mother, write(" ", Name), nl, fail.
7 Отсечение и откат DOMAINS s=string PREDICATES mother(s,s) grandmother(s,s) show_names3(s) CLAUSES mother("Даша","Маша"). mother("Наташа",Даша"). mother("Наташа",Глаша"). mother("Даша",Саша"). grandmother(X,Y):– mother(X,Z), mother(Z,Y). show_names3(Daughter):– mother(_,Name), write(" ", Name), nl, Name=Daughter, write("Искомый человек найден!"),!.
8 Метод повтора, определяемый пользователем repeat. repeat:- repeat. double_char:– repeat, readchar(C), write(C,C), nl, C=.,!, nl,write("Была введена точка. Закончили."). GOAL write(Вводятся символы, которые нужно повторить )точка – завершение)),nl, double_char.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.