专题四 总结

专题四总结

图论总结:
图论的相关算法:
1.广度优先搜索:用队列实现(广度优先搜索树不唯一)
从起点开始,标记已经访问过了;
当队列非空的时候,就取首元素,然后元素出队,所有与该元素相邻且未被访问过的点入队列;
标记入队的元素已经被访问过了。
2.深度优先搜索:用栈实现,(递归实现)
将顶点入栈,如果有相邻的点,就将其入栈,直到没有相邻点就将其出栈,然后找在栈顶的元素其他的相邻点,如果没有则该点出栈直到栈空。
最小生成树:(Prim算法,Kruskal算法)
Prim算法:
任选一个点,将这个点加入到一个集合当中,然后从不在该集合中的点中选一个点使得该点和任选的那个点之间的距离最短,然后将该点加入集合,该边为最小生成树的一条边。(简单来说就是从一个顶点开始找最小边,并且使加入该边没有回路,直到所有顶点都用完)
Kruskal算法:
将边按权值从小到大排列后逐个判断,如果当前边加入后不会产生环,那么就把这条边当作最小生成树的一条边,最终得到的结果就是最小生成树。(留下所有顶点,将所有边去掉,挨个加边,但是保证加入该边不会形成回路,直到加入(顶点-1)条边)
最短路径:(单源最短路径、每对顶点的最短路径)
1.单源最短路径(Bell-Ford算法、spfa算法、dijskal算法
dijskal算法:

设置一个集合s存放已经找到最短路径的顶点,其初始状态包含源点v,对vi∈V-S,假设从源点v到vi的有向边为最短路径。以后每求

一条最短路径v, …, vk,就将vk加入集合S中,并将路径v, …,vk , vi与原来的假设相比较,取路径长度较小者为最短路径。重复上

过程,直到集合V中全部都加到集合S当中。

Bell-Ford算法:

Bellman-Ford(G,w,s)


    Init(G,s)


    For i 1 to |V[G]|-1


         Do  For 每条边(u,v) E[G]


               Do  Relax(u,v,w)


    For每条边(u,v) E[G]


         Do  Ifd[v] > d[u] + w(u, v)


               ThenReturn FALSE


Return TRUE


2.每对顶点的最短路径:
Floyd:
每次以一个顶点为源点,调用Dijkstra算法n次。                                                               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值