ВУЗ:
Составители:
Рубрика:
67 
solve (sit, sit, sits, sits) 
% определяет путь для решения задачи 
member (list, sit) 
% первый предикат ищет список в списке списков 
member1(sit, sits) 
% второй предикат ищет список списков в списке списков списков 
writesp(sits) 
% распечатывает путь 
clauses 
member(X, [X|_]):-!. 
member(X,[_|T]):-member(X,T). 
member1(X, [X|_]):-!. 
member1(X,[_|T]):-member1(X,T). 
after([St11,St12,St13],S):-St13=[H3|T3],S=[St11,[H3|St12],T3]. 
after([St11,St12,St13],S):-St13=[H3|T3],S=[[H3|St11],St12,T3]. 
after([St11,St12,St13],S):-St12=[H2|T2],S=[[H2|St11],T2,St13]. 
after([St11,St12,St13],S):-St12=[H2|T2],S=[St11,T2,[H2|St13]]. 
after([St11,St12,St13],S):-St11=[H1|T1],S=[T1,[H1|St12],St13]. 
after([St11,St12,St13],S):-St11=[H1|T1],S=[T1,St12,[H1|St13]]. 
solve(S,S1,Sp,[S1|Sp]):-after(S,S1), member([a,b,c],S1). 
solve(S,S2,Sp,Sp2):-after(S,S1), not(member([a,b,c],S1)), 
  not(member1(S1,Sp)),solve(S1,S2,[S1|Sp],Sp2). 
writesp([]). 
writesp([H|T]):-writesp(T),write(H),nl. 
goal 
solve([[c,a,b],[],[]],S,[[c,a,b],[],[]],Sp),writesp(Sp). 
В данном примере реализован усовершенствованный алгоритм поиска 
в  глубину,  в  котором  добавлен  алгоритм  обнаружения  циклов.  Предикат
solve  включает  очередную  вершину  в  решающий  путь  только  в  том  случае, 
если она еще не встречалась раньше. 
3.2.2 Поиск в ширину 
В  противоположность  поиску  в  глубину  стратегия  поиска  в  ширину 
предусматривает  переход  в  первую  очередь  к  вершинам,  ближайшим  к 
начальной  вершине.  На  следующем  рисунке  показан  пример,  который 
иллюстрирует работу алгоритма поиска
 в ширину.  
Страницы
- « первая
 - ‹ предыдущая
 - …
 - 65
 - 66
 - 67
 - 68
 - 69
 - …
 - следующая ›
 - последняя »
 
