Java 如何同步检查程序的AI MinMax算法?伪码
我需要使用线程来协调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
在跳棋游戏中,我使用这个算法为计算机选择可能的最佳动作
这是来自维基百科的伪代码:
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