C.
奥乔亚湾
Puebla/Electronic Notes in Theoretical Computer Science 177
(
2007
)
137
[3]
),
PCPE
执行
在线
部分评估,因此它可以利用大量的工作可用于逻辑程序的
在线
部分评估
不幸的是,PCPE不是万能药,它有许多缺点。这种方法的主要缺点是,
当实现
为基于搜索的算法时
,其搜索空间会出现固有的指数爆破,因为给定配置,后继的
数量可以与所考虑的局部和全局控制规则的组合的数量一样高。作为一个直接的结
果,PCPE的专业化时间高于其PE同行。
在第一次熟悉了多元控制部分求值的基本思想之后,我们的脑海中可能会立即
出现两个问题
(i)
PCPE是否提供广泛的解决方案?也就是说,所获得的解的集合是否足够异构
以使我们有一个广泛的候选解集合可供选择?
(ii)
PCPE
在实践中是否可行? 也就是说, 因为有一个指数爆炸, 搜索空间,
是否有可能执行一些修剪,以处理现实的程序,而不会失去有趣的解决方案?
在这项工作中,我们解决了这两个问题,提供了一些实验结果,以帮助我们证明
我们的指控。
2
背景
我们假设对逻辑编程的术语有一些基本的了解详情参见示例[12]
简单地说,
原子
A是形式p(
t1
,
.
,
t
n
),其中p/n,其中n
≥
0,是谓词符号,并
且
t
1
,
.
,
n
是项。应用于原子
A
的函数
pred
,即,
pred
(
A
),返回
A
的谓词符号
p/n。一个
子句
的形式
是
H←B,其中它的头部H是一个原子,它的主体B是一个原
子的连接。一个
定义的程序
是一组有限的子句。一个
目标
(或查询)是一个原子的
连接。
两 个 项
t
和
t
J
是
变 体
, 记 为
t
<$
t
J
, 如 果 存 在 重 命 名
ρ
使 得
tρ
=
t
J
。 我 们 用
{X
1
<$→t
1
,
.
,
Xn <
$→
tn
},其中σ
(
Xi
)
=
ti
,
i
=
1
,
. .
,
n
(w it h
X
i
f
=X
j
if
i
=
f
j
)
和
d
σ
(
X
)
=
X
,其中
t
i
是项。一个简单表达式的有限集合
S
的
单位元
是一个
代换θ,如果Sθ是一个单例。一个单位元θ称为S的
最一般单位元
(mgu),如
果对于S的每个单位
元
σ,存在一个替换γ使得σ
=
θγ。
2.1 LP
中的部分求值基础
LP的部分求值传统上是根据SLD语义来给出的。我们简要回顾一下这里的术语。
计
算规则
的概念用于选择目标中的原子进行计算。
定义
2.1
计算规则
是从目标到原子的函数
R
设
G
是一个形式为←
A
1
,
...
,
A
R
,
.
,
Ak
,k
≥
1
。如果R(G)
=
AR
,
我们说
AR
是