0

完全に動作する Tic Tac Toe ゲームを持っていますが、持っている MiniMax アルゴリズムを変更する方法はありますか? したがって、ある意味でより単純であるか、さらには短絡的です。

def maximized_move(self,gameinstance):
    ''' Find maximized move'''    
    bestscore = None
    bestmove = None
    for m in gameinstance.get_free_positions():
        gameinstance.mark(self.marker,m)

        if gameinstance.is_gameover():
            score = self.get_score(gameinstance)
        else:
            move_position,score = self.minimized_move(gameinstance)

        gameinstance.revert_last_move()

        if bestscore == None or score > bestscore:
            bestscore = score
            bestmove = m
    return bestmove, bestscore
def minimized_move(self,gameinstance):
    ''' Find the minimized move'''
    bestscore = None
    bestmove = None
    for m in gameinstance.get_free_positions():
        gameinstance.mark(self.opponentmarker,m)

        if gameinstance.is_gameover():
            score = self.get_score(gameinstance)
        else:
            move_position,score = self.maximized_move(gameinstance)

        gameinstance.revert_last_move()

        if bestscore == None or score < bestscore:
            bestscore = score
            bestmove = m
    return bestmove, bestscore
4

2 に答える 2

1

誰かがすでにこれを行っている可能性があると思います... Negamaxについてのウィキペディアを参照してください。

フレインより:

SEARCHING_FUNCTION {
  Decrease depth by 1
  Loop through all moves
    Play move
    if ( depth = 0 ) move_score = static_position_score
    else move_score = - Opponent's_best_move_score    
    if ( move_score > best_move_score ) then ( best_move = move )        
    Undo Move     
  End of Loop
  Return best_move_score
} END
于 2014-04-15T20:11:42.480 に答える
1

最適化/高速化を検討している場合 Min Max Alpha Beta Pruning を見てください - 同じアルゴリズムですが、最適なショートカットがあります

于 2014-04-15T09:57:35.860 に答える