Управление выполнением программы на Прологе Лекция 6
План 1.Метод поиска в глубину 2.Метод отката после неудачи 3.Отсечение и откат 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). Внешняя цель: grandmother(B,V)
Метод отката после неудачи 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
Метод отката после неудачи 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.
Метод отката после неудачи 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.
Отсечение и откат 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("Искомый человек найден!"),!.
Метод повтора, определяемый пользователем repeat. repeat:- repeat. double_char:– repeat, readchar(C), write(C,C), nl, C=.,!, nl,write("Была введена точка. Закончили."). GOAL write(Вводятся символы, которые нужно повторить )точка – завершение)),nl, double_char.