【发布时间】:2019-10-17 21:57:55
【问题描述】:
基本上,我有一个图形着色程序,其中每个节点与另一个节点的边必须是不同的颜色。这是我的代码:
node(1..4).
edge(1,2).
edge(2,3).
edge(3,4).
edge(4,1).
edge(2,4).
color(1..3).
{ assign(N,C) : color(C) } = 1 :- node(N).
1 { assign(N,1) : color(1) } 1 :- node(N). %line in question
:- edge(N,M), assign(N,C), assign(M,C).
如何告诉程序只分配颜色 1 一次?标记为 %line 的行是给我带来问题的行。这是我尝试过的另一个不起作用的解决方案:
node(1..4).
edge(1,2).
edge(2,3).
edge(3,4).
edge(4,1).
edge(2,4).
color(1..3).
{ assign(N,C) : color(C) } = 1 :- node(N).
:- edge(N,M), assign(N,C), assign(M,C).
vtx(Node, Color) :- node(Node), color(Color).
1 { vtx(N, 1) : color(1) } 1 :- node(N).
#show vtx/2.
如果有人可以帮助我,将不胜感激。
【问题讨论】:
标签: answer-set-programming clingo