使用pthreads解决N皇后拼图

时间:2012-06-30 03:16:27

标签: c++ multithreading algorithm pthreads

我知道如何使用回溯和递归解决n皇后谜题。

我在想如何使用多线程优化它。

我正在尝试使用p - thread。

基本上我无法理解top应用线程的位置以及加入线程的位置。

由于这是递归,我也无法理解线程在这里是如何工作的。

-

由于

Alok Kr。

1 个答案:

答案 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

您可以针对不同的算法修改此