查找算法详细总结

上传人:bin****86 文档编号:60117683 上传时间:2018-11-14 格式:DOCX 页数:13 大小:22.26KB
返回 下载 相关 举报
查找算法详细总结_第1页
第1页 / 共13页
查找算法详细总结_第2页
第2页 / 共13页
查找算法详细总结_第3页
第3页 / 共13页
查找算法详细总结_第4页
第4页 / 共13页
查找算法详细总结_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《查找算法详细总结》由会员分享,可在线阅读,更多相关《查找算法详细总结(13页珍藏版)》请在金锄头文库上搜索。

1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划查找算法详细总结五种查找算法总结一、顺序查找条件:无序或有序队列。原理:按顺序比较每个元素,直到找到关键字为止。时间复杂度:O(n)二、二分查找条件:有序数组原理:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。时间复杂度:O(logn)三、二叉排序树查找条件:

2、先创建二叉排序树:1.若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2.若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;3.它的左、右子树也分别为二叉排序树。原理:在二叉查找树b中查找x的过程为:1.若b是空树,则搜索失败,否则:2.若x等于b的根节点的数据域之值,则查找成功;否则:3.若x小于b的根节点的数据域之值,则搜索左子树;否则:4.查找右子树。时间复杂度:四、哈希表法条件:先创建哈希表原理:根据键值方式(Keyvalue)进行查找,通过散列函数,定位数据元素。时间复杂度:几乎是O(1),取决于产生冲突的多少。五、分块查找原理:将n个数据元素按块有序划分为

3、m块。每一块中的结点不必有序,但块与块之间必须按块有序;即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字;而第2块中任一元素又都必须小于第3块中的任一元素,。然后使用二分查找及顺序查找。一、查找客户资料的方法:平台查找:1、全国组织机构代码管理中心“信息核查”例如:深圳电子2、生意搜例如:深圳公司3、搜索网4、目标客户搜索5、6、B2B平台7、汕头进出口商会8、普宁国际服装城9、业务员网站10、快速找客户客户久久11、企业分类导航12、国内企业名录是一个综合性平台上没有企业搜索框,可以结合谷歌高级搜索指定在这个平台上地名公司“guangdong”指定就可以搜索出来13、中小企业国际

4、市场开拓资金在企业资质公示查询客户资料订阅法:在谷歌快讯里面可以订阅一些关键词,谷歌会定期发送部分资料在搜索引擎中特征查找:1、地名容易出现与公司老客户冲突2、地名docc3、Dimingdoce4、地名copyrightXX5、地名粤ICP备056、地名粤ICP备ICP假备案再上政府网站.cn地区公司这样的关键词搜索出来的就是某地区所有使用非企业邮箱的客户15、地区Athena/contact谷歌定位到搜索16、地区17、地区.cn谷歌定位到很好用的一些工具:1、专业查可以用此网站到当地竞争对手的网站上找一个案例,再利用IP反查,可以查到竞争对手服务器上的当地客户2、3、银河小站4、中企动力

5、华南IDC介绍网站5、6、测速网站算法总结沈业基一、动态规划和递推dp一般的解题步骤:分析问题,弄清题意从原问题中抽象出模型根据模型设计状态,要求状态满足最优子结构和无后效性直接设计状态有难度的话则需要考虑转化模型根据设计的状态考虑转移如果过不了题目要求的数据范围,则需要考虑优化由于动态规划涉及的内容太多,只言片语难以讲清,所以附件中放了很多篇关于动态规划的文章,大部分系原创,并附上了一些经典的论文,主要讲了DP的优化,一些特殊的状态设计技巧Dp和递推没有本质区别,都是用一些状态来描述问题,并记录下一些信息,根据已知信息推出未知信息,直到得到问题的解关于DP的优化有两篇神级论文,放在附件里面了

6、,写的非常好。二、图论及网络流最小生成树:克鲁斯卡尔算法和普利姆算法,重要性质1:最小生成树上任意两点的路径的最大边最小重要性质2:最小生成(来自:写论文网:查找算法详细总结)树的多解只与相同权值的的边有关最短路:spfa算法、堆+迪杰斯特拉算法Spfa算法是基于松弛技术的,随机图效果极佳,最坏O(nm),适用于任意图,能够判断负权环判负权环的方法:记录每个点当前从原点到它的最短路上边的条数,如果某次更新后这个条数n-1则存在负权环堆+迪杰斯特拉则是用了贪心的思想,不断扩大确定dist的集合,同时更新dist,如果边权有负值就不能做,复杂度是O(n+m)logn)的拓扑排序:可以将有向图转化为

7、一个线性的序列,满足一个点所有的前驱结点都出现在这个点在序列中的位置之前。可以判断这个有向图是否有环一个简单而实用的扩展:给树做类top排序,可以有类似的功能,即每次去掉叶子结点,将树转化为一个具有拓扑关系的序列再扩展:树同构判断,可用类top确定树根是谁,再最小表示法+hash即可强连通分量、缩点:tarjan算法核心是每个点记一个时间戳tii,另外lowi表示i点能延伸出的搜索树中节点的tii的最小值,还要维护个栈记当前路径上的点,lowi初始化为tii,如果搜完i了,tii=lowi则当前栈顶到i的所有点会在一个强连同分量内。关键代码:varj,k:longint;begininc(ti

8、me);tii:=time;vi:=true;lowi:=time;inc(ed);qed:=i;j:=hi;whilej0dobegink:=pointj;iftik=0thenbegindfs(k);iflowk=wi,j,有的题目可以利用这个不等式套KM求出最小可行定标和,如XX1112ti糟糕的传染网络流非常神奇的一个东西,数学味有余而图论味不足,通常用来解决限制条件太强,以至于无论如何都表示不了状态的题,很多经典例题见网络流24题通常使用的最大流算法是dinic,代码要背熟,一般能10分钟之内敲出来最大流最小割定理经典模型:最小割模型,最大权闭合图,平面图网络流转最小割参考神文胡伯涛

