证明递归:证明M(n)> = 1/2(n + 1)lg(n +1)

时间:2019-09-10 21:45:14

标签: recursion proof

我想证明quicksort的递归在n log n的最佳时间运行。

我得到了这个递归公式

B.one()

到目前为止我得到了什么:

M(0) = 1
M(1) = 1
M(n) = min (0 <= k <= n-1) {M(K) + M(n - k - 1)} + n

show that M(n) >= 1/2 (n + 1) lg(n + 1)

专注于我得到的内在感受:

By induction hyposes

M(n) <= min {M(k) + M(n - k - 1} + n

但是我认为我做错了什么。我认为“ k”应为gonne,但我看不到此等式如何抵消所有“ k”。所以,可能是我做错了事

1 个答案:

答案 0 :(得分:1)

您确实想摆脱1/1/2019 12:00:00 PM is not between 1:00 and 3:00 1/1/2019 1:00:00 PM is between 1:00 and 3:00 1/1/2019 2:30:00 PM is between 1:00 and 3:00 1/1/2019 3:00:00 PM is between 1:00 and 3:00 1/1/2019 3:30:00 PM is not between 1:00 and 3:00 。为此,您希望找到最小值k的下限。通常,它可能是任意棘手的,但是在这种情况下,标准方法有效:用M(k) + M(n - k - 1)求导数。

k

我们希望导数为((k+1) ln(k+1) + (n-k) ln(n-k))' = ln(k+1) + (k+1)/(k+1) - ln(n-k) - (n-k)/(n-k) = ln((k+1) / (n-k)) ,所以

0

您可以检查是否确实是本地最小值。 因此,ln((k+1) / (n-k)) = 0 <=> (k+1) / (n-k) = 1 <=> k + 1 = n - k <=> k = (n-1) / 2 达到了M(k) + M(n - k - 1)的最佳下界(可以从归纳假设中获得)。现在,您可以用该值代替k=(n-1)/2,而k将是您唯一剩下的变量。