AC-3是否解决路径一致性?

时间:2017-06-09 06:39:53

标签: constraints artificial-intelligence

当我读到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

提前致谢:)

2 个答案:

答案 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)的解释中,cd可能是Xk域中的不同值。仅当c等于d时,(2)等同于(1)

因此AC-3仅足以解决(2),但解决路径一致性太松弛

谁能告诉我这次理解是否正确?谢谢:)

答案 1 :(得分:0)

应该{​​b,d}满足{xj,xk}上的约束。(xj与xk弧一致)。