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

计算机算法基础 第2版 课件 第16章 穷举搜索.pptx

计算机算法基础 第2版 课件 第16章 穷举搜索.pptx

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

第16章穷举搜索1问题及方法的描述 2回溯法 8n-皇后问题 11子集和问题 15分枝限界法 21分枝限界法解n-皇后问题 230/1背包问题 284. 博弈树(gametree)和?-?剪枝 46

2如果一个问题是个NPC问题,而我们又不满足于近似解或者该问题不存在所需要的近似度的解,那么,除非能证明P=NP,我们只能用穷举搜索(Exhaustivesearch)来找出其最佳解或精确解。当然,在最坏情况下,这可能需要指数时间完成。但是,如果算法设计得当,我们往往可以避免最坏情况的发生,使得绝大多数情况下可很快找到精确解。这一章讨论这种算法设计的技巧。这一章中没有很多理论要证明,主要是介绍一些实用的方法。我们先介绍最常用的二个方法,即回溯法和分支限界法。然后,介绍在博弈树中搜索最佳策略时常用的?-?剪枝法。当我们用穷举搜索来求一个问题的最佳解时,首先要知道,这个最佳解要满足什么约束条件。1.问题及方法的描述

3显式约束满足约束条件的解往往可以用一个n元组(x1,x2,…,xn)来表示,这里,xi可以在允许的一个有限集合Si中取值,即xi?Si(1≤i≤n)。给定约束条件xi?Si(1≤i≤n)以后,一个问题的搜索空间就定了,因此这个约束条件称为显式约束。它是一个n维的空间中一个有限的点的集合,而一个n元组(x1,x2,…,xn)则对应其中的一个点。隐式约束我们的目的是在搜索空间(即解空间)中找到满足一定要求的最佳解。我们用一个评估函数P(x1,x2,…,xn)来评估空间中一个点(x1,x2,…,xn)的优劣以及是否合格被选为最后的解。例如,找一个点(x1,x2,…,xn)使得P(x1,x2,…,xn)的值最大,或最小,或等于0。评估函数定义的约束条件则称为隐式约束。滿足隐式约束的点称为答案点(answernode)。

4搜索算法给定显式约束后,搜索算法就是在满足显式约束的解空间中找出满足隐式约束的解的算法。搜索树通常,一个解空间可以用一个搜索树来表示。我们用一个例子来说明。例16.1 8皇后问题8皇后问题是n皇后问题的一个特例。在一个8?8的国际象棋棋盘中放入8个皇后的棋子,使任意两个皇后之间都不会互相攻击。我们假定行序号从上到下,顺序为1,2,3,4,5,6,7,8。列序号从左到右,顺序为1,2,3,4,5,6,7,8。显然,这8个皇后必须出现在不同列、不同行、和不同对角线上。下图(16-1)给出了这样一个解的例子。(见下页)

58皇后问题(继续1)n个皇后的任一种摆法对应于一个n-元组,(x1,x2,…,xn)。其中,xi(1?i?n)是第i行的皇后所在的位置,即它所在的列序号。因为n个皇后必须在不同的列,所以可加上一个显式约束,即n-元组(x1,x2,…,xn)中的n个整数必须不同,也就是说,这n个整数是1到n的一个排列。例如,上面的8皇后解可表示为(4,6,8,2,7,1,3,5)。(接下页)

68皇后问题(继续2)这个解空间可用称为排列树的搜索树来表示。从根向下(根除外),搜索树有n层。下图(16-2)给出了n=4的例子。图中每个结点中数字是回溯法搜索时被访问的顺序。

7搜索树的构造第1层的点代表棋盘中第1行的皇后可能的位置,第2层的点代表棋盘中前2行的皇后所有可能的位置,等等,第i行(in)的一个内结点x代表一个部分解,表示为一个i元组,x=(x1,x2,…,xi),并存于数组x[1..i]中。它表示前i行皇后的位置已定,而余下n-i行的位置待定。另外,从根到x的路径有i条边,顺序标记为x1,x2,…,xi。第i+1层的点y[1..i+1]是第i层的点x[1..i]的儿子,当且仅当x[1..i]=y[1..i](0?in)。一个叶结点x,即第n层的点,是解空间的一个点,对应n元组x[1..n]=(x1,x2,…,xn)。从根到x的路径有n条边,顺序标记为x1,x2,…,xn。因为这个n元组是n个数的一个排列,所以这个搜索树称为一个排列树。给定一个搜索问题的显式约束后,搜索树的构造就知道了。

8寻找答案点的搜索方法构造搜索树后,我们为树中任一点x[1..i](1?i?n)定义3个函数如下。判定函数B(x)。如果x为根的子树可能含有答案点,则有B(x)=true,点x称为一个活点。反之,则有B(x)=false,点x称为是一个死点。通常用一

文档评论(0)

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

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档