pvs搜索算法?
pvs(PrincipalVariationSearch)又称最小窗口搜索(minimal window search),是alpha-beta pruning的一个变种,其区别在于除主变量节点外的其他所有节点都用一个零窗口(alpha,beta)且alpha=beta 进行搜索,其理念是对浅层的节点进行整理使其基本有序,并假设第一个节点是最好的,做为主变量,进行全窗口搜索。通过零窗口搜索其他节点,判断是否存在这些节点是否比当前最优值要好。假如符合alpha-beta剪枝则进行剪枝,假如高值失败则证明当初的节点不是主变量,对当前节点重新进行一次全窗口搜索,作为新的主变量。例如对于一个(alpha,alpha+1)的零窗口,假设返回的值为alpha+1,这说明该节点存在比alpha要大的值,因此需要对其进行一次重新搜索,这次就会得到一个比alpha大的值,去更新alpha的值,假如alpha>beta则进行剪枝。假如返回值=beta)break
return alpha
else
for each child of node
if child is first child
value := pvs(child, depth-1, alpha, beta, maxplayer)
else
value := pvs(child, depth-1, beta-1, beta, maxplayer)
if alpha
value := pvs(child,depth-1,alpha,value,maxplayer)
if(value= beta)break
return alpha