NoteDeep
深度优先遍历
从起始结点开始,每次都拓展该节点所有未拓展的相邻节点作为待拓展节点
时间复杂度:邻接表表示 ;邻接矩阵表示
广度优先遍历
从起始节点开始,每次都只拓展一个相邻的未拓展节点,若没有可以拓展的相邻节点,则回退到父节点继续拓展
时间复杂度:邻接表表示 ;邻接矩阵表示

Kruskal算法(最小生成树)
将所有边按照权值从小到大排序,一次选择最小权值的边,如果这条边加入当前的局部最小生成树中,不会形成环,则将该边加入当前的局部最小生成树
如何快速判断是否存在环?
初始化的时候,每个节点的根是自己,每次添加边的时候,都将边两端的节点放入同一个等价类中,规定同一个根,这样每次添加边,则查看两个端点的根是否一样,一样则说明成环。
如何快速选择长度最小的边?
用堆存储边
时间复杂度

Prim算法(最小生成树)
每次都拓展长度最小的仅有一个顶点依赖于当前的已拓展顶点集的边,直到全部顶点都被拓展
时间复杂度:邻接表 ;邻接矩阵

Floyd算法(所有顶点之间的最短路径,路径权值为正)
通过递推n个方阵序列 ,求得绕行所有顶点后的最短路径,其中 表示绕行第k个顶点
时间复杂度

Dijkstra算法(单源最短路径,路径权值非负)
不断从待拓展顶点集合中挑选与源点之间路径代价最小的顶点加入已拓展顶点集合,并计算相邻的未拓展或者待拓展顶点与源点之间的路径代价,加入待拓展顶点集合或者更新它们与源点之间的路径代价
时间复杂度

Bellman-Ford算法(单源最短路径,任意路径权值)
递推向量序列 ,代表从源点出发至多经过k个点到达目标顶点j
不妨假设0为源点







评论列表