并行骑士之旅算法

Parallel Knight's Tour algorithm

目前我有一个有效的骑士巡回算法。

我使用以下组合:

该算法执行以下操作:

Checks to see if the board is solved (all squares visited) 
    If true: return true
else proceed:

Make a set of possible moves from current positions
Sort the set based on the number of moves available from those positions.

Go through the set. (Recursive call made here)
    If returned True:
       Set Solution board to appropriate number
       Return true
    else
      go back to last position
      return false.

它工作正常。这不是最好的解决方案。

我正在尝试使用并行化来提高速度,特别是使用 C++ 线程 (#include<thread>)。

这是什么算法?到目前为止,我尝试过的唯一方法有错误的共享问题、共享内存问题或根本不会 运行。

当然这是针对 C++ 的,在调用 #include<thread> header 之后,创建线程的简单方法是:

#include <iostream>
#include <thread>

void testThread()
{
    std::cout<<"Thread\n";
}

int main(int argc, char * argv[])
{
    std::testThread t(testThread);
    t.join();

    return 0;
}

std::testThread t(testThread);调用线程创建,而t.join();完成后加入它们。但这一切都没有使用锁。如果我是你,我会在网上查看相同的示例 - 有大量资源 - 展示如何在安全庄园中实施锁。

需要注意的一点是,您必须确保代码的顺序版本实际上可以受益于 运行 并行,因为创建线程的成本可能很高。