A1. 双连通分量:判定准则
一、BCC双连通分量
- 无向图的关节点(articulation point,cut-vertex):其删除之后,原图的连通分量增多(connected compinents)
- 无关节点的图,称作双(重)连通图(bi-connectivity)
- 双连通分量(Bi-connected Components,BCC):极大的双连通子图
- 任何一张连通的无向图,都存在着若干个关节点,而且以这些关节点为界,可以将其分割为若干个自己自洽的BCC
二、确定BCC
- Brute-Force蛮力:对于每一顶点v,通过遍历检查G{V}是否连通O(n*(n+e))
- 非节点
- hca:Highest Connected Ancestor
A2. 双连通分量:算法
A3. 双连通分量:实例
B. 优先级搜索pfs
C. Dijkstra算法
一、最短路径
- E. Dijkstra:单源点(SSSP,Single-Source Shortest Path)给定顶点s,计算s到其余各个顶点的最短路径及长度
- Floyd-Warshall:所有点对(APSP,All-Pairs Shortest Path)找出每队顶点u和v之间的最短路径及长度(权重可能为负)
二、最短路径树
- 任一最短路径的前缀,也是一条最短路径O(1)
- 最短路径树(SPT,Shortest Path Tree):所有最短路径的并,既连通亦无环。SPT ≠ MST
- 算法:减而治之 -> 选取 -> 更新 -> 选取+更新
- 实例
- 实现
D. prim算法
- 最小支撑树MST
· 定义:有一棵子树可覆盖所有的点
· 作用:自身可有效计算;优化问题的基本模型;为NP提供近似解 - 极短跨边
· 割cut:设(u;u/v)是N的一个割;若uv是该割的一条极短跨边,则必存在一颗包含uv的MST
· 问题:uv可能为同一个点…
- 实现
测验
- 如果把朋友圈视为一无向图,那么即使A君看不到你给B点的赞,你们仍可能属于同一双连通分量。√
- 对于同一无向图,起始于顶点s的DFS尽管可能得到结构不同的DFS树,但s在树中的度数必然固定。√