如何使用回溯算法得到所有可能的解
本文关键字:有可能 何使用 回溯算法 | 更新日期: 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
。