回跳,CSP,AIMA书

时间:2019-02-24 09:42:59

标签: artificial-intelligence backtracking constraint-programming

上下文:回跳是对原始回溯的优化。通过智能地跳回导致失败的节点(而不是回溯到按时间顺序排列的父级),它减少了搜索树的分支因子。

《人工智能,现代方法》第5章,第3版,p149-150给出了有关如何在回跳过程中创建冲突集的简短示例。

该示例与为Australia's map着色有关。

有问题的部分的报价:

  

搜索分支的“终端”失败总是会发生,因为   变量的域为空;该变量具有一个标准   冲突集。在我们的示例中,SA失败,并且其冲突集为(例如)   {WA,NT,Q}。我们跳回Q,Q吸收了SA设置的冲突   (当然减去Q本身)变成自己的直接冲突集,即   {NT,NSW};新的冲突集为{WA,NT,NSW}。那就是   考虑到{WA,NT,NSW}的前面的分配,从Q开始没有解决方案。因此,我们最新回溯到NT 。   NT将{WA,NT,NSW}-{NT}吸收到它自己的直接冲突集中{WA}中,   给出{WA,NSW}(如上段所述)。现在   如我们希望的那样,算法回跳到新南威尔士州

我正在努力理解重点内容:

  1. 回溯到NT。 NT以什么方式/为什么是最新的?
  2. 回跳到新南威尔士州。为什么?

1 个答案:

答案 0 :(得分:0)

问题1的答案在上一段中,关键是决策顺序:

  

再次考虑部分分配{WA =红色,NSW =红色}(根据我们前面的讨论,这是不一致的)。   假设我们接下来尝试T =红色,然后分配NT,Q,V和SA。   我们知道最后四个变量都不能赋值,所以最终我们用光了数值来尝试NT。

NT是最新的,因为在讨论此示例时,它是堆栈的顶部。

我们回跳到新南威尔士州,因为这是与冲突集相交的最后一个决定。