有一个代码实现函数为每个状态分配一个值(min max方法的两部分)

Procedure TGraph.Rate(const AState: TState);
Var
i: integer;
Begin //hodnotí stav
if AState.Children.Count > 0 then begin //není list
    if AState.Owner = CComputerPlayer then begin
        // max level
        AState.Rating := AState.Children.Worst.Rating;
    end else begin
        // min level
        AState.Rating := AState.Children.Best.Rating;
    end;
end else begin
    AState.Rating := 0;
    for i := 0 to AState.Fields.Count - 1 do
    begin
        AState.Rating := AState.Rating +
        AState.Fields.FieldsI[i].Rating[AState.Owner];
    end;
    if (AState.Owner = CHumanPlayer) then begin
        AState.Rating := -AState.Rating;
    end;
end;
End;

最佳答案

tic-tac-toe有一个有限且非常小的可能位置空间。用alfa-beta修剪不值得一个非常简单的最小最大值将工作得非常快。还要记住,如果需要多次运行该算法,则只能运行min max一次并存储计算结果。

07-24 20:31