补图 - 序言
Posted
技术标签:
【中文标题】补图 - 序言【英文标题】:Complement Graph - prolog 【发布时间】:2016-04-09 20:43:39 【问题描述】:我有一个问题。我有一个连续的无向图。所以我需要一个 Prolog 中的代码,它给我一个补充图。
例如图表:
edge(1,2).
edge(2,3).
edge(3,4).
edge(4,5).
edge(5,1).
rot(X,Y):- edge(X,Y).
rot(X,Y):- edge(Y,X).
请帮忙 :) 谢谢。
【问题讨论】:
【参考方案1】:这应该适用于发出地面查询并枚举所有可能的边缘。
complement(X, Y):-
((var(X);var(Y)) -> setof(V, Z^rot(V,Z), Vertices);true), % If either vertex is not ground, compute the set of vertices
(ground(X) -> (once(rot(X, _)), VerticesX=[X]) ; VerticesX=Vertices), % Determine list of candidate X
(ground(Y) -> (once(rot(Y, _)), VerticesY=[Y]) ; VerticesY=Vertices), % and candidate Y
member(X, VerticesX),
member(Y, VerticesY),
X \= Y, % Generate and test all
\+(rot(X,Y)). % possible candidates
【讨论】:
以上是关于补图 - 序言的主要内容,如果未能解决你的问题,请参考以下文章