- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
遍历第十一章:图主讲:周翔
图的遍历遍历定义:从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。遍历实质:找每个顶点的邻接点的过程图的特点:图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。
引例——搜索问题有3个传教士和3个野人来到河边准备渡河,河岸有一条船,每次最多可坐2个人。问传教士为安全起见,应如何规划摆渡方案,使得在任何时刻,在河两岸以及船上传教士人数不能少于野人人数?在每一次渡河后,都会有几种渡河方案供选择,究竟哪种方案最有利?这就是搜索问题。
引例——搜索问题适用情况:难以获得求解所需的全部信息;更没有现成的算法可供求解使用。在每一次渡河后,都会有几种渡河方案供选择,究竟哪种方案最有利?这就是搜索问题。概念:依靠经验,利用已有知识,根据问题的实际情况,不断寻找可利用知识,从而构造一条代价最小的推理路线,使问题得以解决的过程称为搜索
引例——搜索问题对这类问题,一般我们都转换为状态空间的搜索问题。如传教士和野人问题,可用在河左岸的传教士人数、野人人数和船的情况来表示。即,初始时状态为(3,3,1),结束状态为(0,0,0),而中间状态可表示为(2,2,0)、(3,2,1)等等。
引例——搜索问题这类问题的解,就是一个合法状态的序列,其中序列中第一个状态是问题的初始状态,而最后一个状态则是问题的结束状态。SgS0解路径搜索空间全状态空间
引例——爬虫搜索引擎蜘蛛通过跟踪链接访问网页,获得页面HTML代码存入数据库。索引程序对抓取来的页面数据进行文字提取、中文分词、索引等处理,以备排名程序调用用户输入关键词后,排名程序调用索引库数据,计算相关性,然后按一定格式生成搜索结果页面。
引例——爬虫爬行抓取索引排序返回
引例——爬虫搜索引擎的两种基本抓取策略——深度优先如封建帝位的继承。不能深入的情况下才考虑其他分支的策略
引例——爬虫搜索引擎的两种基本抓取策略——广度优先类似长幼有序的规则
引例——爬虫两种策略结合=先广后深+权重优先先把这个页面所有的链接都抓取一次再根据这些URL的权重来判定URL的权重高,就采用深度优先,URL权重低,就采用宽度优先或者不抓取。怎样避免重复访问?解决思路:设置辅助数组visited[n],用来标记每个被访问过的顶点。初始状态为0i被访问,改visited[i]为1,防止被多次访问
图的遍历遍历两种策略深度优先搜索DFS(DepthFirstSearch)广度优先搜索BFS(BreadthFirstSearch)
图的遍历——深度优先搜索DFS深度优先搜索(DepthFirstSearch)是树先序遍历的推广。它的基本思想是:任意选定图中一个顶点v,从顶点v开始访问,然后选定v的一个没有被访问过的邻接点w,对顶点w进行深度优先搜索,直到图中与当前顶点邻接的顶点全部被访问为止。如果当前仍有顶点尚未访问,则从未访问的顶中任选一个顶点,执行前述遍历过程。
图的遍历——深度优先搜索DFS一棵树的深度优先搜索
图的遍历——深度优先搜索DFS深度优先搜索的算法:(1):从图中某个顶点v0出发,首先访问v0。(2):找出刚访问过的顶点的第一个未被访问的邻接点,然后访问该顶点。以该顶点为新顶点,重复此步骤,直到刚访问过的顶点没有未被访问的邻接点为止。(3):返回前一个访问过的且仍有未被访问的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点。然后执行步骤(2)。若图是非连通图,则图中一定还有顶点未被访问,需要从图中另选一个未被访问的顶点作为起始点,重复上述深度优先搜索过程,直至图中所有顶点均被访问为止。
图的遍历——深度优先搜索DFS深度优先搜索的图例:ACDEGBFIH12345678967ACDEGBFIH1234589前进回退深度优先搜索过程深度优先搜索树由图例过程可知,深度搜索是一个递归的过程
图的遍历——深度优先搜索DFSvoidTraverseGraph(AdjMatrix*g){ intvi; //访问标志数组初始 for(vi=0;vig-vexnum;vi++) { visited[vi]=False; } //循环调用深度搜索连通子图的操作 for(vi=0;vig-vexnum;vi++) { if(!visited[vi]) { DepthFirstSearch(g,vi); } }}ACEGBFH0123456
图的遍历——深度优先搜索DFSvoidDepthFirstSearch(A
您可能关注的文档
- 数据结构——基于Python语言(微课版) 课件 T1_C语言基础.pptx
- 数据结构——基于Python语言(微课版) 课件T1_绪论(什么是数据结构).pptx
- 数据结构——基于Python语言(微课版) 课件T2_线性表(顺序表).pptx
- 数据结构——基于Python语言(微课版) 课件T3_线性表(单链表).pptx
- 数据结构——基于Python语言(微课版) 课件T4_线性表(双向链表和循环链表).pptx
- 数据结构——基于Python语言(微课版) 课件T5_线性表(应用与比较).pptx
- 数据结构——基于Python语言(微课版) 课件T7_栈与队列(队列).pptx
- 数据结构——基于Python语言(微课版) 课件T10_数组与广义表(矩阵).pptx
- 数据结构——基于Python语言(微课版) 课件T11_数组与广义表(广义表).pptx
- 数据结构——基于Python语言(微课版) 课件T12_基于线性表的查找算法.pptx
- 数据结构——基于Python语言(微课版) 课件T15_树(二叉树).pptx
- 数据结构——基于Python语言(微课版) 课件T20_图(表示法).pptx
- 数据结构——基于Python语言(微课版) 课件T14_树(树).pptx
- 数据结构——基于Python语言(微课版) 课件T9_串(模式匹配).pptx
- 数据结构——基于Python语言(微课版) 课件T6_栈与队列(栈).pptx
- 数据结构——基于Python语言(微课版) 课件 T8_串(串).pptx
- 数据结构——基于Python语言(微课版)-教学大纲.docx
- 《军事理论》教案第八章.docx
- 《军事理论》教案第二章.docx
- 《军事理论》教案第九章.docx
原创力文档


文档评论(0)