4专题四总结
来源:互联网 发布:马雅可夫斯基 知乎 编辑:程序博客网 时间:2024/05/22 08:44
专题四主要就是最短路径问题。一般最短路径有两种算法Prim与Kruscal算法,然而这两种算法核心技术就是并查集。
并查集。即“不相交集合”。将编号分别为1…N的N个对象划分 为不相交集合,在每个集合中,选择其中某个元素代表所在集合。常见两种操作: 合并两个集合查找某元素属于哪个集合 模板算法:void made(int n) //并查集的初始化{ int i; for(i=1;i<=n;i++) father[i] = I;}int find(int x)//查找父结点找到集合中的代表元素{ if(x != father[x]) { father[x] = find(father[x]);} return father[x];}void unions(int x,int y) //两个元素合并成一个集合其实是组合{ x = y; y = find(y);if(x != y){father[x] = y;}}
二. 求最小生成树的prim算法:
1, 任取一个顶点加入生成树;
2, 在那些一个端点在生成树里,另一个端点不在生成树里的边中,取权最小的边,将它和另一个端点加进生成树。
3, 重复上一步骤,直到所有的顶点都进入了生成树为止。
Prim算法:设G=(V,E)是连通带权图,V={1,2,…,n}构造G的最小生成树的Prim算法的基本思想是:首先置S={1},然后,只要S是V的真子集,就作如下的贪心选择:选取满足条件iS,jV-S,且c[i][j]最小的边,将顶点j添加到S中。这个过程一直进行到S=V时为止。在这个过程中选取到的所有边恰好构成G的一棵最小生树。
三, 求最小生成树的Kruscal算法 对所有边从小到大排序;依次试探将边和它的端点加入生成树,如果加入此边后不产生圈,则将边和它的端点加入生成树;否则,将它删去;直到生成树中有了n-1条边,即告终止。算法的时间复杂度O(eloge) 将边按权值从小到大排序后逐个判断,如果当前的边加入以后不会产生环,那么就把当前边作为生成树的一条边。最终得到的结果就是最小生成树。并查集 。
总结,专题四主要的目的就是寻找最小生成树,求最短路径。这其中有两种算法:Prim算法和Kruscal算法。一个是选点,一个是选边。当题目中边的数目较为复杂时,选用prim算法。但是一般性问题时,建议选择kruscal算法,理解起来比较简单。
- 4专题四总结
- 专题四总结
- 专题四 总结
- 专题四总结
- 专题四总结
- ACM专题四总结
- 图算法专题四总结
- 专题四-图论总结
- [C#基础知识系列]专题四:接口总结
- Django 1.5.4 专题四 Template 提高
- 总结_搜索专题(四天)及练习赛总结
- 3G专题四
- LDAP专题(四)
- 专题四1003
- 专题四1003
- 专题四 · 1001
- 专题四 Problem A
- 专题四 Problem B
- 利用iframe来实现ajax文件上传
- BroadcastReceiver—普通广播
- 华为机试题【7】-尼科彻斯定理
- CentOS6.5下Mysql数据库的安装与配置
- bzoj1901 Zju112 Dynamic Rankings
- 4专题四总结
- Git 常用操作命令
- 归并排序——java
- 爬虫常见错误及解决
- iOS用代码在视图中动态添加多个有序排列UIView的方法(例如九宫格)
- 单链表的C语言实现
- 设置 scrllView 上边穿过导航栏 下边穿过 tabba
- android 编译环境搭建
- 《以学术为业》概述 一 学问的使命和价值