寻找决策的路径

时间:2016-09-27 15:54:50

标签: algorithm graph path-finding

考虑以下(有限)地图:

P░b▓░░░░G
░░░a░░░░░
░░░▓▓▓▓▓▓
░░░B░A░░░
░░░░░░░░░

其中PG分别是玩家和目标。 ab是可以通过按开关AB打开(转为可步行节点)的大门。只能使用一个开关。 是可步行节点,是墙。

你会如何解决这个问题?显然简单的启发式(A *)不会,因为你必须决定使用哪个开关。我唯一的解决方案就是强行完成整个过程 - 递归尝试每一条路径和方法。沿着它的每个开关(只要之前没有使用过开关)。这是有效的,但正如我之前提到的,它的蛮力意味着时间的复杂性是巨大的。

问题是:其他算法可以做得更好吗?如果是这样,它看起来如何?

(我试图搜索相关问题,但没有发现任何内容。抱歉,如果这可能是重复的话。)

1 个答案:

答案 0 :(得分:0)

如果在此过程中只能使用一个开关,则可以在O(W*H)中解决问题。

P位置开始 BFS ,之后如果达到G则完成,否则每个门(k) - 切换( K)你到了,从k位置继续 BFS (当然,你不能通过任何其他门)。

继续此过程,直至到达G或处理每个门。请注意,您必须仅处理第一个 DFS (从P开始)到达的门,而不是门的 DFS 和任何门{ {1}}可以在相应的 BFS 中移动,而不是在其他 BFS 中。

由于所有职位最多访问一次,因此时间复杂度为k