清华大学人工智能导论课件第七章.doc

清华大学人工智能导论课件第七章.doc

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

第7章 高级搜索 在第一章、第二章,我们分别介绍了深度优先、宽度优先、A*算法和AO*算法等常规的搜索算法。深度优先、宽度优先等盲目搜索算法就不用说了,即便是A*算法,一般情况下,其算法复杂性仍然是指数时间级的。因此,当问题的规模大到一定程度之后,这些常规的搜索算法就显得无能为力了。本章将介绍一些相对比较新的搜索方法,如局部搜索、模拟退火和遗传算法等。这些算法的一个共同特点是引入了随机因素,每次运行并不能保证求得问题的最优解,但经过多次运行之后,一般总能得到一个与最优解相差不太大的满意解。以放弃每次必然找到最佳解,换取了算法时间复杂度的降低,以适合于求解大规模的优化问题。 7.1 基本概念 7.1.1 组合优化问题 在现实世界中,很多问题属于优化问题,或者可以转化为优化问题求解。比如我们前面介绍过的旅行商问题(TSP),就是求解旅行商在满足给定的约束条件下的最短路径问题。这里的约束条件是“从某个城市出发,经过n个指定的城市,每个城市只能且必须经过一次,最后再回到出发城市”。还有皇后问题,它要求在一个n×n的国际象棋棋盘上,摆放n个皇后,使得n个皇后之间不能相互“捕捉”,即在任何一行、一列和任何一个斜线上,只能有一个皇后。皇后问题本身并不是一个优化问题,但可以转化为优化问题来求解。比如我们可以定义指标函数为棋盘上能够相互“捕捉”的皇后数,显然该指标函数的取值范围是一个大于等于0的整数,当棋盘上摆放了n个皇后,且其指标函数取值为最小值0时,刚好是问题的解。因此皇后问题转变成了求解该指标函数最小的优化问题。 设x是决策变量,D是x的定义域,f(x)是指标函数,g(x)是约束条件集合。则优化问题可以表示为,求解满足g(x)的f(x)最小值问题。即 (7.1) 如果在定义域D上,满足条件g(x)的解是有限的,则优化问题称为组合优化问题。现实世界中的大量优化问题,属于组合优化问题。像旅行商问题、皇后问题等是组合优化问题的典型代表。 对于组合优化问题,由于其可能的解是有限的,当问题的规模比较小时,总可以通过枚举的方法获得问题的最优解,但当问题的规模比较大时,其状态数往往呈指数级增长,这样就很难通过枚举的方式来获得问题的最优解了。 一个问题的大小通常用输入数据量n来衡量,如旅行商问题中的城市数目,皇后问题中的皇后数目等。对于同一个问题,不同的求解方法的效率是不同的,差别可能会非常大。通常用算法的时间复杂性来评价一个求解方法的好坏。常用的算法复杂性函数按复杂性从小到大排列有如下几种: 其中O(h(n))表示该算法的复杂性为h(n)量级。如n皇后问题,由问题的约束条件,我们知道每一行、每一列只能并且必须放一个皇后。如果我们先不考虑对角线的情况,先用枚举法生成出n个皇后不在同一行、同一列的所有状态,再从中找出满足约束条件的解。从第一行开始放起,则第一行每个位置都可以放皇后,因此共有n种方法;第二行除了第一行皇后的所在列以外,其他位置都可以放皇后,因此共有n-1种方法;依此类推,第i行共有n-i种摆放方法。所以所有可能的状态数共n!个。这样我们可以大概估算出,用这样一种枚举法求解n皇后问题,所花费的时间与n!成正比关系,其时间复杂性用算法复杂性函数表示就是O(n!)。 Nirwan Ansari和Edwin Hou在他们的书中,给出了假定计算机的处理速度为每秒钟执行10亿次运算的条件下,不同输入数据量下各种复杂性函数所需要的计算时间。如表7.1所示。 表7.1 时间复杂性函数比较 输入量n 复杂性函数 10 20 30 40 100 n 10ns 20ns 30ns 40ns 100ns nlogn 10ns 26.0ns 44.3ns 64.1ns 200ns n2 100ns 400ns 900ns 1.6s 10s 2n 1.0s 1.0ms 1.1s 18.3min 4.0世纪 n! 3.6ms 77.1年 8.4×1013世纪 2.6×1029世纪 3.0×10139世纪 当一个算法的时间复杂性可以表示为多项式形式时,则称之为多项式时间算法,否则就是一个指数时间算法。从表7.1中可以看出,如果一个算法是指数时间算法(2n或者n!),那么当n大到一定程度时,因为所花费的时间太长了,以至于不可能求解。 一些组合优化问题已经找到了多项式时间算法,如线性规划问题。还有一些被称为难于求解的组合优化问题,至今还没有找到求解这些问题的最优解的多项式时间算法。像旅行商问题、背包问题、装箱问题等,都属于这类难于求解的组合优化问题。由于这些问题都有很强的实际背景,为此人们研究一些不一定能求得最优解,但往往能得到一个满意解的算法,以此来降低算法的复杂性。而实际上很多情况下追求最优解并不一定有意义,一个满意

文档评论(0)

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

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

1亿VIP精品文档

相关文档