回溯法与树的遍历及图.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

7.1图的定义和术语几个有关图的常用术语顶点的度

对无向图而言,邻接点的个数定义为顶点的度。

对有向图而言,顶点的度为其出度和入度之和,其中出度定义为以该顶点为弧尾的弧的个数,入度定义为以该顶点为弧头的弧的个数。子图

假设有两个图G=(V,E)和G‘=(V’,E‘),如果V’isasubsetofV且E’isasubsetofE,则称G‘为G的子图(subgraph)。路径和回路

若有向图G中k+1个顶点之间都有弧存在(即v0,v1,v1,v2,…vk-1,vk都是图G中的弧),则这个顶点的序列{v0,v1,…,vk}为从顶点v0到顶点vk的一条有向路径,路径中弧的数目定义为路径长度,若序列中的顶点都不相同,则为简单路径。对无向图,相邻顶点之间存在边的k+1个顶点序列构成一条长度为k的无向路径。如果v0和vk是同一个顶点,则是一条由某个顶点出发又回到自身的路径,称这种路径为回路或环。第29页,共43页,星期日,2025年,2月5日7.1图的定义和术语几个有关图的常用术语连通图和连通分量、强连通图和强连通分量

若无向图中任意两个顶点之间都存在一条无向路径,则称该无向图为连通图,否则称为非连通图。若有向图中任意两个顶点之间都存在一条有向路径,则称该有向图为强连通图。

非连通图中各个极大连通子图称作该图的连通分量。非强连通的有向图中的极大强连通子图称作有向图的强连通分量。生成树和生成森林

一个含n个顶点的连通图的生成树是该图中的一个极小连通子图,它包含图中n个顶点和足以构成一棵树的n-1条边。对于非连通图,对其每个连通分量可以构造一棵生成树,合成起来就是一个生成森林。无向网和有向网

在实际应用中,图的弧或边往往与具有一定意义的数相关,称这些数为权,分别称带权的有向图和无向图为有向网和无向网。第30页,共43页,星期日,2025年,2月5日7.2图的存储结构7.2.1数组表示法(邻接矩阵)7.2.2邻接表7.2.3十字链表7.2.4邻接多重表第31页,共43页,星期日,2025年,2月5日第1页,共43页,星期日,2025年,2月5日第6章树和二叉树6.1树的定义和基本术语6.2二叉树6.3遍历二叉树和线索二叉树6.4树和森林6.5树与等价问题6.6赫夫曼树及其应用6.7回溯法与树的遍历6.8树的计数第2页,共43页,星期日,2025年,2月5日6.7回溯法与树的遍历回溯法(backtracking),是解决问题的一种策略,是穷举法的一种推广,一种搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。如右图:一个陌生人从甲地到乙地的策略甲乙第3页,共43页,星期日,2025年,2月5日6.7回溯法与树的遍历例:求含有n个元素的集合的幂集。若

A={1,2,3},则其幂集

P(A)={

{1,2,3},{1,2},{1,3},{1},{2,3},{2},{3},{}

}第4页,共43页,星期日,2025年,2月5日6.7回溯法与树的遍历可以用分治法来设计这个求幂集的递归过程。另一个角度:

幂集的每个元素是一个集合,它或是空集、或含集合A中的一个元素、或含集合A中的两个元素、或等于集合A.

也就是说,

集合A中的元素x,对于幂集的每一个元素S而言,要么x属于S,要么x不属于S。

所以,求幂集的元素的过程可看成是依次对集合A中的元素进行取舍的过程。第5页,共43页,星期日,2025年,2月5日6.7回溯法与树的遍历1,2,31,21,312,3231,2121可以用一棵二叉树来表示过程中幂集元素的变化状况,求幂集的元素的过程即为先序遍历这棵状态树的过程。第6页,共43页,星期日,2025年,2月5日6.7回溯法与树的遍历求幂集元素的过程即为先序遍历这棵状态树的过程,算法如下:

voidPowerSet(inti,intn){

//求含n个元素的集合A的幂集,进入函数时

//已对A中前i-1个元素作了取舍处理,现从第i个元素起

//进行取舍处理,若in则求得幂集的一个元素,

//并输出之。

//初始调用:PowerSet(1,n)

if(in)输出幂集的一个元素

else{

取第i个元素,PowSet(i+1,n)

舍第i个元素,PowSet(i+1,n)

}

}//PowerSet第7页,共43页,星期日,2025年,2月5日6.7回溯法与树的遍历算法求精(用线性表表示集合)如下:

文档评论(0)

xiaozhuo2022 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档