图的一些定义

  • 图的表示:邻接矩阵(顶点列表Vertex +边矩阵)、邻接表(顶点存在一维数组,所有邻接的节点用线性链表表示)

图的一些应用

  • 得到最小生成树[不存在回路的连通图, n个顶点 n-1条边]

Kruskal算法
初始时只有n个顶点,然后使用贪心算法,每次都找权值最小的,如果一旦成环continue。直到选到n-1条边。
Prim算法
依次将距离已在树上的节点最小权值的边加入到路径中,同时将它关联的节点加入到树中

  • 最短路径

Dijkstra => 算法单源最短路径[任意两点最短路径]
1.找出源点到各个终点的距离[无法直达为无穷远]
2.在这些距离中找出最短的,加入相应的顶点
3.调整各重点对路径的距离(是否通过新加入的顶点到各终点的距离更短)
image.png

Floyd => 算法某点到其他所有点的最短路径
初始:记录权值情况和路径矩阵
image.png

然后依次加入每个点试探:

  • 是否加入这个定点后原来无穷大变化了。
  • 是否加入这个定点后原来权值大的变小了。

image.png