【发布时间】:2016-11-25 14:28:59
【问题描述】:
我正在尝试编写一个 Prolog 程序来为我提供图中两点之间的所有可能路径(带循环)。
edge(a,b).
edge(a,c).
edge(a,d).
edge(b,e).
edge(c,e).
edge(c,f).
edge(d,f).
edge(f,g).
edge(g,e).
edge(e,a).
show_path(X,Y,[X,Y]) :- edge(X,Y).
show_path(X,Z,[X|T]) :- edge(X,Y), not(member(Y, T)), show_path(Y,Z,T).
我正在尝试使用 not(member()) 排除循环并避免无限循环,但它并不能产生所有可能的解决方案。如何更改程序以获取带循环的图中两点之间的所有可能路径?
【问题讨论】:
-
你能举一个给定输入的预期输出示例吗?
-
另见here
标签: prolog graph-theory