下面看看 Prolog 如何解决实际问题。
我们知道,地图的相邻区域不能使用同一种颜色。现在有三种颜色:红、绿、蓝。请问如何为上面这幅地图着色?
首先,定义三种颜色。...上面代码中,colorify(A,B,C,D,E)是一个对 ABCDE 五个变量求值的表达式。该表达式为true的条件是,这五个变量各自为一种颜色,则相邻的变量不相等。...执行表达式colorify(A,B,C,D,E),SWI-Prolog 就会将三种颜色依次赋值给变量,测试哪些组合是可能的结果。
?- colorify(A,B,C,D,E)....= D, D = red,
C = E, E = green ;
A = blue,
B = D, D = green,
C = E, E = red ;
可以看到,计算机给出了6组解,即有6种可行的地图着色方法