# Creating the graph as an adjacency matrix
vertices = [[0, 1, 1, 0],
[0, 0, 1, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]]
edges = [[0, 3, 4, 0],
[0, 0, 0.5, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]]
所以我试图理解python中Dijkstra的算法,但是由于我不了解每个子列表的真实含义,所以我不清楚图,我知道像3、4、1和0.5这样的某些数字是某些顶点的距离,但事实并非如此。我要附上图形外观的图像。
答案 0 :(得分:3)
邻接矩阵显示成对的顶点之间的信息。在此示例中,您应该像将矩阵解释为列表那样,其中每一行和每一列中的元素都对应于一对顶点:
a b c d
a 0 1 1 0
b 0 0 1 0
c 0 0 0 1
d 0 0 0 0
此处,a
列和a
行中或位置(0,0)处的0表示从a
节点到{{ 1}}节点,并且a
列中的1和b
行或位置(0,1)表示从a
节点到{{1} }节点。换句话说,在任何有1的地方都表示有一条边开始于与该行相对应的节点,并在与该列所对应的节点上结束,而0则表明没有边。
对a
列表应用类似的逻辑,该列表标记边缘的权重,而不仅仅是标记边缘是否存在。正如@misha所提到的,该列表不足以表示节点的互连性,因为节点之间的边缘的权重可能为0,这与根本不存在的边缘是无法区分的,因此b
和edges
矩阵是必需的