是否可以从C ++中的2D节点阵列创建邻接矩阵?

时间:2014-12-01 21:06:09

标签: c++ multidimensional-array dijkstra shortest-path adjacency-matrix

所以我有一个250x200px的原始文件,我已经读入像rawFile[250][200]这样的2D数组,每个像素(每个数组索引)充当一个节点,每个像素值代表一个高程(想想:地形图)。我想找到使用Dijkstra算法从rawFile[0][0]rawFile[250][200]的最短路径,距离成本是从node1到{{1}的差异的绝对值加上到当前访问节点的最短路径距离。假设在相应方向上存在相邻节点,每个节点可以在四个基本方向(N,E,S,W)上移动。我已经读过所有需要邻接矩阵或邻接列表的伪代码和各种实现,在这种情况下它们是node2。但是,我正在努力弄清楚如何从原始文件中填充邻接矩阵。

你们有没有解决这个问题的建议?谢谢!

1 个答案:

答案 0 :(得分:1)

将图像转换为邻接矩阵是完全没必要的;你唯一需要的是"邻居"已隐含存在的信息。

任何像素i,j的邻居都由(i-1,j), (i+1,j), (i,j-1), (i,j+1)处受图像边界影响的像素表示。你不需要矩阵来编码;任何时候算法说看邻居,只需提供相邻的像素。