第一部分 用搜索方法求解问题4.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.8 博弈 1.8.1 概述 博弈一向被认为是富有挑战性的智力的游戏,有着难以言语的魅力。博弈问题常与对策问题联系在一起。对策论(Game Theory)用数字方法研究对策问题。一般将对策问题分为零和对策和非零和对策。 最典型的零和对策问题是我国古代齐王与田忌赛马的问题。该问题是齐王与田忌都有可分为上、中、下三匹马。齐王的上马、中马、下马都比田忌相应的上马、中马、下马好,但田忌的上马比齐王的中马好,田忌的中马比齐王的下马好,聪明的田忌采取了下述对策后一举取胜: 非零和对策的例子有:囚犯难题(The prisoner dilemma)。该问题是有两个嫌疑犯A和B,暂时还没有获得他们犯罪的确定的证据。现对他们判刑的规则是: 博弈虽然自古就是人与人的对弈,但自从有了计算机以后,人们开始就有用计算机下棋的想法,早在60年代就已经出现若干博弈程序,并达到较高的水平,现已出现计算机博弈程序能够与人类博弈大师抗衡的局面。 举世瞻目的人机对弈是1997年IBM公司编制的深蓝(deep blue)计算机与国际象棋大师卡斯帕罗夫对弈,取得了三胜二和一负的好成绩。博弈的研究不断为人工智能提出新的课题,可以说博弈是人工智能研究的起源和动力之一。 博弈问题对人的深层次的知识研究提出了严峻的挑战。如何表示博弈问题的状态,博弈过程和博弈取胜的知识,这是目前人类仍在探讨之中的问题。要提高博弈问题求解程序的效率,应作到如下两点: 改进生成过程,使之只生成好的走步,如按棋谱的方法生成下一步; 改进测试过程,使最好的步骤能够及时被确认。 要达到上述目的有效途径是使用启发式方法引导搜索过程,使其只生成可能赢的走步。而这样的博弈程序应具备: 一个好的(即只产生可能赢棋步骤的)生成过程。 一个好的静态估计函数。 下面介绍博弈中两种最基本的搜索方法。 1.8.2 极小极大搜索过程 1.极小极大搜索的思想   极小极大搜索策略是考虑双方对弈若干步之后,从可能的步中选一步相对好的走法来走,即在有限的搜索深度范围内进行求解。 为此要定义一个静态估计函数f,以便对棋局的势态作出优劣估计。这个函数可根据棋局优劣势态的特征来定义。 这里规定: MAX代表程序方    MIN代表对手方 P 代表一个棋局(即一个状态) 有利于MAX的势态,f(P)取正值 有利于MIN的势态,f(P)取负值 势态均衡,f(P)取零 f(P)的大小由棋局势态的优劣来决定。 使用静态函数进行估计必须以下述两个条件为前提: (1)双方都知道各自走到什么程度、下一步可能做什么。 (2)不考虑偶然因数影响。 在这个前提下,博弈双方必须考虑: (1)如何产生一个最好的走步。 (2)如何改进测试方法,能尽快搜索到最好的走步。 MINMAX的基本思想是: (1)当轮到MIN走步的结点时,MAX应考虑最坏的情况(因此,f(p)取极小值)。 (2)当轮到MAX走步的结点时,MAX应考虑最好的情况(因此,f(p)取极大值)。 (3)当评价往回倒推时,相应于两位棋手的对抗策略,不同层上交替的使用(1)、(2)两种方法向上传递倒推值。 2.极小极大搜索算法 极小极大过程的算法如下: 1. T:=(s, MAX ), OPEN:=(s), CLOSED:=( ); {开始时树由初始结点构成,OPEN表只含有s.} 2. LOOP1: IF OPEN = ( ) THEN GO LOOP2; 3.n:=FIRST(OPEN),REMOVE( n, OPEN ), ADD_TO_LAST( n, CLOSED ); //约定加到尾部 4. IF n可直接判定为赢、输或平局   THEN f(n):= ∞∨-∞∨0, GO LOOP1 ELSE EXPAND( n )→ni , ADD ({ni}, T ) IF d({n}) k THEN ADD_TO_LAST ({ni}, OPEN ), GO LOOP1 ELSE 计算f(ni), GO LOOP1; { n达到深度k,计算各端结点f值} 5. LOOP2: IF CLOSED=NIL THEN GO LOOP3 ELSE np:= LAST(CLOSED); 6. IF (np∈MAX)∧(f(nc ∈ iMIN)有值)

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档