コードサイズが半分になるとキャッシュが効いて速く・・・となるかどうかは確認していない。
abstract class NegaAlphaBetaPlayer[N <: Node[N]](val maxDepth: Int) extends Player[N] { override def play(ply: Int, node: N, last: Move): Move = { val (m, s) = play(node, Int.MinValue + 1, Int.MaxValue, maxDepth) m } def play(node: N, alpha: Int, beta: Int, depth: Int): (Move, Int) = { if (depth == 0 || node.isTerminal) { return (Move.empty, score(node)) } val moves = node.possibleMoves() var bestMove = Move.empty var alpha_ = alpha for (m <- moves) { val n = node.play(m).get val (_, s) = play(n, -beta, -alpha_, depth - 1) if (-s >= beta) { // beta cut return (m, beta) } if (-s > alpha_) { bestMove = m alpha_ = -s } } (bestMove, alpha_) } def score(node: N): Int }
- Int.MinValue がIntから桁あふれしてしまうことに注意。
探索木はminノードのスコアが反転する以外はalpha-betaと同じになる。
This energetic bonus has a wagering requirement of 5 times, which does not apply to each recreation. If you benefit of|benefit from|reap the advantages of} Grosvenor’s welcome bonus, review the listing of video games 카지노 사이트 추천 excluded from this promotion. Over the years, it has established itself as a significant supplier of real-time slots and video games and is these days cooperating with many popular world brands, together with Bet365. Casino followers have certainly heard of the Jurassic Park, Lost Vegas, Playboy, and Halloween slots.
返信削除