我目前正在从事一个人工智能项目,其中代理需要将盒子从其原始位置推拉到某个目标位置。然后,该项目将扩展为包括多个代理,因此我们有一个主管负责创建“高级”目标,而代理负责实际的实现。
在实践中,目前,主管应该决定将箱子放在球门位置的顺序。事实上,将一个盒子放在它的目标位置可能会阻塞通往另一个目标的路径。
我们解决这个问题的第一个方法是尝试考虑“切割位置”。如果某个位置将可行走空间分成两个子集,其中一个是我们的代理,另一个是一个或多个目标,那么它就是一个切割位置。例如,考虑以下级别,其中“x”是代理,“A”和“B”是框,“a”和“b”是各自的目标位置:
+++++++++++++++++++++++++++++++++++++++++
x a b+
+++++ +++++++++++++++++++++++++++++++++
+AB +
+++++
在这种情况下,目标“a”的位置是一个切割位置,因为如果将一个盒子放在那里,那么代理将无法到达目标“b”。
您能否建议一种快速算法来计算切入位置,并且可能会返回每个切入位置阻挡的目标数量?