数学建模中用到的启发式算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

启发式搜索

"启发"( heuristic)是关于发现和发明规则及方法的研究。在状态空间搜索中, 启发式被定义成一系列规则, 它从状态空间中选择最有希望到达问题解的路径。人工智能问题求解者在两种基本情况下运用启发式策略:

1.一个问题由于在问题陈述和数据获取方面固有的模糊性可能使它没有一个确定的解。医疗诊断即是一例。所给出的一系列症状可能有多个原因; 医生运用启发搜索来选择最有可能的论断并依此产生治疗的计划。视觉问题又是一例。看到的景物经常是模糊的, 各个物体在其连接、范围和方向上可以有多个解释。光所造成的幻觉加大了这些模糊性, 视觉系统可运用启发式策略选择一给定景象的最有可能解释。

2.一个问题可能有确定解, 但是求解过程中的计算机代价令人难以接受。在很多问题(如国际象棋)中, 状态空间的增长特别快, 可能的状态数随着搜索的深度呈指数级增长、分解。在这种情况下, 穷尽式搜索策略, 诸如深度优先或广度优先搜索,在一个给定的较实际的时空内很可能得不到最终的解。启发式策略通过指导搜索向最有希望的方向前进降低了复杂性。通过仔细考虑, 删除某些状态及其延伸, 启发式算法可以消除组合爆炸, 并得到令人能接受的解。

然而, 和发明创造的所有规则一样, 启发式策略也是极易出错的。在解决问题过程中启发仅仅是下一步将要采取措施的一个猜想。它常常根据经验和直觉来判断。由于启发式搜索只有有限的信息,诸如当前Open表中状态的描述,要想预测进一步搜索过程中状态空间的具体的行为很难办到。一个启发式搜索可能得到一个次最佳解, 也可能一无所获。这是启发式搜索固有的局限性。这种局限性不可能由所谓更好的启发式策略或更有效的搜索算法来消除。

启发式策略及算法设计一直是人工智能的核心问题。博奕和定理证明是两个最古老的应用: 二者都需要启发式知识来剪枝以减少状态空间。显然, 检查数学领域中每一步推理或棋盘上每一步可能的移动是不可行的。启发式搜索常常仅是实践中的解答。

近来, 专家系统的研究把启发式策略作为问题求解的一个重要部分。当一个专家解决问题时, 他检查所获取的信息并作出决定。实际上, 专家用来解决问题的"拇指法则"很大程度上是启发式的。这些启发性知识被专家系统的设计者提取出来并形成规则。

通常启发式算法由两部分组成: 启发方法和使用该方法搜索状态空间的算法。本章先介绍最好优先搜索的算法, 再讨论启发式算法的设计和评估。

在一字棋游戏中(图4.5), 穷尽搜索的组合数很大。第一步移动共有九种移法 , 每一种又有八种对应走法……依次类推, 这个问题在穷尽搜索策略下需考虑9!个状态。

根据对称性可以减少搜索空间的数目。棋盘上很多构造是等价的。譬如, 第一步实际上只有三种移法, 角、边的中央以及网络正中。在状态空间的第二层上, 由对称性可进一步减少到12×7!种。在图5.1 中可见到该状态空间比最初的状态空间要小, 但它在扩展过程中还要继续分解。

然而, 一个简单的启发式策略几乎可以整个地消除复杂的搜索过程。首先, 将棋子移到棋盘上×有最多的赢线的点。最初的三种状态显示在图5.2中。若两种状态有相等的赢的机率, 取其中的第一个。这样的话,可设计一种算法(完全实现启发式搜索), 它选择并移到具有最高启发值的状态。在这种情况下, ×占椐网络的中间点, 其它的各种状态都不再考虑, 它们的延伸状态同时也给消除

了。如图5.3 所示三分之二的状态空间就这样给剪枝了。

第一步走完后, 对方只能有两种走法(见图5.3)。无论选择哪种走法,我方均可以通过启发式搜索选择下一步可能的走法。在搜索过程中, 每一步只需估价一下单个节点的子结点; 不需要强力搜索。图5.3 显示了游戏前三步简化了的搜索过程。每种状态都标记了它的启发值。

要精确地计算待检查的状态的数目比较难, 但可以大致计算它的上限。一盘棋最多走九步, 每步的下一步平均有四、五种走法。这样大约就是4.5×9, 近40种状态, 比9!改善了很多。

5.1 启发信息和估计函数

人工智能的核心课题是问题求解。所谓"问题求解"就是在广义图中寻找一条从初始状态出发, 到达目标状态的解树。例如旅行问题是解决从出发点到达目的地的路线和工具问题; 机器人装配机器, 就是给出把一堆零件变成一台机器的一系列操作; 定理证明就是寻找一条从前提条件到达结论的通路等等。

在实际解决一个具体问题时, 人们常常把一个具有复杂联系的实际问题抽象化,保留某些主要因素, 忽略掉大量次要因素, 从而将这个实际问题转化成具有明确结构的有限状态空间问题, 这个空间中的状态和变化规律都是已知的有限集合, 因此可以找到一个求解该问题的算法。

然而, 在智能活动中使用最多的不是具有完备性的算法, 而是不一定完备的启发式方法。其原因有二:

首先, 大多数情况下, 智能系统不知道与实际问题有关的全部信息, 因而无法知道该问题的全部状态空间, 不可能用一套算法来求解其中的所有问题, 这样就只能依靠部分状态空间和一些特殊的经验性规则来求解其中的部分问题。

其次, 有些问题在理论上存在求解算法, 但是在工程实践中, 这些算法不是效率太低, 就是根本无法实现, 为了提高解题的效率, 不得不放弃使用这些算法, 而求助于一些经验性的启发式规则。

例如在博弈问题中, 计算机为了保证最后胜利, 可以将所有可能的走法都试一遍, 然后选择最佳走步。这样的算法是可以找到的, 但计算所需的时空代价十分惊人。就可能有的棋局数讲, 一字棋是9!=3.6×105, 西洋跳棋是1078, 国际象棋是10120, 围棋是10761。假设每步可能选择一种棋局, 用极限并行速度(10-104年/步)计算, 国际象棋的算法也得1016年即1亿亿年才可以算完, 而我们已知的宇宙史才 100亿年!

由此看来, 启发式的问题求解, 不仅在实践上是需要的, 而且在理论上也是必不可少的。

对问题空间进行搜索时, 提高搜索效率需要有和被解问题的解有关的大量控制性知识作为搜索的辅助性策略。有两种极端的情况: 一种是没有任何这种控制性知识作为搜索的依据, 因而搜索的每一步完全是随意的, 如随机搜索; 另一种是有充分控制性知识作为依据, 因而搜索的每步选择都是正确的, 这种搜索叫最佳搜索。一般情况是介于二者之间, 这些控制性信息反映在估价函数之中。

估价函数的任务就是估计待搜索结点的重要程度, 给它们排定次序。估价函数f(x)可以是任意一种函数, 如有的定义它是结点x处于最佳路径上的概率, 或是x结点和目标结点之间的距离, 或是x格局的得分等等。一般来说, 估价一个结点的价值, 必须综合考虑两方面的因素: 已经付出的代价和将要付出的代

相关文档
最新文档