Algorithm 利用记忆法分析NxN矩阵中最重路径的时间复杂度

Algorithm 利用记忆法分析NxN矩阵中最重路径的时间复杂度,algorithm,time-complexity,dynamic-programming,Algorithm,Time Complexity,Dynamic Programming,下面的算法(伪代码)的时间复杂度是多少?我很难分析它。它是在另一个线程上指定的问题的实现:。但因为我是新来的,所以我没有足够的观点在帖子中发表评论(我想)?。这是我的第一篇帖子,如果我做错了,请原谅 该算法使用带有缓存[]【】的记忆。在初始化过程中,缓存[]被-1填充 使用maxPath(0,0,m,DOWN)调用该方法。其中m是要采取的步骤的数量,n好的,我已经解决了它,并且认为我应该分享我的结果 如果我们让G=(V,E)是一个图,其中V={maxPath(i,j,p,d):对于所有可能的i,

下面的算法(伪代码)的时间复杂度是多少?我很难分析它。它是在另一个线程上指定的问题的实现:。但因为我是新来的,所以我没有足够的观点在帖子中发表评论(我想)?。这是我的第一篇帖子,如果我做错了,请原谅

该算法使用带有
缓存[]【】
的记忆。在初始化过程中,
缓存[]
被-1填充


使用
maxPath(0,0,m,DOWN)
调用该方法。其中m是要采取的步骤的数量,n好的,我已经解决了它,并且认为我应该分享我的结果

如果我们让G=(V,E)是一个图,其中V={maxPath(i,j,p,d):对于所有可能的i,j,p和d},E={uv:u=f(i,j,p,d)和V=f(i',j',p',d')}。我们知道G是一个状态图,它显然是DAG(有向无环图)。然后,我们可以通过记忆计算maxPath

我们有

    n possible values for i
    n possible values for j
    m possible values for fuel (which in worst case is n^2)
    3 possible values for direction

然后我们有n*n*m*3个不同的maxPath函数要调用,在最坏的情况下是n^4*3。所以,我们有O(n^4)个不同的函数。函数的每次调用都以O(1)的时间运行。因为图的结构是次优的,所以每个子问题都是原问题的问题。因此,通过记忆,我们不必计算相同的“函数”两次,因此我们得到O(n^4)。

好的,我已经解决了,我想我应该分享我的结果

如果我们让G=(V,E)是一个图,其中V={maxPath(i,j,p,d):对于所有可能的i,j,p和d},E={uv:u=f(i,j,p,d)和V=f(i',j',p',d')}。我们知道G是一个状态图,它显然是DAG(有向无环图)。然后,我们可以通过记忆计算maxPath

我们有

    n possible values for i
    n possible values for j
    m possible values for fuel (which in worst case is n^2)
    3 possible values for direction

然后我们有n*n*m*3个不同的maxPath函数要调用,在最坏的情况下是n^4*3。所以,我们有O(n^4)个不同的函数。函数的每次调用都以O(1)的时间运行。因为图的结构是次优的,所以每个子问题都是原问题的问题。因此,通过记忆,我们不必计算相同的“函数”两次,从而得到O(n^4)。

燃料?收获?这不是为farmville机器人设计的,是吗?如果我们不使用memoization@Desolator是的,我很理解。然而,随着备忘录的出现,时间复杂度降低了,但我不知道具体有多大。@Marc B,谢谢你指出这些事情,我已经编辑了我的文章,使其更具一般性。(这不适用于farmville)对于Memonization,我使用wolfram alpha进行了大量测试,并发现递归调用的数量随着O(mn^2)的增加而增加。其中m=nn^p,其中0燃油?收获?这不是为farmville机器人设计的,是吗?如果我们不使用memoization@Desolator是的,我很理解。然而,随着备忘录的出现,时间复杂度降低了,但我不知道具体有多大。@Marc B,谢谢你指出这些事情,我已经编辑了我的文章,使其更具一般性。(这不适用于farmville)对于Memonization,我使用wolfram alpha进行了大量测试,并发现递归调用的数量随着O(mn^2)的增加而增加。其中m=nn^p,其中0