寻找更好的回溯系统
Looking for a better backtracking system
我将尝试用简单的术语来解释这一点,因为它可能比发布代码更短。我制作了一个递归解决方案的一部分,该解决方案必须通过选择正确的"移动顺序"来完成游戏,如果陷入僵局,则必须回溯。我目前的系统通过对任何未起作用的移动设置一个标识符来工作,这样在回溯时就不能再次使用它,直到找到新的路径/移动顺序。
然而,我遇到了一个问题;游戏可以达到这样一种状态,即只剩下两步,而这两步都不会解决游戏。我目前的系统基本上会让这两个动作不断地交换,因为解决方案试图玩一个动作,发现它不起作用,然后尝试下一个动作。我相信我的问题是,每次移动时,我都会重置我的标识符,该标识符告诉解决方案不要使用移动,但我不确定我会如何设置它。
如果您需要任何进一步的信息或有任何见解,请告诉我。谢谢
我不确定你所描述的游戏的性质,一些更多的信息可以帮助你确定一个更好的方法。我在主题中看到了你的评论,你说这个索引在找到新的移动后重置。这听起来不太好。我相信你必须解决这个问题,因为正如你刚刚从你的例子中看到的那样,有些情况下它会失败,我们不能有一个只在条件下工作的算法。
你描述的问题听起来像游戏树?对的如果是这样的话,为什么不把你对问题的描述改为游戏树,并使用一种经过验证的游戏树搜索算法,如Alpha Beta Pruning,假设游戏是对抗性的?
相关文章:
- 当回溯以零开始时,如何调试崩溃
- C++,系统无法执行指定的程序
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 回溯C++不打印函数,因此文件
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在C++游戏中与库存系统作斗争
- 文件系统:复制功能的速度秘诀是什么
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 在gtest.中使用fff.h模拟系统API
- 如何制作无限制照明系统
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 如何传递多个 std::文件系统选项?
- 遍历顺序由 std::文件系统directory_iterator给出
- C++系统找不到指定的文件错误
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- libstdc++ 文件系统中未初始化的用法?
- 如何在ECS框架中更新组件数据和通知系统
- 寻找更好的回溯系统