书签 分享 收藏 举报 版权申诉 / 65
上传文档赚钱

类型搜索算法讲解培训课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4015125
  • 上传时间:2022-11-03
  • 格式:PPT
  • 页数:65
  • 大小:871.50KB
  • 【下载声明】
    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),即在另外一个队列中出现,输出 找到路径 双向广度优先搜索处理抱怨的服务技巧在美国和日本的餐厅,墙壁上有本店店长和最佳服

    16、务人员的彩色照片。这种激励和表扬方式能够鼓励员工在他们职权范围之内参与改善服务。他的意见被采纳了,工作会更投入。这些措施都能有效地提升服务的主动性、积极性。37.2 或招标人按评标委员会推荐的中标候选人排序,根据中华人民共和国有关招标投标的法律、法规、规章规定的程序确定中标人。所谓三工,就是在全员合同制基础上把员工的身份分为优秀员工、合格员工、试用员工(临时工)三种。根据工作态度和效果,三种身份之间可以进行动态转化。三工动态转换与物质待遇挂钩。在这种制度下,工作努力的员工可及时地被转换为合格员工或优秀员工,不努力工作的员工就会由优秀员工被转换为合格员工或试用员工,甚至丢掉工作。工作不是永久性的

    17、,要看员工的表现才能决定去留。22.5 在仲裁期间,除正在进行仲裁的部分外,本合同其它部分应继续履行。4注意眼神(三)招标文件的澄清3.4 部门、工段负责建立本部门的生产指挥系统,确保生产调度指令及时得到贯彻执行;5.8严格执行交接班制度,不迟到、不早退、不脱岗、不串岗。6.4充装后应确认气瓶无超压、无泄露。2.3对首次充装或检验后首次投入使用的天然气气瓶,应该用天然气对瓶内气体进行抽真空置换后才可以正常使用。【案例】算法流程:三、判断新节点是否在同一个队列中重复的函数int isduplicate(i,j)/i为队列编号,j为当前节点在队列中的指针 遍历队列,判断是否存在【线性遍历的时间复杂

    18、度为O(N),如果用HashTable优化,时间复杂度可以降到O(1)四、判断当前扩展出的节点是否在另外一个队列出现,也就是判断相交的函数int isintersect(i,j)/i为队列编号,j为当前节点在队列中的指针遍历队列,判断是否存在【线性遍历的时间复杂度为O(N),如果用HashTable优化,时间复杂度可以降到O(1)双向广度优先搜索给定 3 X 3 的矩阵如下:2 3 41 5 x7 6 8程序每次可以交换x和它上下左右的数字,经过多次移动后得到如下状态:1 2 34 5 67 8 x输出在最少移动步数的情况下的移动路径每次移动的方向上下左右依次表示为u,d,l,r双向宽度优先搜

    19、索求解8数码问题#include#include#include#define MAXN 1000000#define SWAP(a,b)char t=a;a=b;b=t;typedef struct _Node Node;struct _Node char tile10;/represent the tile char pos;/the position of x char dir;/the moving direction of x int parent;/index of parent node;int head2,tail2;Node queue2MAXN;/two queues/sh

    20、ift of moving up,down,left,rightint shift42=-1,0,1,0,0,-1,0,1;/for output direction!char dir42=u,d,d,u,l,r,r,l;/test casechar start10=23415x768;char end10=12345678x;int main(int argc,char*argv)readtile();if(!solve()printf(unsolvablen);return 0;/read a tile 3 by 3void readtile()int i;char temp10;for(

    21、i=0;i 9;+i)scanf(%s,temp);starti=temp0;start9=0;/call expand to generate queuesint solve()init(0,start);init(1,end);while(head0=tail0&head1=tail1-head1)if(expand(1)return 1;else if(expand(0)return 1;while(head0=tail0)if(expand(0)return 1;while(head1=tail1)if(expand(1)return 1;return 0;/init the queu

    22、evoid init(int qi,const char*state)strcpy(queueqi0.tile,state);queueqi0.pos=strchr(state,x)-state;queueqi0.parent=-1;headqi=tailqi =0;int expand(int qi)/expand nodes int i,x,y,r;Node*p=&(queueqiheadqi);headqi+;for(i=0;i pos/3+shifti0;y=p-pos%3+shifti1;if(x=0&x=0&y tile,p-tile);SWAP(pNew-tile 3*x+y,p

    23、New-tilep-pos);pNew-pos=3*x+y;pNew-parent=headqi-1;pNew-dir=diriqi;if(isduplicate(qi)tailqi-;else if(r=isintersect(qi)!=-1)if(qi=1)print_result(r,tailqi);else print_result(tailqi,r);return 1;return 0;/check if there are duplicates in the queueint isduplicate(int qi)int i;for(i=0;i tailqi;+i)if(strcm

    24、p(queueqitailqi.tile,queueqii.tile)=0)return 1;return 0;/check if the current node is in another queue!int isintersect(int qi)int i;for(i=0;i f2)return ai,j+f1;else return ai,j+f2;显而易见,这个算法就是最简单的搜索算法。时间复杂度为2n,明显是会超时的。分析一下搜索的过程,实际上,很多调用都是不必要的,也就是把产生过的最优状态,又产生了一次。为了避免浪费,很显然,我们存放在一个A数组中。Ai,j:每产生一个f(i,j

    25、),将f(i,j)的值放入A中,以后再次调用到f(i,j)的时候,直接从Ai,j来取就可以了。数字三角形问题数字三角形问题2双向搜索从初始结点开始扩展,每扩展一层(称它为f1),再从目标结点按照产生系统相反的办法来扩展结点(称它为f2),直到f1和f2产生出了相同的结点,把中间路线输出就可以了。这一类问题,很明显,需要给你初状态和末状态,并且状态产生是可逆、容易实现的。BFS魔板由8个同样大小的方块组成,每个方块的颜色均不同,本题中用数字1至8分别表示,可能出现在魔板的任一位置。对于魔板可施加三种不同的操作,分别是A,B,C标识,具体操作方法如下:魔板问题魔板问题ACB上下行互换每次一行同时循

    26、环右移一格中间四个方格顺时针旋转一格启发式搜索所谓启发式搜索,就在于当前搜索结点往下选择下一步结点时,可以通过一个启发函数来进行选择,选择代价最少的结点作为下一步搜索结点而跳转其上(遇到有一个以上代价最少的结点,不妨选距离当前搜索点最近一次展开的搜索点进行下一步搜索)。一个经过仔细设计的启发函数,往往在很快的时间内就可得到一个搜索问题的最优解,对于NP问题,亦可在多项式时间内得到一个较优解。启发式估价函数 f(n)=g(n)+h(n)其中f(n)是节点n的估价函数,g(n)是在状态空间中从初始节点到n节点的实际代价,h(n)是从n到目标节点最佳路径的估计代价。在这里主要是h(n)体现了搜索的启

    27、发信息,因为g(n)是已知的。若干启发式搜索算法局部择优搜索法 在搜索的过程中选取“最佳节点”后舍弃其他的兄弟节点、父亲节点,继而继续搜索最好优先搜索法 在每一步的估价中都把当前的节点和以前的节点的估价值比较得到一个“最佳的节点”,继而进行搜索A*算法 如果一个估价函数可以找出最短的路径,我们称之为可采纳性。A*算法是一个可采纳的最好优先算法。A*算法 f(n)=g(n)+h(n)f(n)是估价函数,g(n)表示从起始搜索点到当前点的代价(通常用某结点在搜索树中的深度来表示)。h(n)是n到目标的最短路经的启发值。由于这个f(n)其实是无法预先知道的,所以我们用前面的估价函数f(n)做近似。分

    28、支定界实际上是A*算法的一种雏形,其对于每个扩展出来的节点给出一个预期值,如果这个预期值不如当前已经搜索出来的结果好的话,则将这个节点(包括其子节点)从解答树中删去,从而达到加快搜索速度的目的。A*算法的条件一种具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法的充分条件是:1)搜索树上存在着从起始点到终止点的最优路径。2)问题域是有限的。3)所有结点的子结点的搜索代价值0。4)h(n)=h*(n)(h*(n)为实际问题的代价值)。当此四个条件都满足时,一个具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法,并一定能找到最优解。A*算法实现框架 初始化起始点,将其加入未

    29、搜索过点的优先队列 当队列非空且未达到终止点时获取队列头结点,并寻找其所有孩子结点;若孩子结点未在已搜索和待搜索队列中,计算其F值,并将其有序插入队列中;若在待搜索队列中且F值较小,则替换之。输出搜索结果从已搜索队列中可逆推搜索过程主要搜索过程伪代码如下:创建两个表,OPEN表保存所有已生成而未考察的节点,CLOSE表中记录已访问过的节点。算起点的估价值;将起点放入OPEN表;while(OPEN!=NULL)从OPEN表中取估价值f 最小的节点n;if(n节点=目标节点)break;for(当前节点n 的每个子节点X)算X的估价值;if(X in OPEN)if(X的估价值小于OPEN表的估

    30、价值)把n设置为X的父亲;更新OPEN表中的估价值;/取最小路径的估价值 if(X in CLOSE)continue;if(X not in both)把n设置为X的父亲;求X的估价值;并将X插入OPEN表中;/还没有排序 /end for 将n节点插入CLOSE表中;按照估价值将OPEN表中的节点排序;/实际上是比较OPEN表内节点f的大小,从最小路径的节点向下进行。/end while(OPEN!=NULL)A*算法求解算法求解8数码问题数码问题 f(x)=g(x)+h(x)g(x)为经过上下左右移动空格附近的数字来得到新状态所需步数,h(x)为当前状态与目标状态的距离,就是所有不在目标位置的数字个数总和,必然小于h*(x)搜索:1010、1016、1043、1241、1560、2553、物资调度

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:搜索算法讲解培训课件.ppt
    链接地址:https://www.163wenku.com/p-4015125.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库