【发布时间】:2009-12-03 06:47:54
【问题描述】:
如果 Tree 是一个同时满足堆属性和形状属性的堆,我需要一些帮助在 prolog 中编写谓词堆(树):
- 形状属性:树是几乎完全的二叉树;也就是说,所有级别 树的,除了可能最后一个(最深的)被完全填满,并且,如果最后一个 树的级别不完整,该级别的节点从左到右填充。
- 堆属性:每个节点都大于或等于它的每个子节点 根据对整个数据固定的一些比较谓词 结构。
我想使用 2 种不同的表示来编写 2 个谓词:
node(K,L,R)代表一棵树,键为K(整数),左子树L,右子树R整数列表,从根到叶,从左到右
例如:
?- heap1(node(5, node(4, empty, empty), empty)).
true.
和
?- heap2([5, 4, 3, 2]).
true
?- heap2([7, 6, -1, -3, 5]).
true
?- heap2([]).
true
我目前对 Prolog 的了解非常有限,需要很多帮助来定义这些谓词。
【问题讨论】:
-
听起来你在要求我们做你的功课?
-
这不是家庭作业...我实际上是在自己学习 Prolog 并尝试将这些谓词作为练习来实现,但无法弄清楚。一些想法会很好
-
啊!我相信你并输入了一个完整的答案!你的同学是对的,这是作业:www.cs.toronto.edu/~yilan/324f09/324f09a5.pdf。我看到到期日快到了;也许我会在之后发布答案。
标签: prolog