生成树,目录持续更新。
- 无向图最小生成树
- 有向图最小生成树
- 次小生成树与最小瓶颈路
- 生成树计数
无向图最小生成树
考虑从一棵包含1个点的最小生成树逐渐扩增到N个点:
1个点->2个点->....->N个点。
当前包含i个点的最小生成树Ti,如何扩展?
维护Di,表示对于任意点i∈{G-Ti},距离Ti的最短距离。
Ti+1,显然就是选取Di最小的点加入Ti构成。
这就是prim算法
考虑从N棵最小生成子树逐渐合并成一棵:
N棵->N-1棵->....->1棵
当前图中剩余i棵最小生成子树,如何扩展?
找到一条边,满足该边连接的两个点归属于两棵生成树,且这条边是所有满足该性质的边中边权最小的。
连接这条边,剩余i-1棵最小生成子树。
这就是kruskal算法。
有向图最小生成树
又名最小树形图。
枚举每个点作为树根。
考虑在图中找到每个点的最小权入边,连接这些边。