minimax search算法

局面估价函数:给每个局面(state)规定一个估价函数值f,评价它对于己方的有利程度。胜利的局面的估价函数值为\propto,而失败的局面的估价函数为-\propto

Max局面:假设这个局面轮到己方走,有多种决策可以选择,其中每种决策都导致一个子局面(sub-state)。由于决策权在我们手中,当然是选择估价函数值f最大的子局面。因此,该局面的决策函数等于子局面f值的最大值,把这样的局面称为max局面。

Min局面:假设这个局面轮到对方走,它也有多种决策可以选择,其中每种决策都也会导致一种子局面,但由于决策权在对方手中,在最坏的情况下,对手当然选择估价函数值f最小的子局面。因此,该局面的决策函数值等于子局面f值的最小值,把这样的局面称为min局面。

终结局面:如果双方都不能走,显然胜负已分,f值根据规定取值。综上所述,得到了最单纯的极大极小算法。

完全极在极小过程:对于一个局面,递归计算它所有子局面的估价函数值。如果是max层,转移到其中函数值最大的子局面,否则转移到函数值最小的子局面。可以把已经算过估价函数值的局面都记录下来,以免重复工作。

function minmax(State, Player:Integer):integer

begin

     if WeWon then minmax:=+\propto

     else if WeLost then minmax:=-\propto

    else begin

        min:=+\propto

        max:=-\propto

        for Move:=1 to MoveCount do

        begin

            NewState:= DoMove(State, Move);

            Value:= minmax(NewState, Next(Player));

            if Value < min then min:=Value

            if Value > max then max := Value

       end

      if Player = MyProgram then minmax:= max

      if Player = Oppoent then minmax:=min

  end

end

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值