並列探索のコスト計算の予想

現状、PVS探索の場合は擬似コード的には

if( !first_move_expanded )
{
	value = -search(enemy(SorE),-beta,-alpha,depth+1,new_depth );
}
else
{
	value = -search(enemy(SorE),-alpha-1,-alpha,depth+1,new_depth );
	if( alpha < value && beta!= alpha+1 )
		value = -search(enemy(SorE),-beta,-alpha,depth+1,new_depth );
}

ハッシュの手やオーダリング上位などの有望手はフルWindowで探索して、
おそらくalphaを超えられないであろう手は、nullWindowで「だめなこと」を確認だけして、
仮に、alphaを超えた場合は、仕方ないのでフルWindow探索をやって「alphaを確定する」


というのが流れ。


並列探索の場合、first_move_expanded==0の場合は、マスターで探索して、
nullWindowでのカット探索だけをスレーブに依頼する。


ということで、
コスト的には、

探索時間 = 有望手探索時間+カット探索時間*カット手総数/並列数

という図式になる。(再帰的なsplitを許す場合は、それぞれの探索の中でさらにsplitが発生する)


しかし、ボンクラーズのようにプロセス間通信でスレーブを低コストで増やせるシステムだと

探索時間 = 有望手探索時間+カット探索時間*カット手総数/128(並列)

なんてのも夢じゃない。(4corePCを3万円で調達すれば32台で128並列=96万円コース)


ということは、カット探索のコストが限りなく「カット探索1回分」に近づくかも?
カット探索でのalpha更新はそれなりに起こるでしょうけど、
将棋の場合、盤面での可能手の数は最高で600手ぐらいと言われてるようなので、
スレーブが500個ぐらいあれば、
見かけ上

探索時間 = 有望手探索時間+1手でのカット探索時間

ここまでいくかも? どっかでのさちるの?