当我读到AC-3 in Artificial Intelligence: A Modern Approach
的伪代码时,我认为它解决了路径一致性和弧一致性问题。但该书称路径一致性由算法PC-2
解决。我错过了什么?
为什么AC-3
不足以解决路径一致性问题?
以下是AC-3
function AC-3(csp) returns false if an inconsistency is found and true otherwise
inputs: csp, a binary CSP with components (X, D, C)
local variables: queue, a queue of arcs, initially all the arcs in csp
while queue is not empty do
(Xi, Xj)←REMOVE-FIRST(queue)
if REVISE(csp, Xi, Xj) then
if size of Di = 0 then return false
for each Xk in Xi.NEIGHBORS - {Xj} do
add (Xk, Xi) to queue
return true
function REVISE(csp, Xi, Xj) returns true iff we revise the domain of Xi
revised ← false
for each x in Di do
if no value y in Dj allows (x,y) to satisfy the constraint between Xi and Xj then
delete x from Di
revised ← true
return revised
提前致谢:)
答案 0 :(得分:0)
我想我已经找到了问题所在。我误解了路径一致性的含义。
我想
(1) {Xi, Xj} is path-consistent with Xk
相当于
(2) Xi is arc-consistent with Xj, Xi is arc-consistent with Xk, and Xj is arc-consistent with Xk.
这就是为什么我认为AC-3
足以解决路径一致性问题。但事实并非如此。
赋予(1)和(2)的含义:
(1)表示,对于符合{a, b}
约束的每对作业{Xi, Xj}
,c
域中的值为Xk
, {a, c}
和{b, c}
满足{Xi, Xk}
和{Xj, Xk}
(2)可以用这种方式解释(这使得更容易看出差异):对于与{a, b}
上的约束一致的每对赋值{Xi, Xj}
(Xi与弧一致) Xj,这个可能不准确,但可以做到),c
域中有Xk
,{a, c}
满足{Xi, Xk
}的约束( Xi与Xk是弧一致的,并且d
域中有Xk
,{b, c}
满足{Xj, Xk}
的约束(Xj与弧一致) XK)
现在很容易看出差异:在(2)的解释中,c
和d
可能是Xk
域中的不同值。仅当c
等于d
时,(2)等同于(1)
因此AC-3
仅足以解决(2),但解决路径一致性太松弛
谁能告诉我这次理解是否正确?谢谢:)
答案 1 :(得分:0)
应该{b,d}满足{xj,xk}上的约束。(xj与xk弧一致)。