Я изучил пролог в этом месяце в школе, я все еще абсолютный новичок в этом.
Я пытаюсь создать все подключенные компоненты в одном списке.
Моя идея состоит в том, чтобы запустить несколько DFS на графике, каждый DFS после завершения создаст список, скажем, LC, который будет добавлен в список результатов ALL_LC.
Я нашел в сети код, который очень полезен для начала.
connected(a,b).
connected(b,e).
connected(c,d).
isConnected(X,Y) :- connected(X,Y).
isConnected(X,Y) :- connected(Y,X).
next_node(Current, Next, Path) :-
isConnected(Current, Next),
not(member(Next, Path)).
dfs(Goal, Goal, _, [Goal]).
dfs(Start, Goal, Visited, [Start|Path]) :-
next_node(Start, Next_node, Visited),
dfs(Next_node, Goal, [Next_node|Visited], Path).
Прежде всего, я подумал о редактировании своей функции DFS, так как я не знаю ЦЕЛЬ (какой узел пытается достичь), у меня есть только набор корней, с которых нужно начинать на каждом шаге. Некоторые я пропущу, так как их посетили.
Есть какие-нибудь идеи, как я могу отредактировать DFS, чтобы туда попасть?