将回溯划分为并行进程
我正在尝试使用 c 中的回溯过程来解决数独 25*25 问题。有没有办法将回溯分成多个并行进程,以便我可以将它们用作线程?
I am trying to solve sudoku 25*25 using the backtracking process in c. Is there any way to divide backtracking into multiple parallel processes so that I could use them as threads?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
回溯意味着深度优先搜索。
DFS 将采用以下形式:
(递归通常用于提供堆栈,但这不是必需的。)
在数独求解器的上下文中,
不过,我会使用广度优先搜索。它与上面的相同,只是使用队列而不是堆栈。
我们可以轻松地将其转换为基于工人的模型。只需使用线程安全队列和一堆执行循环的线程即可。
Backtracking implies a depth-first search.
A DFS will take on the following form:
(Recursion is often used to provide the stack, but that's no requirement.)
In the context of a Sudoku solver,
I would use a breadth-first search, though. It's identical to the above, except a queue is used instead of a stack.
We can easily convert that to a worker-based model. Just use a thread-safe queue, and a bunch of threads executing the loop.