Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2011, 23:52   #1
lilian
 
Регистрация: 06.10.2011
Сообщений: 5
По умолчанию Prolog поиск в ширину

Есть Программма вот задание: найти путь между 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 ничего не понятно. Заранее благодарю. Если можно поподробнее(по шагам)
lilian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в ширину и глубину Дядя Тёма Фриланс 0 21.05.2011 10:42
графы поиск в ширину KaMish_44 Паскаль, Turbo Pascal, PascalABC.NET 0 30.04.2011 05:31
поиск в ширину ooooch Помощь студентам 1 29.11.2009 11:26
поиск в ширину на с++ Pavel.d Помощь студентам 1 19.04.2009 12:08