【发布时间】:2016-07-03 08:12:45
【问题描述】:
在一次编程测试中,我被要求解决一个问题,即我必须找到从矩形图上的每个节点到图上一组可能目的地之一的最短距离。我能够创建一个通过所有测试的解决方案,但我相当肯定那里有更有效的算法。
C11--C12--C13--C14
| | | |
FGB--C22--C23--C24
| | | |
C31--C32--C33--C34
| | | |
C41--FGB--C43--C44
| | | |
C51--C52--C53--C54
| | | |
C61--C62--C63--FGB
例如,在上图中,假设每个“FGB”代表五个人(因为它很好吃)。每个“Cxx”代表一个客户。它本质上是,“每个客户离最近的五个人有多远?”所以 C11 距离为 1,C12 距离为 2,依此类推。所有边的权重=1。
Floyd-Warshall 是我要找的吗?我并不真正关心所有配对。
您有什么想法或参考资料可以指点我吗?非常感谢。
【问题讨论】:
-
我是不是遗漏了什么,或者你能不能只计算每个点坐标的距离,即(x, y)到(x', y')的距离是abs (x - x') + abs (y - y')?
-
从 FGB 开始做 BFS。
-
是的 @gnasher729 所以对于每个 Cxx 你会为每个 FGB 重复,对吧?那不是 O(m*n) 吗?
-
图是不是一直都是这样的矩阵布局,每个内部节点有4个邻居,分别是正北、东、南、西的节点?或者这只是一个例子,图表是否可以有任意数量的邻居,与显示格式中的位置无关?
-
图形总是有这种矩形布局,但它可以是任意大小,并且可以有任意数量的 FGB。任何不是 FGB 的节点都是客户。您知道 FGB 的起始坐标(您不必搜索它们)。
标签: algorithm