本月我在学校学习了序言,但我仍然是新手。
我想要实现的是在一个列表中生成所有连接的组件。
我的想法是在图形上运行多个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函数的步骤,因为我不知道GOAL(试图到达的节点),所以我在每一步中都只有一组根。自访问以来,我会跳过一些。
有什么想法可以编辑DFS以便到达那里吗?