prolog - 计算序言中 map 着色的数量

标签 prolog combinatorics

在序言中,我们可以获得 map 着色问题的解决方案,如下所示:

different(red, green). different(red, blue). 
different(green, red). different(green, blue). 
different(blue, red). different(blue, green). 

coloring(Alabama, Mississippi, Georgia, Tennessee, Florida) :-
  different(Mississippi, Tennessee), 
  different(Mississippi, Alabama), 
  different(Alabama, Tennessee), 
  different(Alabama, Mississippi), 
  different(Alabama, Georgia), 
  different(Alabama, Florida), 
  different(Georgia, Florida), 
  different(Georgia, Tennessee). 

?- coloring(Alabama, Mississippi, Georgia, Tennessee, Florida).
Alabama = blue
Florida = green
Georgia = red
Mississippi = red
Tennessee = green

是否可以计算可能的 map 着色总数?

最佳答案

对于Anders解决方案,请注意,“coloring”一词应小写,这将给出正确的答案-6个解决方案。

aggregate_all(count, coloring(Alabama, Mississippi, Georgia, Tennessee, Florida), Count).
Count = 6.

关于prolog - 计算序言中 map 着色的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9451109/

相关文章:

regex - 将两个正则表达式 A 和 B 组合成 C = (A and not B)

Python - 生成符合条件的大型集合组合的最有效方法?

python - 以子列表的形式获取列表的所有可能组合

Prolog:查找不满足目标的列表

Prolog,确定两个列表是否不相等的程序

arrays - 包含特定索引 'i' 的子数组的数量是多少?

python - comb : any value above 40 returns infinity? 不知道为什么

algorithm - Prolog 练习 2-3-4 树

prolog - 永远-Prolog

prolog - 删除列表中的前导 s(s(0))