Мне нужно решить проблему раскраски графа с помощью Prolog. Речь идет о карте Латинской Америки с 3 цветами, и в описании задачи говорится, что i-й член раскраски должен использоваться для раскрашивания i-го члена страны, что мне не очень понятно, как им сопоставить.
???? Вот программа пока что,
adjacent(brazil, suriname).
adjacent(brazil, guyana).
adjacent(brazil, venezuela).
adjacent(brazil, colombia).
adjacent(brazil, peru).
adjacent(brazil, bolivia).
adjacent(brazil, paraguay).
adjacent(brazil, argentina).
adjacent(brazil, uruguay).
adjacent(frenchguiana, suriname).
adjacent(suriname, guyana).
adjacent(guyana, venezuela).
adjacent(venezuela, colombia).
adjacent(colombia, ecuador).
adjacent(colombia, peru).
adjacent(ecuador, peru).
adjacent(peru, bolivia).
adjacent(bolivia, chile).
adjacent(bolivia, paraguay).
adjacent(chile, argentina).
adjacent(paraguay, argentina).
adjacent(argentina, uruguay).
adjacent(chile, peru).
adjacent(argentina, bolivia).
coloring([red,yellow,green]).
neighbor(X,Y) :- adjacent(X, Y).
neighbor(X,Y) :- adjacent(Y, X).
conflict(A,Ca,B,Cb) :-
adjacent(A,B),
Ca \= Cb.
solve(?, ?) :-
???? и это должен быть запрос. solve([brazil,colombia,argentina,peru,venezuela,chile,ecuador,bolivia,paraguay,uruguay,guyana,suriname,frenchguiana],Coloring)
Я видел примеры алгоритмов в Google, но, похоже, он отличается от того, как я должен это делать.
solve
получить в качестве запроса. Как выглядит результат? Вы показываете два аргумента. Что они собой представляют? Вам нужны два аргумента? Реализацияsolve
описывает условия, которые позволят добиться этого результата. - person lurker   schedule 12.05.2020setof(Country, X^(adjacent(Country, X) ; adjacent(X, Country)), Countries)
, который выдаст списокCountries
. Итак,solve(Coloring)
достаточно и включитеsetof
запрос в своюsolve
реализацию. - person lurker   schedule 12.05.2020