PROLOG - Создать список всех связанных компонентов графика - PullRequest
0 голосов
/ 06 января 2019

Я изучил пролог в этом месяце в школе, я все еще абсолютный новичок в этом.

Я пытаюсь создать все подключенные компоненты в одном списке.

Моя идея состоит в том, чтобы запустить несколько 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, чтобы туда попасть?

...