9、论文费用流相当于网络流的一个强化,能多处理一维信息。具体来讲就是给边多加一个“费用”,每次增广的费用就是这条增广路的费用之和*流量。费用流有最小费用最大流和最大费用最大流,用spfa每次找条最短路增广即可最小费用最大流还可以用zkw算法加速,差不多比裸spfa+增广快10倍的样子,我和盾盾研究了一种更nb的费用流,我命名为“距离标号连续增广路费用流算法”,能够秒杀几千个点的稠密随机图,二分图就更不在话下了,速度几乎达到了dinic的三分之一的样子,而且实现非常简单!经典例题参考网络流24题三、贪心贪心的关键是找结论,同时给出证明,然后就可以利用这个结论来做题了当然,考场上对你猜出的结论给出证明

10、通常是很难的,所以用贪心法解题需要丰富的经验,正确的“题感”,胆大心细才能搞出来由于经常要取最优值,所以常常与堆、平衡树等数据结构结合起来贪心+其他算法:由于贪心往往能大幅化简状态,利用问题的某些“单调性”,加上贪心的思想,往往能是问题大幅简化,从而结合其他算法解决问题经典例题:田忌赛马,利用贪心来确定状态四、分治分而治之的思想在信息学竞赛中是非常重要的,下面主要介绍一下分治的经典应用二分查找思想很简单,功能很强大,边界要注意,负数要特判在非负数范围内的二分一般写法如果是l:=mid-1或+1则mid:=(l+r)div2而如果是r:=mid-1或+1则mid:=(l+r+1)div2快速幂a

11、b=(a(bdiv2)2+ord(odd(b)*a取模也适用扩展:求(1+a+a2+a3+an)modp的值O(logn)算法:分治1+a+a2+a3+an=(1+a+a2+a3+a(ndiv2)*a(ndiv2)+ord(odd(n)*an两个快速幂可以合到一起写快速排序,归并排序任何一本算法书上都会讲的,这里就略过了,值得一提的是快排记得加上随机化k:=arandom(r-l+1)+l二分答案当答案满足在解集空间中连续分布时可以使用二分答案,将最优性问题转化为判定性问题,通常标志:最大值最小等差分约束系统中有时也需要二分答案以解决最优性问题,顺便能多得到一个信息二分答案还有一个优势,那就是

12、已经知道了答案,那就可能可以将一些直接做必须在线的操作转化为离线操作,诸如要求你判定“第一句出现矛盾的话”之类的题目0-1分数规划也是经典的利用二分答案来做的一类问题通常是要求你最小化f(x)/g(x)令ans=f(x)/g(x)则f(x)-g(x)*ans=0重构权,将f(i)-g(i)*ans作为新权值,用相应算法求出一个“最小值”,判断是否=0,接着二分即可详细说明及数学证明见集训队07胡伯涛论文树的分治一般用来解决树上的路径或统计类问题,每次只考虑跟树根有关的信息,然后递归分治处理树的分治通常有基于点或基于边的分治,基于点的难合,基于边的复杂度太高这里只介绍基于点的分治步骤:处理跟当前

13、树根有关的信息重新计算子树大小在子树中选择重心为根,递归到相应子树处理因为每次选了重心,所以递归总共logn层,每层O(n)的复杂度,总复杂度就是O(nlogn)更详细严谨的介绍见漆子超论文二分搜索直接搜的复杂度是指数级的的话,一般是40左右的数据量,hash一半,搜一半,搜后面的时候利用之前的hash信息合并出原问题的解而直接搜的复杂度达到阶乘级的话n一般就不超过20了,做法一般差不多经典例题:POI02szy,NOIXX方程的解数五、搜索作为信息学竞赛中的所谓“万能算法”,搜索可以说是计算机学科所具有的最大特点了,自然地,搜索算法的应用自然也是非常之广泛,除了专门的搜索题,搜索一般可以用来

14、部分预处理,打表找规律,当然还有骗分搜索的一般步骤:确定状态选择搜索方式确定产生式规则开始搜索搜索的常见优化方式:改变状态表示这个需要根据题目而定,确定一个漂亮的状态表示,可能就有希望转向记忆化了,即使不行,搞出一个漂亮的状态表示是解决一道麻烦题的最重要的一步,再者,调试起来也会容易许多。优化搜索顺序这个优化在多数搜索中能起到摧枯拉朽的提速效果,通常我们选择枝叶较少的儿子先扩展,例如大名鼎鼎的dancingLinks,除了利用双向十字链表去除冗余状态,每次选择可扩展数最少的儿子扩展同样给它的神速创造了条件。可行性剪枝以及最优性剪枝这是非常常用的剪枝思路之一,因题目而异,在迭代加深搜索中尤为重要一般思路:考虑每次解最多变优多少,从当前的层数来看还有多少改进空间,如果已经不可能成为解或更新答案则可以剪枝了A*及IDA*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号