アルファベータアルゴリズムでノードの子をランダムに選択すると、順番に選択するよりもカットオフを取得する可能性が高くなりますか?
*** でマークされた追加の疑似コードを次に示します。
function alphabeta(node, depth, α, β, maximizingPlayer)
if depth = 0 or node is a terminal node
return the heuristic value of node
arrange childs of node randomly ***
if maximizingPlayer
v := -∞
for each child of node
v := max(v, alphabeta(child, depth - 1, α, β, FALSE))
α := max(α, v)
if β ≤ α
break (* β cut-off*)
return v
else
v := ∞
for each child of node
v := min(v, alphabeta(child, depth - 1, α, β, TRUE))
β := min(β, v)
if β ≤ α
break (* α cut-off*)
return v
コネクト フォー ゲームでこれを使用して小さなサンプルを実行したところ、少し速く実行されたように見えますが、実際にランダム性の有無にかかわらずカットオフをカウントすると、ランダム性のないカットオフの方が多くなります。それは少し奇妙です。
それが速い(または遅い)ことを証明することは可能ですか?