如何使用回溯算法得到所有可能的解

本文关键字:有可能 何使用 回溯算法 | 更新日期: 2023-09-27 18:04:11

我正在使用youtube视频中描述的回溯算法。

现在,我应该能够得到所有可能的解。我能做到这一点与回溯算法和如何?如果不可能,我应该使用其他(简单)算法吗?

如何使用回溯算法得到所有可能的解

这个问题不适合这个网站,因为它似乎不是关于实际代码的。

但我还是要试一试。

当然你可以用回溯算法得到所有可能的解。记住回溯算法是如何工作的:

while(仍然有猜测可用)猜猜看用猜的方式解决这个谜题如果有解决方案,那么记录解决方案并退出循环。把这个猜测从可能的猜测列表中划掉如果你记录了一个解决方案,那么这个谜题是可以解决的。

如果你想要所有的解,只需将算法修改为:

while(仍然有猜测可用)猜猜看用猜的方式解决这个谜题如果有解决方案,那就把它记录下来。不要放弃。把这个猜测从可能的猜测列表中划掉如果你记录了任何答案,那么这个谜题是可以解决的。
顺便说一下,我写了一系列关于在c#中使用图形着色回溯算法解决数独的博客文章;您可能会感兴趣: https://learn.microsoft.com/en-us/archive/blogs/ericlippert/graph-colouring-with-simple-backtracking-part-one

在这段代码中,你会看到这样一行:

return solutions.FirstOrDefault();

"solutions"包含一个枚举所有解决方案的查询。我只想要第一个解,这就是我要求的。如果你想要每个解,只要重写程序使它不调用FirstOrDefault

相关文章: