Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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
Java 如何同步检查程序的AI MinMax算法?伪码_Java_C#_Multithreading_Artificial Intelligence_Minmax - Fatal编程技术网

Java 如何同步检查程序的AI MinMax算法?伪码

Java 如何同步检查程序的AI MinMax算法?伪码,java,c#,multithreading,artificial-intelligence,minmax,Java,C#,Multithreading,Artificial Intelligence,Minmax,我需要使用线程来协调MinMax方法。为了更清楚,我不会粘贴我的最小值。 在跳棋游戏中,我使用这个算法为计算机选择可能的最佳动作 这是来自维基百科的伪代码: 1 function minimax(node, depth, maximizingPlayer) is 2 if depth = 0 or node is a terminal node then 3 return the heuristic value of node 4 if maximizingPl

我需要使用线程来协调MinMax方法。为了更清楚,我不会粘贴我的最小值。
在跳棋游戏中,我使用这个算法为计算机选择可能的最佳动作


这是来自维基百科的伪代码:

1 function minimax(node, depth, maximizingPlayer) is
2     if depth = 0 or node is a terminal node then
3         return the heuristic value of node
4     if maximizingPlayer then
5         value := −∞
6         for each child of node do
7             value := max(value, minimax(child, depth − 1, FALSE))
8         return value
9     else (* minimizing player *)
10         value := +∞
11         for each child of node do
12             value := min(value, minimax(child, depth − 1, TRUE))
13         return value


我需要以某种方式在该方法中实现线程,以使其更快。

我对线程的了解非常有限。。。我必须在明天之前完成。最终,我用c#编写了这个函数,但我也很乐意接受java的建议,因为我比c#更了解它

有人能告诉我从哪里开始吗?
我认为我应该通过一定数量的线程调用该方法,这将基于可能的移动次数。7号线可能是个好地方?递归会使事情复杂化,我会迷失方向。
我是否应该以某种方式连接这些线程,或者递归本身将迫使整个方法像这样工作,而不是另一个



任何人都可以编辑这个伪代码,并向我展示一些我应该如何启动这个特定数量线程的示例。它可以是c语言或java语言。每一条忠告都是值得的。我知道这个主题很广泛,但我尽力使它尽可能具体,所以请管理员不要向我关闭这个主题:(

您可能想看一看。请记住,在线程上调度工作会有一些开销,因此仅用并行等效项替换循环可能会慢得多。一个相当简单的方法是添加深度检查,并在第一级并行运行它对于更深层的层次,它是同步的。

您可能想看一看。请记住,在线程上调度工作会有一些开销,因此仅用并行等价物替换循环可能会慢得多。一个相当简单的方法是添加深度检查,并在第一层并行运行它更深层次的同步。

你所说的
检查深度并并行运行第一个层次和同步运行更深层次是什么意思
?@brarord添加一个检查,
如果(深度>某个值){use parallel foreach}其他{regular for each}
你所说的
检查深度并在第一层并行运行,在更深层同步运行是什么意思
?@brarord添加一个检查,
if(depth>SomeValue){use parallel foreach}else{regular for each}
var value = minimax(origin, depth, TRUE) // call