人工智能高级规划算法

时间:2013-04-17 16:11:12

标签: algorithm graph artificial-intelligence planning

我目前正致力于一个人工智能项目,其中代理人需要将盒子从其原始位置推到并拉到某个目标位置。然后该项目将扩展到包括多个代理商,因此我们有一个主管负责创建高级别的代理商。目标,而代理商负责实际的实施。

在实践中,目前,主管应决定将方框放在目标位置的顺序。事实上,将一个盒子放在其目标位置可能会阻挡通往另一个目标的路径。

我们解决这个问题的第一个方法是尝试考虑"削减职位"。如果将可行走空间划分为两个子集,则某个位置是切割位置,其中一个我们有代理,另一个我们有一个或多个目标。例如,考虑以下级别,其中" x"是代理商," A"和" B"盒子和" a"和" b"是各自的目标位置:

+++++++++++++++++++++++++++++++++++++++++
x                        a             b+
+++++   +++++++++++++++++++++++++++++++++
    +AB +
    +++++ 

在这种情况下,目标的位置" a"是一个切割位置,因为如果一个盒子放在那里,那么代理将无法达到目标" b"。

你能否建议一个快速算法来计算切割位置,这可能会返回每个切割位置阻塞的目标数量?

2 个答案:

答案 0 :(得分:3)

在一般图表中,您将网格词的切割位置称为切割顶点关节点。来自Wikipedia

  

具体来说,切割顶点是任何顶点,其移除会增加连接组件的数量。

在同一篇文章中再说一点:

  

由于John Hopcroft和Robert Tarjan(1973)[1]在连通无向图中计算双连通分量的经典顺序算法在线性时间内运行,并且基于深度优先搜索。该算法也概述为算法导论(第2版和第3版)的问题22-2。

确定了双连通组件后,确定关节点应该非常容易:包含在多个双连通组件中的所有节点都是关节点。

答案 1 :(得分:1)

您可以将该区域放入无向图中,其中每个节点都是地图的位置,如果位置彼此相邻,则连接两个节点。然后,您可以在图表上标记这些“切割位置”,并查看切割位置上的框将阻止的所有路径。