查找从左下角到右上角的路径的时间复杂度

时间:2013-11-20 05:57:54

标签: algorithm math time-complexity

我很困惑计算一个问题的时间复杂度,请帮助我。

问题陈述: -

给出了二维矩阵,你在左下方的区块,你必须转到右上方的区块。给出了一个约束条件,从每个点到只能向上或向右移动步骤。

有多少这样的方法,用数学证明?

时间复杂度是多项式还是指数形式?

我的努力: -

如果矩阵的大小为N * N,则必须准确移动2N步,其中N步为R,其余N步为U.

所以,如果我们简化这个,它是一个排列和组合问题,给出一个只包含两个字母R和U的字符串,你怎么能安排它呢?

答案是

( (2N) C (N) )*( (N) C (N) )*2

问题

  1. 我的上述逻辑是否正确?如果没有,请纠正我。
  2. 上面的公式是多项式还是指数?

1 个答案:

答案 0 :(得分:0)

你的想法是正确的。但答案有点不准确 字符串只有字母R和U,但长度为2N-2。

问题是要安排2N-2个对象,使得n-1属于1种类型而n-1个对象属于其他类型。

The number of possibilities = factorial(2N-2)/( factorial(n-1) * factorial(n-1) )

如果您将2个数的乘积视为O(k),那么计算上述数字的时间复杂度应为O(N * k)。

要了解各种算法的乘法顺序,您可以访问http://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations

编辑: 此数字出现在2 ^(2n-2)的二项式系数的扩展中。 因此,我们可以有把握地说,“计算到这个数字”受到指数增长率的限制,而不是因子。