📜  欧几里得算法的时间复杂度

📅  最后修改于: 2021-04-17 18:58:53             🧑  作者: Mango

在本文中,我们将讨论欧氏算法的时间复杂度O(log(min(a(b,b)))并可以实现。

Euclid算法这是一种找到两个整数的GCD(最大公约数)的有效方法。该算法的时间复杂度为O(log(min(a,b)) 。递归地可以表示为:

证明:假设a和b是两个整数,则根据Euclid算法,a> b:

重复使用上述公式,直到到达b0的步骤为止。在这一步,结果将是两个整数的GCD,它们等于a 。因此,在仔细观察之后,可以说该算法的时间复杂度与将b减小为0所需的步骤数成正比。

假设使用此算法将b减小为0所需的步骤数为N。

gcd(a, b) ------> N steps

现在,如果两个数字ab的欧几里得算法以N步递减,则a至少应为f (N + 2)b至少应为f (N +1)

为了使用数学归纳法则(PMI)来证明上述说法:

  • 基本情况:
    • 假设a = 2b = 1 。然后,GCD(2,1)将减少GCD(1,0)在步骤1,,N = 1。
    • 这意味着2应该至少为f 3,1应该至少为f 2,并且f 3 = 2f 2 = 1
    • 这意味着, a至少为f (N + 2)b至少为f (N +1)
    • 可以得出结论,该陈述适用于基本案例。
  • 感应步骤:假设语句保持为(N – 1)步骤。所以,下面是证明它N步骤的步骤:
  • 它也可以写成:
  • 现在,(a / b)始终大于1。因此,从以上结果可以得出结论:
  • 众所周知,每个数字都是斐波那契数列中前面两个项的和。这意味着f (N + 2) = f (N +1) + f N。
  • 由于以上陈述对于归纳步骤也适用。这证明该陈述是正确的。
  • 在继续之前,请看一下Binet公式

Binet公式:

  • 其中, 被称为黄金分割率(∅≈1.618) ,f N是第N斐波纳契数。
  • 现在,已经说明时间复杂度将与N成正比,即将b减小为0所需的步骤数。
  • 因此,为了证明时间复杂度,已知:

现在,从以上陈述可以证明,使用数学归纳原理,可以说,如果两个数ab的欧几里得算法以N步减少,则a至少应为f (N + 2)并且b至少应为f (N +1)

从以上两个结果可以得出结论: