第五次日志
连通分支的概念: 无向图的极大连通子图
一个连通图的生成树是指一个极小连通子图
一个极小连通子图:含有图中的全部
顶点,但只有足已构成一棵树的 n-1 条边
有n-1条边的图并非一定连通。
最小生成树:在一个连通网的所有生成树中,各边的代价之和最小的那棵生成树称为该连通网的最小生成树。
普里姆算法--加点法
假设N=(V,{E})是连通网,TE为最小生成树中边的集合。
(1)初始U={u0}(u0∈V),TE是空集; (2)在所有u∈U,v∈V-U的边中选一条代价最小的边
(u0
,v0)并入集合TE,同时将v0并入U; (3)重复(2),直到U=V为止。
此时,TE中必含有n-1条边,则T=(V,{TE})为N的最小
生成树
克鲁斯卡尔算法
假设N=(V,{E})是连通网,将N中的边按权值从小到
大的顺序排列。
(1)将n个顶点看成n个集合;
(2)按权值由小到大的顺序选择边,所选边应满足两个
顶点不在同一个顶点集合内,将该边放到生成树边的集
合中。同时将该边的两个顶点所在的顶点集合合并;
(3)重复(2)直到所有的顶点都在同一个顶点集合内。
图的遍历:
从图中某一顶点出发,沿着一 些边访遍图中所有
的顶点,且使每个顶点仅被访问一次,就叫做图的遍历 ( Graph Traversal )。
深度优先搜索 DFS (Depth First Search):
(1)从图中某个顶点 v0出发,首先访问 v0。
(2)找出 v0 的第一个未被访问的邻接点 v1,然后访问 v1。以 v1为新顶点,重复此步骤,直到刚访问过的顶点没有未被访问的邻接点为止。
(3)返回前一个访问过的且仍有未被访问的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点,然后执行步骤(2)。
广度优先搜索 BFS (Breadth First Search):
(1)从图中某个顶点 v0出发,首先访问 v0。 (2)依次访问 v0的各个未被访问的邻接点。
(3)分别从这些邻接点出发,依次访问它们的各个未被访问的邻接点。
(4)重复(3),直到所有顶点均没有未被访问的邻接点为止。访问时应保证:如果 vi和 vk为当前顶点,且 vi在 vk之前被访问,则 vi的所有未被访问的邻接点应在 vk的所有未被访问的邻接点之前访问。