![]() |
|
|
![]()
|
|
| lolli |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.10.2011 Репутация: нет Всего: нет |
Есть Программма вот задание: найти путь между 2мя заданными вершинами в ненагруженном графе, используя поиск в ширину.
Непосредственно код: domains slist=string* sslist=slist* predicates r(string,string). road(string,string). find(string,string). f(string,sslist). member(string,slist). append(sslist,sslist,sslist). next(slist,slist). show(slist). clauses r(a,b). r(a,c). r(a,d). r(a,e). r(b,c). r(b,d). r(b,e). r(c,d). r(c,e). r(d,e). road(A,B):-r(A,B);r(B,A). member(H,[H|_]). member(X,[_|T]):-member(X,T). append([],B,B). append([H|T],B,[H|Tail]):-append(T,B,Tail). find(A,B):-f(B,[[A]]). next([A|T],[C,A|T]):-road(A,C),not(member(C,T)). show([]). show([H|T]):-show(T),write(' ',H). f(B,[[B|T]|Tail]):-!,show([B|T]),nl,f(B,Tail). f(B,[[A|T]|Tail]):-findall(X,next([A|T],X),List),!, append(Tail,List,New),f(B,New). goal find(a,e). Объясните пожалуйста простым языком, где в коде реализован этот поиск в ширину и как он работает (самую суть в данной программе). Читал wiki ничего не понял. Заранее благодарю |
|||
|
||||
![]()
|
| Правила форума Prolog | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Prolog | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |