algorithm - 采访 : Find shortest path to few elements

标签 algorithm time-complexity shortest-path

<分区>

有一个组织为 NxN 房间的博物馆。部分房间上锁且无法进入。其他房间是开放的,有的房间有看守。守卫只能向北、向南、向东和向西移动,只能穿过开放的房间,并且只能在博物馆内移动。对于每个房间,找到到 guard 的最短距离。你的算法的时间复杂度是多少?

最佳答案

首先,考虑一种相对简单的方法。

以每个守卫G作为房间集合中的一个顶点,R=N*N,相邻房间之间的可能路径(边)E。

如果必须知道所有房间的最小距离,则从每个 guard 到每个房间的 BFS。

这应该需要时间G * (R+E),或者类似G*(N*N+E),或者G*(N *N).

这当然可以通过内存来优化,因为每个 BFS 都会重复计算已经完成的子树。根据房间配置,这可以大大降低上述时间复杂度中的 G。不过,我敢肯定一定有比这更好的东西。

关于algorithm - 采访 : Find shortest path to few elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326945/

相关文章:

tree - 树遍历的时间复杂度是多少?

java - 这两个程序的时间复杂度

algorithm - 增量 Dijkstra 或最短路径算法?

shortest-path - 实际保存路线的全对最短路径算法?

c++ - C++声明数组的时间复杂度

java - 在Java中存储大量文件的RGB值

python - 查找子字符串周围的单词

algorithm - 确定迭代次数难以估计时的时间复杂度

c++ - 如何遍历节点 vector

algorithm - 如何按顺时针/逆时针方向对所有多边形点进行排序?