目录

图论基础5

*图论基础(5)

持续更新…

1.图的基本概念

不写了,网上有好多资料ovo

2.图的存储和遍历

2.1存储:

https://i-blog.csdnimg.cn/direct/61b03ede78184c378609f9245b38752b.png

https://i-blog.csdnimg.cn/direct/0c15f12e5ad44d1a8f3f08c32a6aea42.png

3.最小生成树

https://i-blog.csdnimg.cn/direct/d3c2b41964c54db6b6d38d24aa2b1ea7.png

https://i-blog.csdnimg.cn/direct/0e9d7bbfc11d400e86558a3f47f8ecae.png

3.2Kruskal算法

https://i-blog.csdnimg.cn/direct/5f990f78b5ba41acbaf50e7510d2c58d.png

4.拓扑排序

拓扑排序的⽬标是将有向⽆环图中的所有结点排序,使得排在前⾯的结点不能依赖于排在后⾯的结

点。在课程问题中,相当于就是找到⼀个排课的合法顺序。具体流程可借助队列进⾏:

1. 将图中所有度为 0 的点到队列中
2. 取出队头元素删除与该点相连的边如果删除之后的后继结点的度变为 0到队列中
3. 重复 2 操作直到图中没有点或者没有度为 0 的点为⽌。

拓扑排序判断是否有环:

跑⼀遍拓扑排序算法,如果有结点没有进队,那么就表明有环。

【题⽬描述】

有个⼈的家族很⼤,辈分关系很混乱,请你帮整理⼀下这种关系。给出每个⼈的后代的信息。输出⼀个序列,使得每个⼈的后辈都⽐那个⼈后列出。

【输⼊描述】

第 1⾏⼀个整数N ,表⽰家族的⼈数。接下来 N⾏,第 i⾏描述第i 个⼈的后代编号ai,j ,表⽰ai,j 是i 的后代。每⾏最后是0 表⽰描述完毕。

【输出描述】

输出⼀个序列,使得每个⼈的后辈都⽐那个⼈后列出。如果有多种不同的序列,输出任意⼀种即可。

https://i-blog.csdnimg.cn/direct/01803b50c0da4b4dbe02a3dc9b32945a.png

5.单源最短路

 单源最短路即图中个顶点到其它各顶点的最短路径
 多源最短路即图中每对顶点间的最短路径

https://i-blog.csdnimg.cn/direct/b65b490e64b44082944e7d7434fb020a.png https://i-blog.csdnimg.cn/direct/be26fd3cfff94c2cb1bae53298e463b1.png

5.2 bellman-ford 算法(很暴力)

是⼀种基于松弛操作的最短路算法,可以求出有负权的图的最短路,并可以对最短路不存在的情况进⾏判断。

算法核⼼思想:不断尝试对图上每⼀条边进⾏松弛,直到所有的点都⽆法松弛为⽌。

6.多元最短路