1

所以我试图解决一个关于计算通过网格的路径数的问题。问题或多或少如下:

给定一个 x x y 维度的矩形网格,计算从左上角到左下角恰好访问每个顶点一次的路径数

我试过蛮力解决这个问题,但它似乎是 O(n!) 并且在大尺寸时非常慢。

我当前的方法从左上角的节点开始,递归地检查每个尚未访问的相邻节点,将其保存到 backPath 列表。如果函数到达终点并且每个节点都已被访问,它会将 backPath 添加到解决方案列表中以计算路径的总数。

然而,这是非常缓慢的。我知道有改进算法的动态方法,(包括这里的一篇文章)但对动态编程/记忆不太熟悉,我无法弄清楚如何实现改进。到目前为止,我所做的唯一改进是防止函数在访问所有其他节点之前遍历完成节点,这只会将运行时间减少约 40%。我没有 DP 方面的经验,到目前为止,我还不能真正有效地将教程应用于我的问题。

编辑我在这里问了一个类似的问题,答案让我更好地了解了我真正在寻找什么信息,但我仍然坚持如何将 DP / 其他运行时间减少方法应用于这个特定问题。

谢谢您的帮助。

4

0 回答 0