Prolog规则结构与实例
的有关信息介绍如下:Prolog是一门独特的编程语言。在这篇经验中,我将介绍关于它的一个重要的子句形式——规则及其用法。
6Prolog的基本概念和语法规则
让我们先从一个简单的规则开始讨论:
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不是通过编写算法来解决逻辑问题的,而是通过如实地描述真实世界,来呈现计算机可以设法解决的逻辑问题,让计算机做这些工作吧。