По сути, у меня есть программа раскраски графа, в которой каждый узел с ребром другого узла должен быть разных цветов. Вот мой код:
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.
Если бы кто-нибудь мог мне помочь, это было бы очень признательно.