图搜索技术中的状态空间法选读.doc

  1. 1、本文档共77页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 图搜索技术 我们经常用八数码难题或十五数码难题来说明问题求解的概念。十五数码难题是指由15个编有数码1至15并放在4×4方格棋盘上的可走动的棋子组成,棋盘上总有一格是空的,以便让周围棋子走入空格,或者说是移动空格,如图给出两种棋局: 11 9 4 15 -----------------------------> 1 2 3 4 1 3 ▊ 12 5 6 7 8 7 5 8 6 9 10 11 12 13 2 10 14 13 14 15 ▊ 初始棋局 目标棋局 图2.1 十五数码难题 即初始棋局与目标棋局。让我们考虑如何把初始棋局变换为目标棋局。问题的解答就是某个合适的走步序列,如“左移棋子12,下移棋子15,右移棋子4……”等等。 在这类问题中,对初始情况和目标情况都是明确规定了的。还有一组把一种情况变换为另一种情况的动作或走步。下面我们给出几个基本概念,用于讨论这一类问题的解答。 ■问题状态与算符 要讨论上述问题解法,有必要引入下列几个概念。 ●状态: 是表示问题解法中每一步问题状况的数据结构。 ●算符: 则是把问题从一种状态变换为另一种状态的手段。 ●状态空间: 是从初始状态出发所能达到的状态集合。 下面四个相应的算符能够最自然地说明十五数码难题:空格左移、空格上移、空格右移及空格下移。在下棋问题中,这些算符对应于一定的走步。有时,某个算符(走步)不适用于某一状态;例如不能把“空格右移”运用于上述例子中的目标状态。 用关于状态和算符的语言来描述一个问题的解 即是某个能够把初始状态变为目标状态的算符序列。 ●状态图: 把初始状态可达到的各状态所组成的空间设想为一幅由各状态对应节点组成的图,这些节点与有关状态相对应,这种图称为状态图。 任何问题的求解技术,包括状态空间技术,都包括两方面内容: 表示 先表示 ,后搜索 搜索 表示的好坏不同 → 状态空间大小相差很大 → 搜索效率 系统性能 关系 我们首先研究状态空间的表示,然后再对各种搜索策略及其算法进行讨论。 第一节 状态空间的表示 2.1.1状态描述 在建立某个问题的状态空间(或问题空间)表示的过程中,必须清楚什么是这个问题的状态。在前例十五数码难题中,把棋局作为问题的状态是很自然的。但是,一个问题求解过程要找到一个解而实际上又不想移动棋子,就必须采用某些棋局的描述而不是棋局本身。因此,任何状态问题描述的一个重要部分就是为该问题状态选择一些具体的描述方式。 状态描述: 任何类型的数据结构都可以用来描述状态 其中包括:符号、字符串、向量、二维数组、树和表格等 对于十五数码难题,一个4 ×4 阵列理应是一个自然的状态描述方式。在选择状态描述方式时,我们还必须注意能够易于用算符对它们进行运算,以便从一种状态变换为另一种状态。 例如:让我们考虑把代数式(AB+CD)/BC变换为较简单的表达式A/C+D/B的问题。这里,问题的状态显然是代数表达式。不过,我们还必须决定状态描述的方式。 (1)一种常用的描述采用二元树。这种描述树的非终端节点代表 式中的算术运算符号(+ ,-,×和÷),而终端节点代表 式中的变量或常量符号(A,B,C和D)。这样,式(AB+CD)/BC 的描述树如图(a)所示。图中,节点÷的左分支代表分子,右分支代表分母。应用代数规则(状态空间算符)把这一状态描述变换为另一描述。对于所述的代数式子,可把它变换为如图(b)所描述的状态。 图(a) 图(b) (2)另一种常用的描述方式是线性字符串。式(AB+CD)/BC的一种可能的字符串描述为÷+×AB×CD×BC。 其中,算术运算符号(÷+和×)叫做前缀,因为它们位于字符串中运算数的前面。因为我们知道每个运算符号只对两个运算数进行运算,所以字符串是不需要标点符号的。例如,字符串中符号×的运算数必定是两个由合适的代数表达式描述的紧跟在此符号后面的子字符串,即×AB和×CD。应用字符串形式描述,我们可以把上述问题叙述为把字符串÷+×AB×CD×BC变换为字符串+÷AC÷DB的问题。 2.1.2 算符与重写规则 算符把一种状态变换为另一种状态。因此,可以把算符看做定义域为状态集合的函数(实际上,算符只是部分函数,因为一个算符不可能适用于一切状态)。 当状态描述采用字符串形式时,我们有一个十分方便的方法来表示算符运算。这个方法应用了重写规则(有时叫做产生式)的概念。 一套重写规则规定了由一个字符串变换为另一个字符串的方法。重写规则全部具有Si→S

文档评论(0)

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

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

1亿VIP精品文档

相关文档