网站大量收购独家精品文档,联系QQ:2885784924

数据结构与算法深度优先.pptx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

深度优先搜索

搜索与回溯是计算机解题中常用的算法,很多问题无法根据某种确定的计算法则来求解,可以利用搜索与回溯的技术求解。回溯是搜索算法中的一种控制策略。它的基本思想是:为了求得问题的解,先选择某一种可能情况向前探索,在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索,如此反复进行,直至得到解或证明无解。如迷宫问题:进入迷宫后,先随意选择一个前进方向,一步步向前试探前进,如果碰到死胡同,说明前进方向已无路可走,这时,首先看其它方向是否还有路可走,如果有路可走,则沿该方向再向前试探;如果已无路可走,则返回一步,再看其它方向是否还有路可走;如果有路可走,则沿该方向再向前试探。按此原则不断搜索回溯再搜索,直到找到新的出路或从原路返回入口处无解为止。什么是搜索与回溯算法

深度优先搜索是搜索的一种算法,目的是从起点开始搜索直到到达指定顶点(终点)。深度优先搜索会沿着一条路径不断往下搜索直到不能再继续为止,然后再折返,开始搜索下一条候补路径。深度优先搜索

解说:深度优先搜索的特征为沿着一条路径不断往下,进行深度搜索。深度优先搜索选择的是最新候补顶点作为候补的顶点,所以会一路往下,沿着新发现的路径不断深入搜索。

输入一个数n(为1~9的整数),输出1~n的全排序。如123的全排序是123、132、213、231、312、321。【算法分析】题目可以形象化如下的例子,假如有编号为1、2、3的3张扑克牌和编号为1、2、3的3个盒子。现在需要将这3张扑克牌分别放到3个盒子里面,并且每个盒子有且只能放一张扑克牌。那么一共有多少种不同的放法呢?全排列

A同学手拿3张扑克牌,首先走到了1号盒子面前。此时A同学心里想:我是先放1号扑克牌,还是先放2号扑克牌,还是先放3号扑克牌呢?现在要生成的是全排列,很显然这三种情况都需要去尝试。A同学说那我们约定一个顺序吧:每次到一个盒子面前时,都先放1号,再放2号,最后放3号扑克牌。说完A同学走到了1号盒子前,将1号扑克牌放到第1个盒子中。

放好之后A同学往后走一步,来到了2号盒子面前。本来按照之前约定的规则,每到一个新的盒子面前,要按照1号、2号、3号扑克牌的顺序来放。但是现在A同学手中只剩下2号和3号扑克牌了,于是A同学将2号扑克牌放入了2号盒子中。放好之后A同学再往后走一步,来到了3号盒子面前。

现在A同学已经来到了3号盒子面前,按照之前约定的顺序,还是应该按照1号、2号、3号扑克牌的顺序来放,但是A同学手中只有3号扑克牌了,于是只能往3号盒子里面放3号扑克牌。放好后,A同学再往后走一步,来到了4号盒子面前。咦!没有第4个盒子,其实我们并不需要第4个盒子,因为手中的扑克牌已经放完了。

我们发现当A同学走到第4个盒子的时候,已经完成了一种排列,这个排列就是前面3个盒子中的扑克牌号码,即“123”。

是不是到此就结束了呢?肯定没有!产生了一种排列之后A同学需要立即返回。现在A同学需要退一步重新回到3号盒子面前。好!现在A同学已经回到了3号盒子面前,需要取回之前放在3号盒子中的扑克牌,再去尝试看看还能否放别的扑克牌,从而产生一个新的排列。于是A同学取回了3号扑克牌。当A同学再想、往3号盒子放别的扑克牌的时候,却发现手中仍然只有3号扑克牌,没有别的选择。于是A同学不得不再往回退一步,回到2号盒子面前。A同学回到2号盒子后,收回了2号扑克牌。现在A同学手里面有两张扑克牌了,分别是2号和3号扑克牌。按照之前约定的顺序,现在需要往2号盒子中放3号扑克牌(上一次放的是2号扑克牌)。放好之后A同学又向后走一步,再次来到了3号盒子面前。A同学再次来到3号盒子后,将手中仅剩的2号扑克牌放入了3号盒子。又来到4号盒子面前。当然了,这里并没有4号盒子。此时又产生了一个新的排列“132”。接下来按照刚才的步骤去模拟,便会依次生成所有排列:“213”、“231”、“312”和“321”。

设有n个整数的集合{1,2,…,n},从中取出任意r个数进行排列(rn),试列出所有的排列,n(为1~9的整数)。【算法分析】这题和对1~n的进行全排序基本是一样的,只是把原来的盒子由n个变成r个。数字全排列2

A+B=C全排列□□□+□□□=□□□,将数字1—9分别填入9个□中,每个数字只能使用一次使得等式成立。例如173+286=459是一个合理的组合,问一共有多少种合理的组合?(注:173+286=459与286+17

文档评论(0)

kay5620 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8001056127000014

1亿VIP精品文档

相关文档