我很困惑计算一个问题的时间复杂度,请帮助我。
问题陈述: -
给出了二维矩阵,你在左下方的区块,你必须转到右上方的区块。给出了一个约束条件,从每个点到只能向上或向右移动步骤。
有多少这样的方法,用数学证明?
时间复杂度是多项式还是指数形式?
我的努力: -
如果矩阵的大小为N * N,则必须准确移动2N步,其中N步为R,其余N步为U.
所以,如果我们简化这个,它是一个排列和组合问题,给出一个只包含两个字母R和U的字符串,你怎么能安排它呢?
答案是
( (2N) C (N) )*( (N) C (N) )*2
问题
答案 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)的二项式系数的扩展中。 因此,我们可以有把握地说,“计算到这个数字”受到指数增长率的限制,而不是因子。