启发式表转换为序言事实突出显示错误

时间:2018-08-14 19:55:25

标签: prolog

我有一个带有点NodeH(n)节点值的Heuristc表。 在转换为prolog个事实时,我在下面是否正确?

在所有大写字母(即(A,B,C,...))上,给我一个黄色的高亮显示error 是否需要将它们更改为小写才能正确?

% Heuristic table

/* Node   H(n)
 *  A     10
 *  B     5
 *  C     4
 *  D     8
 *  E     5
 *  G     0
 *  X     1
 */

%Table as facts

A(10).
B(5).
C(4).
D(8).
E(5).
G(0).
X(1).

1 个答案:

答案 0 :(得分:1)

首先,事实必须以小写字母开头。

第二,呈现这些内容的方式确实取决于您将如何使用它们。 如果每个事实都将按其名称分别调用,则类似以下的内容将起作用:

a(10).
b(5).
c(4).
d(8).
e(5).
g(0).
x(1).

但是,您很可能需要分批处理它们,这意味着要么创建这些事实的列表并按名称指定每个事实,要么使用如下的通用事实形式:

hnode(a,10).
hnode(b,5).
hnode(c,4).
hnode(d,8).
hnode(e,5).
hnode(g,0).
hnode(x,1).

根据您的需求,您可能更喜欢使用字符串而不是原子:

hnode("A",10).
hnode("B",5).
hnode("C",4).
hnode("C",8).
hnode("E",5).
hnode("G",0).
hnode("X",1).