Prolog中的数值计算与问题空间搜索
1. 引言
在Prolog编程中,到目前为止我们可能还未涉及数值计算。这其实是合理的,因为Prolog的核心在于对项(terms)的操作,而非数字处理。不过,当需要时,Prolog程序也能够执行数值计算。同时,Prolog在问题空间搜索方面表现出色,它可以将问题领域进行逻辑化描述,通过查询来求解该领域内的问题,利用其证明树搜索机制,能为复杂问题编写简单的解决方案。
2. 数值计算
2.1 项的未求值特性
在Prolog中,项默认是未求值的。例如,下面几种形式都是对包含整数1到3的列表的不同写法:
. (1, . (2, . (3, [])))
[1 | [2, 3]]
[1, 2, 3]
这些形式在Prolog里都是未求值的,它们直接代表了整数1到3的列表。同样,对于表达式 +(1, *(2, 3)) ,以下几种写法也是等价的未求值项:
1+ * (2, 3)
+ (1, 2*3)
(1+ (2*3))
1+2*3
这些项与常量项 7 并不相同,不过可以使用预定义的谓词来对这类项进行求值,以完成必要的数值计算。
2.2 数值求值
预定义的谓词 is 可用于对项进行求值。例如:
超级会员免费看
订阅专栏 解锁全文
17

被折叠的 条评论
为什么被折叠?



