在回溯算法中返回布尔值

问题描述

我正在使用回溯算法在 python 中解决著名的骑士旅游问题。如果当前案例返回 False 值,我很困惑为什么计算机会返回到最后一个工作案例。让我详细说明一下。

Python algorithm to solve the knight tour problem

在上面的程序中, Knight_tour() 函数调用了 Knight_tour_helper() 函数,该函数从 index[0][0] 开始检查所有可能的组合,如果到达死胡同则回溯。我无法理解布尔值在这里的作用。例如,如果 Knight_tour_helper() 函数返回 False(第 11 行),那么计算机会做什么?为什么会回溯?如果函数从第 5 行返回 False 会发生什么?它是否会转移到 x,y 的下一个值?为什么?此外,这个循环何时结束,因为我们在最后(第 6 行)打印完整的棋盘,所以 Knight_tour_helper() 函数必须在某处结束,这样我们才能打印最终的棋盘。为什么函数在这里?我的猜测是因为 counter 达到了 n*n 的值,所以函数停止了,但为什么它会在这里停止?布尔值 True 是否使它停止或其他一些影响。为什么该函数会递归工作,因为我们正在重新调整的是 True/False。递归函数的工作原理类似于 f(x)=f(x-1)+f(x-2)。这如何适用于这里?在第 8 行再次调用 Knight_tour_helper() 以检查条件。这两个事件如何等效?

简而言之,我想我是在要求计算机根据此算法执行正确的事件序列,以及在正确推理下详细说明每个步骤中发生的事情。

我希望我已经澄清了我的疑问。如果需要澄清,请在评论中告诉我。任何帮助在这里将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)