【发布时间】:2015-09-19 15:50:28
【问题描述】:
我有一个这样的图表:
我实现了这样的图形数组:
G[i][j][k]
K只有 4 个单元格,它显示顶点是否连接到它的四个相邻顶点。例如:
G[1][1][0] = 0
G[1][1][1] = 1
G[1][1][2] = 1
G[1][1][3] = 0
表示顶点(1, 1)连接了2个顶点。
我知道用于正常类型图的 Floyd Warshall 算法。 但是我怎样才能为这种图实现 Flyod Warshall 算法呢?
谢谢。
【问题讨论】:
-
为什么这是不同的“类型”图表。它肯定只是一个没有多重边的未加权图(一个简单的图)。对于最短路径计算,甚至可能有比 Floyd-Warshall 更简单或更快的算法。事实上,肯定有——首先是平面的。
-
@gilleain 是对的。不同的不是图,而是用来表示邻接关系的数据结构
-
@gilleain This type of graph 被称为grid graph,它们通常比一般图表更容易处理。
-
@gilleain 渐近地说似乎不太可能,因为平面图的线性时间算法可以解决与 Dijkstra 算法相同的问题。
标签: c++ algorithm graph shortest-path floyd-warshall