我正在研究一些计算机科学问题,很多问题都是关于图遍历和最短路径的。例如,可能会要求您查找从图中的某个点到另一个点的最短路径。为了解决它,人们会使用广度优先搜索。主要的是图形通常具有相关函数,可以为节点提供任何相邻节点。
但是,如果问题有一个二维矩阵,让我们说1和0,其中一个1是可遍历的,0是不是,那么如何解决这个问题呢?例如:
1101
0110
1011
如果给出坐标,例如[0] [0],可能会要求您查找所有可能的路径或[n] [n]点的最短路径。你会怎么做呢?如果有人有任何代码示例,我将非常感激。
答案 0 :(得分:0)
检查一些最好的算法 - Dijkstra算法和BFS。它会解决你的问题。
答案 1 :(得分:0)
我假设您呈现的矩阵是一种地图或迷宫,而不是邻接矩阵。因此,在您的矩阵中
1101
0110
1011
您可以从[0][0]
转到[1][0]
,或从[1][1]
转到[1][0]
或[2][1]
,可能还有[0][0]
,{如果允许对角移动,则{1}}和[0][2]
。
要将图算法应用于此类矩阵,首先需要通过为矩阵中的每个条目或节点分配索引,将其转换为邻接列表或邻接矩阵:
[2][2]
现在列出所有可从 0 1 2 3
4 5 6 7
8 9 10 11
或node 0
到达的节点:
[0][0]
因为我们可以从0 -> 1, 5
到达节点1
和5
。 (我在这里假设允许对角移动。)这为您提供了邻接列表中的第一个条目。邻接矩阵的等价物是:
0
作为矩阵的第一行(第0行)。
对矩阵中的每个节点重复此过程,您将拥有完整的邻接列表或矩阵,以便在常规图算法中使用。