让我们先从一个简单的规则开始讨论:eats(john, Y) :- food(Y), sweet(Y).这个规则告诉我们,如果Y是食物且甜,那么约翰会去吃它。规则由三个要素组成:规则头(此例中为eats(john,Y));符号“:-”(这个符号的意思可以理解为“如果”或“是”);规则体(此例中为food(Y), sweet(Y))。
以下是相应的整个代码。
下面是运行结果。Prolog把试图满足讯问?- eats(john,Food).的任务变为同时满足food(Food).和sweet(Food).。
由于Prolog的特性使得它特别适合用于地图上色、日程安排之类没有算法或难以用算法描述的问题。接下来,以地图上色的问题作为例子。地图上色时,需要让相邻的两片区域用不同的颜色表示。下图是美国东南部的地图,尝试用三种颜色将它们区别出来。
在下面这个规则中,告诉了Prolog各个州的的接壤关系:coloring(Alabama, Mississippi, Georgia, Tennessee, Florida) :- different(Mississippi, Tennessee), different(Mississippi, Alabama), ……下图是整个代码。
运行时,对Prolog用下列语句进行提问:?- coloring(Alabama, Mississippi, Georgia, Tennessee, Florida).这样就生成了需要的结果。在这些问题中,我们没有使用算法!Prolog不是通过编写算法来解决逻辑问题的,而是通过如实地描述真实世界,来呈现计算机可以设法解决的逻辑问题,让计算机做这些工作吧。
标签:Prolog,实例,规则