我知道如何使用回溯和递归解决n皇后谜题。
我在想如何使用多线程优化它。
我正在尝试使用p - thread。
基本上我无法理解top应用线程的位置以及加入线程的位置。
由于这是递归,我也无法理解线程在这里是如何工作的。
-
由于
Alok Kr。
答案 0 :(得分:3)
一种方法是使用队列将每个扩展放入队列而不是进行递归。有一个线程池可以弹出扩展并对其进行操作:
create a state with an empty board and put it into the queue
create N threads with the following function
线程功能:
while not done:
1) pop a state S from the queue (use locks), if queue is empty,
wait on a semaphore until there is an S
2) expand state S
2a) if S has feasible children then put them into the queue
except for one state SS, call it S and goto 2
(also signal the semaphore)
2b) if S has no feasible children goto 1
end while
您可以针对不同的算法修改此