所以我正在尝试解决有关计算通过网格的路径数量的问题。问题或多或少如下:
给定一个x乘y维的矩形网格,计算从左上角到左下角的路径数,它们只访问每个顶点一次
我尝试过强制问题,但似乎是O(n!)并且在大尺寸时非常慢。
我当前的方法从左上角节点开始,递归检查尚未访问过的每个相邻节点,并将其保存到backPath列表。如果函数到达结束并且每个节点都已访问过,它会将backPath添加到解决方案列表中以计算路径总数。
然而这很慢。我知道有一些改进算法的动态方法(包括文章here),但对动态编程/ memoization不太熟悉,我无法弄清楚如何实现改进。到目前为止,我所做的唯一改进是阻止函数在访问每个其他节点之前遍历结束节点,这只会将运行时间缩短约40%。我没有DP的经验,到目前为止我还没有真正有效地将教程应用到我的问题中。
编辑我问了一个类似的问题here,答案让我更好地了解了我实际上在寻找什么信息,但我仍然坚持如何应用DP /其他运行这个特殊问题的时间减少方法。
感谢您的帮助。