Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Minimax算法树是否按其应有的方式实现?_C#_Artificial Intelligence_Minimax - Fatal编程技术网

C# Minimax算法树是否按其应有的方式实现?

C# Minimax算法树是否按其应有的方式实现?,c#,artificial-intelligence,minimax,C#,Artificial Intelligence,Minimax,我想创建一个深度为3的minimax搜索,每个节点将有两个child,代码是否正确地表示了这一点,这是正确的实现,还是我做错了什么 static int miniMaxAlgorithm(int node, int depth, bool maxPlayer) { int eval; int maxEval; int minEval; if (depth == 0) {

我想创建一个深度为3的minimax搜索,每个节点将有两个child,代码是否正确地表示了这一点,这是正确的实现,还是我做错了什么

    static int miniMaxAlgorithm(int node, int depth, bool maxPlayer)
    {
        int eval;
        int maxEval;
        int minEval;

        if (depth == 0)
        {            
             return node; // static evaluation to be returned          
        }

        if (maxPlayer)
        {

            maxEval = int.MaxValue;

            for (int i = 0; i < 2; i++)
            {
                eval = miniMaxAlgorithm(i, depth - 1, maxPlayer = false);
                maxEval = Math.Max(maxEval, eval);
                Console.WriteLine(maxEval);
                Console.WriteLine("{0}", depth);
            }
         
            return maxEval;
        }

        else
        {
            minEval = int.MinValue;

            for (int i = 0; i < 2; i++)
            {
                eval = miniMaxAlgorithm(i, depth - 1, maxPlayer = true);
                minEval = Math.Min(minEval, eval);
                Console.WriteLine(minEval);
                Console.WriteLine("{0}", depth);
            }
            return minEval;
        }

    }
静态int-minimax算法(int节点、int深度、bool-maxPlayer)
{
综合评价;
int-maxEval;
国际米内瓦尔;
如果(深度==0)
{            
return节点;//要返回的静态求值
}
如果(maxPlayer)
{
maxEval=int.MaxValue;
对于(int i=0;i<2;i++)
{
eval=miniMaxAlgorithm(i,深度-1,maxPlayer=false);
maxEval=Math.Max(maxEval,eval);
控制台写入线(maxEval);
Console.WriteLine(“{0}”,深度);
}
返回最大值;
}
其他的
{
minEval=int.MinValue;
对于(int i=0;i<2;i++)
{
eval=miniMaxAlgorithm(i,depth-1,maxPlayer=true);
minEval=数学最小值(minEval,eval);
控制台写入线(minEval);
Console.WriteLine(“{0}”,深度);
}
返回minEval;
}
}

它看起来不错,但在我看来还没有完成。你打算用它做什么?例如,如果你正在玩一个游戏,那么你想在游戏开始前采取行动

eval = miniMaxAlgorithm(i, depth - 1, maxPlayer = false);
然后在那之后撤销移动

如果你想返回最佳移动,你还需要做一些调整。但是基于Mimax的伪代码,你的实现的基础看起来是正确的。
<>但是,为了便于阅读,我会考虑函数,这也会让事情变得更容易。取决于您计划如何处理此操作。

运行时会发生什么?14控制台。终端中将显示Writelines(可能是除根节点外的所有节点的Writelines)。我正在尝试确定具有的树是否按预期结构,并且它们是否处于其他类型的顺序。谢谢Eli!我正在做一个作弊的刽子手游戏(在这个游戏中,计算机可以访问一系列属于单词家族的单词)。当玩家做出猜测时,理想地我希望计算机向前看一两步,并考虑是否选择最大可能的词族,并根据一些评估做出决定,什么是最有希望的。