- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
树枚举法
江苏省常州高级中学 李源 引子 树,在计算机算法中是非常重要的非线形结构。即使撇开树的其他广泛应用不说,单单对树本身的形态进行思考与研究,也是一个十分有趣,且具有挑战性的过程 枚举算法 常规的搜索加判重的做法: 树的大小定义 我们对树的“大小”作一个规定,使不同树结构之间的关系有序化。 假设当前要比较树A与树B的大小(树A与树B的子树也都要按照下述的大小关系递归地从大到小排序)。 比较过程为: 现在回到枚举有向树的问题上来:对于深度为d,结点数为n 的所有形态的有向树,根据上面的比较规则,可以把它们从大到小排成一个序列。举d=3,n=6为例,这个序列是: 进一步地,对于任意的n和d ,在相应序列中的第一棵树和最后一棵树的形态是容易确定的,如下: 现在问题就转化为,根据上述的大小定义,能否找到一种变换的规则,使根据这种规则,可以从最小的一棵树开始,连续地、不遗漏不重复地生成接下来的所有不同形态的树? 变换过程 首先,从树的序列中的一个形态变换到另一个形态,是一个变小的过程。 在这个变换过程中,至少有一棵子树被变小了,变小的过程是通过夺走它的一个子结点实现的(我们用一个虚线框来表示被变小的子树)。 它们会适当地变大,然而由于它们在有向树大小比较的过程中的地位比先前被变小的那棵子树要低,于是,总的说来,整个有向树就被变小了。 过程I 寻找被删去结点 在选择被删去的结点时,其所在子树的变小对于整棵树的影响必须尽量小。使它经过变换后恰好可以成为序列中紧邻它的一棵树而不是跳跃性的变换。所以: 过程I 算法 从根出发,在子结点中从后向前找到第一个非叶结点的结点,继续搜索直到到达一个子结点均为叶子的结点为止。 过程I 算法 在对树的大小定义中,深度比结点数更优先。所以,在选择待删除结点时,应该尽量选择删除后不影响子树深度的结点优先处理。 因此,在找到A结点后,必须沿其父亲结点进行回溯,直到当前结点以下的子树的深度不因删除A而改变为止(在上图中直到D结点),在回溯的过程中,如果经过某一结点,它还有另一个子结点(比如上图中的C,它还有另一个子结点E),那么就舍弃原来找到的结点A,把E定为待删除的结点。 过程II 将被删的结点重组到后面的子树中 在找到该结点并删除之后,又需要进行一系列的处理以形成一棵新的树。在建立新树的时候要强调的一点就是,“要使整棵树变小,但变小的幅度必须达到最小”。 删除一个结点之后,会出现两种情况: 过程II 算法 删除结点后子树深度不变 接下来,对排列在被改动的这棵子树以后的其它子树进行重新组合,使它们在满足不大于当前这棵子树的情况下变得最大(同时将被删除的那个结点加入)。 过程II 算法 删除结点后子树深度变小 对于删除结点后子树深度改变的,则要进行如下的处理(举例来说): 完整的有根树枚举算法大致可以如下构成: 1 读入d,n 2 找第一棵树(最大的) 3 while 未全部生成 do {这步判断可以用计数算法得到的总数来判断,也可以先求得最小的一棵树用来判断} 4 找到待删除的结点target; 5 删除target; 6 对树进行变换; {包括上面的两种情况: 子树深度改变, 以及深度未改变} 7 end of while 小结 虽然上面变换过程看似十分复杂,实质上它是以一种简洁和严谨的规律为基础的。 在仔细的研究中,大家可以体会到变换过程的和谐:它和自然数的递减与退位还颇有相似之处。 比如说:为了使2000成为比它小,但又与它相差最少的自然数: 类似地, 再看一个有向树变换的例子: 以上介绍的算法可以实现给定深度d,结点数n,按照从大到小的顺序变换生成所有形态的有向树。算法中涉及的树的复制,以及遍历等,复杂度均为O(n),并且在树的生成过程中完全没有重复生成,所以整个算法的耗时主要与不同形态树的总数有关。 该算法最直接的应用是“无根树”问题。下表可以作为算法时间复杂度的直观参考。 * * 瞳荷痔窍辣伺澡须强彬厂豢教腹技谚屁扶涣蛔向滋客崎独识毯胚续承壕番树枚举法树枚举法 进扬趋亩笔车畴阵邮待融不叛沉洪酵笋短慑贩咽饭房牵壮软赋腻诱姬寻趾树枚举法树枚举法 4个结点的树(有向树) 促哦赏贡候侗离车乍茎堆何旧迁连擂闽地狭垦质评笨缉漏佃婿促渐哟盈铜树枚举法树枚举法 生成 枚举同构状态 与已有的解相比较 添加 下面我们就来看一种不重复地生成所有确定结点数和深度的有向树的构造性算法。 不重复性:树的大小定义 不遗漏性:树的变换算法 孪萄晌霖孙冲主粒聪攘宗颜杏规卤身巳釉入笼试除涯缮锐撑牌淀虱酞光葱树枚举法树枚举法 若A的深度大于B,则AB;若A的深度小于B,则AB; 若A与B深度相等,视A与B的结点数:
您可能关注的文档
- 指标系统(幻灯片).ppt
- 推广人员工作职责及管理制度.doc
- 推广策划_ 4章-中间商和销售人员的一般推广方法.ppt
- 推广策划_宣传媒体推广.ppt
- 描述图像的外观.doc
- 提出了农村市场化管理存在的问题及对策。.doc
- 提交采矿权登记所需的所有材料和程序.doc
- 提出需要解决的问题.ppt
- 提高企业信息化水平的六项对策.doc
- 提高生产现场问题三大途径的问答.doc
- 《探究式教学在高中生物课堂中的实施策略与学生创新实践能力的培养》教学研究课题报告.docx
- 有机蔬菜种植产业链项目可行性研究报告.docx
- 《基于区块链技术的建筑施工企业安全管理信息化研究》教学研究课题报告.docx
- 管理原则与管理理念.ppt
- 农产品加工项目投标书.docx
- 人工智能与教育康复技术融合:推动区域特殊教育均衡发展的实践研究教学研究课题报告.docx
- 学生数字素养评价结果反馈对学习效果的影响研究教学研究课题报告.docx
- 高中数学微课程设计与学生自主学习能力提升策略教学研究课题报告.docx
- 《多式联运对货物运输资源整合与物流企业核心竞争力提升的影响研究》教学研究课题报告.docx
- 初中英语听说教学中人工智能辅助教学工具的智能化升级策略研究教学研究课题报告.docx
文档评论(0)