Alpha-beta剪枝在matlab中的实现

Alpha-beta剪枝在matlab中的实现,matlab,recursion,Matlab,Recursion,调用下面的函数时,我不断收到一个错误。错误是在调用searchTree.m期间未分配输出参数bestboard(可能还有其他参数) function [alpha,bestboard] = searchTree(board,depth,alpha,beta,turn) if(depth<=0) alpha=calculateHeuristic(board,changeTurn(turn)); bestboard=board; return else ch

调用下面的函数时,我不断收到一个错误。错误是在调用searchTree.m期间未分配输出参数
bestboard
(可能还有其他参数)

function [alpha,bestboard] = searchTree(board,depth,alpha,beta,turn)

if(depth<=0)

    alpha=calculateHeuristic(board,changeTurn(turn));
    bestboard=board;
    return
else
    child=GenerateChild(board,turn);
    a=size(child,3);

    if(turn==2)

        turn=changeTurn(turn);
        for i=1:a    
            [score,aboard]=searchTree(child(:,:,i),depth-1,alpha,beta,turn);
            if(score>alpha)
                alpha=score;
                bestboard=child(:,:,i);
            end
        end

        return
    else

        for j=1:a
            turn=changeTurn(turn);
            [scor,bboard]=searchTree(child(:,:,j),depth-1,alpha,beta,turn);
            if(scor<beta)
                beta=scor;
                bestboard=child(:,:,j);
                alpha=beta;
            end

        end

    return
    end
end
function[alpha,bestboard]=搜索树(board,depth,alpha,beta,turn)
如果(德塔法)
α=分数;
bestboard=子(:,:,i);
结束
结束
返回
其他的
对于j=1:a
转弯=改变转弯(转弯);
[scor,bboard]=搜索树(子(:,:,j),深度1,alpha,beta,turn);

如果(SCOR < P>)因为<代码> BestBoo/<代码>在<代码>中被赋值为“< /代码>”,在您的函数中,如果<代码> Ro>=2 和<代码> SCOR>=Beta 和<代码>深度> 0 < /代码>,那么<代码> BestBooe<代码>将不会被分配到。考虑在开始时将其赋值为默认值吗?

错误总是在递归调用T中。o函数…不,我不能对它进行编码,我不知道你的函数在做什么。你需要做的就是确保
bestboard
始终被指定,即使
turn=2
scor>=beta
depth>0
,你希望
bestboard
有什么值?然后简单地添加行
best>board=[在此处插入默认值]
到函数的第一行。