搜索算法讲解培训课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《搜索算法讲解培训课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 搜索 算法 讲解 培训 课件
- 资源描述:
-
1、搜索算法讲解人肉搜索人肉搜索google度娘度娘爬虫爬虫文件查找文件查找什么是搜索算法呢?什么是搜索算法呢?搜索算法是利用计算机的高性能来有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。搜索过程实际上是根据初始条件和扩展规则构造一棵解答树并寻找符合目标状态的节点的过程。what.A*回溯回溯深搜深搜 广度优先搜索:从初始状态开始,通过规则来生成第一层结点,同时检查生成结点中是否有目标结点.若没有则生成下一层接点,并检查是否有目标结点广度优先搜索广度优先搜索 采用队列存储 每次扩展出当前结点的所有子结点0123456广度优先搜索void BFS(int curNode,i
2、nt curDepth)while(front rear)+front;for(i=0;i MaxDepth)return;for(int i=0;in;+i)int newNode=Expend(curNode,i);DFS(newNode,+curDepth);return;函数的返回值可以根据具体的情况来设定深度优先搜索算法举例11.5 合同条款第10条的规定不能免除卖方在本合同项下的质量保证义务或其他义务。2.1检查登记气瓶制造标志和检验标志。登记内容包括制造国别、制造厂名或代号、出厂编号、出厂年月、公称工作压力、水压试验压力、实际容积、实际重量、上次检验日期。()应收应付报表:包括收
3、款付款情况汇总表、收款付款情况明细表、应收应付账款明细表、超期应收账款明细表、超期应付账款明细表;品牌地位的满足各潜在投标人对招标文件如有疑问可要求澄清,要求澄清的潜在投标人应按照投标须知表第17项规定的时间和方式通知招标代理机构。招标代理机构将视情况确定采用适当的方式予以澄清或以书面形式予以答复,并在其认为必要时,将不标明查询来源的书面答复发给所有购买招标文件的潜在投标人。需要强调的是,要改变如此大型的机构,使之向现代化服务转变并不是件容易的事情。人人都有惯性和惰性,要想改善公司服务的品质,使它符合现代化的顾客需求,在培训过程中就必须牢记最重要的原则,那就是改变惯性和惰性。构筑物是楼宇的主体
4、,结构的完好、沉降位移的改变、防水工程、门窗完好都是楼宇正常运行的保证,因此加强日常的检查、维护保养也是物业管理的一项重要工作。主要任务是要保持结构不被任意改动,外墙、门、窗、地面、天面完好和及时修复,定期进行基础和整体观测。27.4 招标代理机构将按本须知第27.2条的内容作开标记录,存档备查。1、在投标有效期内,招标代理机构以书面形式通知所选定的中标人。通知也可以传真的形式,但需要随以书面确认。在迎接客户的时候,通常应该说“您好,欢迎光临,里边请”等话语。在引导顾客的时候有一系列细微的肢体语言礼仪。礼貌的服务和明确的引导手势,会让顾客感觉到更贴心。迎宾与引导有标准的礼仪手势,手不是完全张开
5、的,虎口微微并拢,平时手放在腰间。采取民主推荐与组织考察相结合的方法,确定各级优秀青年人才,每年推荐一次,具体程序是:30.1 评标期间,评标委员会有权要求投标人对投标文件中含义不明确、同类问题表述不一致或者有明显文字和计算错误的内容等作必要的澄清、说明或者补正。投标人必须按照招标代理机构通知的澄清内容和时间做出澄清。除按本须知第32条规定改正算术错误外,投标人对投标文件的澄清不得超出投标文件的范围或者改变投标文件的实质性内容。1241DescriptionThe GeoSurvComp geologic survey company is responsible for detecting
6、underground oil deposits.GeoSurvComp works with one large rectangular region of land at a time,and creates a grid that divides the land into numerous square plots.It then analyzes each plot separately,using sensing equipment to determine whether or not the plot contains oil.A plot containing oil is
7、called a pocket.If two pockets are adjacent,then they are part of the same oil deposit.Oil deposits can be quite large and may contain numerous pockets.Your job is to determine how many different oil deposits are contained in a grid.InputThe input contains one or more grids.Each grid begins with a l
8、ine containing m and n,the number of rows and columns in the grid,separated by a single space.If m=0 it signals the end of the input;otherwise 1=m=100 and 1=n=100.Following this are m lines of n characters each(not counting the end-of-line characters).Each character corresponds to one plot,and is ei
9、ther*,representing the absence of oil,or,representing an oil pocket.Outputare adjacent horizontally,vertically,or diagonally.An oil deposit will not contain more than 100 pockets.Sample Input1 1*3 5*1 8*5 5*0 0Sample Output0122题目的意思就是在给出的图中代表有石油,*代表没有石油,而在一个有石油的地方它的周围8个方向的地方如果也有石油,那么这2块石油是属于一块的,给出图,
10、问图中有几块石油田.若图为下图:是连成一块的,所以图中只有一个油田解题方法:采用深度优先搜索策略,对给出的图中一旦出现一个则对其个方向进行搜索,并对搜索过的标记,直到一次搜索结束则油田总数加一,最后的总数即为所求的石油的方块数。#include using namespace std;const int MAX=100;int m,n;char mapMAXMAX;bool flagMAXMAX;int move_x8=-1,0,1,1,1,0,-1,-1;int move_y8=-1,-1,-1,0,1,1,1,0;void Dfs(int x,int y)int i;if(mapxy=&f
11、lagxy=false)flagxy=true;for(i=0;i=0&ty=0&tx m&ty m n&m!=0&n!=0)memset(flag,false,sizeof(flag);int i,j,sum=0;for(i=0;i m;i+)for(j=0;j mapij;for(i=0;i m;i+)for(j=0;j n;j+)if(mapij=&flagij=false)Dfs(i,j);sum+;cout sum endl;return 0;深度优先搜索 优点 空间需求少,深度优先搜索的存储要求是深度约束的线性函数 问题 可能搜索到错误的路径上,在无限空间中可能陷入无限的搜索 最初
12、搜索到的结果不一定是最优的广度优先搜索 优点 目标节点如果存在,用广度优先搜索算法总可以找到该目标节点,而且是最小(即最短路径)的节点 缺点 当目标节点距离初始节点较远时,会产生许多无用的节点,搜索效率低双向广度优先搜索(DBFS)DBFS算法是对BFS算法的一种扩展。BFS算法从起始节点以广度优先的顺序不断扩展,直到遇到目的节点 DBFS算法从两个方向以广度优先的顺序同时扩展,一个是从起始节点开始扩展,另一个是从目的节点扩展,直到一个扩展队列中出现另外一个队列中已经扩展的节点,也就相当于两个扩展方向出现了交点,那么可以认为找到了一条路径。比较 DBFS算法相对于BFS算法来说,由于采用了从两
13、个根开始扩展的方式,搜索树的宽度得到了明显的减少,所以在算法的时间复杂度和空间复杂度上都有优势!技巧:每次扩展结点总是选择结点比较少的那边进行下次搜索,并不是机械的两边交替。双向广度优先搜索算法是对广度优先算法的一种扩展。广度优先算法从起始节点以广度优先的顺序不断扩展,直到遇到目的节点;而双向广度优先算法从两个方向以广度优先的顺序同时扩展,一个是从起始节点开始扩展,另一个是从目的节点扩展,直到一个扩展队列中出现另外一个队列中已经扩展的节点,也就相当于两个扩展方向出现了交点,那么可以认为我们找到了一条路径。双向广度优先算法相对于广度优先算法来说,由于采用了从两个根开始扩展的方式,搜索树的深度得到
14、了明显的减少,所以在算法的时间复杂度和空间复杂度上都有较大的优势!双向广度优先算法特别适合于给出了起始节点和目的节点,要求他们之间的最短路径的问题。双向广度优先搜索双向广度优先搜索 双向广度优先算法编程的基本框架如下:数据结构:Queue q1,q2;/两个队列分别用于两个方向的扩展(注意在一般的广度优先算法中,只需要一个队列)int head2,tail2;/两个队列的头指针和尾指针算法流程:一、主控函数:void solve()1.将起始节点放入队列q1,将目的节点放入队列q22.当 两个队列都未空时,作如下循环 1)如果队列q1里的未处理节点比q2中的少(即tail0-head0=tai
15、l1-head1时)3.如果队列q1未空,循环扩展(expand())q1直到为空4.如果队列q2未空,循环扩展(expand())q2直到为空双向广度优先搜索算法流程:二、扩展函数:int expand(i)/其中i为队列的编号(表示q0或者q1)取队列qi的头结点H 对头节点H的每一个相邻节点adj,作如下循环 1 如果adj已经在队列qi之前的某个位置出现,则抛弃节点adj 2 如果adj在队列qi中不存在 1)将adj放入队列qi 2)如果adj 在队列(q(1-i),即在另外一个队列中出现,输出 找到路径 双向广度优先搜索处理抱怨的服务技巧在美国和日本的餐厅,墙壁上有本店店长和最佳服
展开阅读全文