1. 思维导图
2. 概念笔记
(1) 深度优先遍历(DFS)
a. 访问顶点v
b. 依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问
c. 若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止
(2) 广度优先遍历(BFS)
a. 从图中某个顶点v出发,访问v
b. 依次访问v的各个未被访问过的邻接点
c. 分别从这些邻接点出发依次访问他们的邻接点
d. 重复步骤c,直至所有已被访问的顶点的邻接点都被访问到
(3) Prim 算法
a. 以某一个点开始,寻找当前该点可以访问的所有的边
b. 在已经寻找的边中发现最小边,这个边必须有一个点还没有访问过,将还没有访问的点加入集合,记录添加的边
c. 寻找当前集合可以访问的所有边,重复 b 的过程,直到没有新的点可以加入
(4) Kruskal 算法
a. 设一个有n个顶点的连通网络为 G(V,E),最初先构造一个只有 n 个顶点,没有边的非连通图 T,图中每个顶点自成一个连通分量
b. 当在E中选择一条具有最小权值的边时,若该边的两个顶点落在不同的连通分量上,则将此边加入到 T 中;否则重新选择一条权值最小的边
c. 如此重复下去,直到所有顶点在同一个连通分量上为止
(5) Dijkstra 算法
a. 遍历与结点1相连的所有结点,找到距离最近的一个,把这个结点标记为访问过,并更新最短路径
b. 遍历最短路径包含的点相连的节点,找到距离最近的加入最短路径,并且标记为访问过
c. 重复 b 步骤
总结:先遍历一遍还没有在最短路径中的点,选出一个距离最近的点,把它加入到最短路径中并更新,直到所有的点都加入到最短路径中。