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

Recursion 证明递归:证明M(n)>=1/2(n+1)lg(n+1),recursion,proof,Recursion,Proof,我想说明快速排序的递归在n log n上的最佳时间运行 我得到了这个递归公式 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) 但是我认为我做错了什么。我认为k应该是可以的,但我看不出这个等式怎么能抵消所有的k。所以,也许我做错了什么事你真的想摆脱k。要做到这一点,您需要在Mk+Mn-k-1的最小值上找到

我想说明快速排序的递归在n log n上的最佳时间运行

我得到了这个递归公式

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)

但是我认为我做错了什么。我认为k应该是可以的,但我看不出这个等式怎么能抵消所有的k。所以,也许我做错了什么事

你真的想摆脱k。要做到这一点,您需要在Mk+Mn-k-1的最小值上找到下限。一般来说,它可能是任意复杂的,但在这种情况下,标准方法是有效的:采用k的导数

我们希望导数为0,所以

您可以检查它是否确实是本地最小值。
因此,当k=n-1/2时,我们可以从归纳假设得到Mk+Mn-k-1的最佳下界。现在你可以用这个值代替k,而n将是你唯一剩下的变量。

你是否使用任何软件来帮助你证明?我想这是属于这里的,而不是这里。我投票结束这个问题,因为它是一个数学问题,而不是一个计算机编程问题。
By induction hyposes

M(n) <= min {M(k) + M(n - k - 1} + n
1/2(k + 1)lg(k + 1) + 1/2(n - k)lg(n - k)
1/2lg(k + 1)^(k + 1) + 1/2lg(n - k)^(n - k)
1/2(lg(k + 1)^(k + 1) + lg(n - k)^(n - k)
1/2(lg((k + 1)^(k + 1) . (n - k)^(n - 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))
ln((k+1) / (n-k)) = 0 <=>
(k+1) / (n-k) = 1 <=>
k + 1 = n - k <=>
k = (n-1) / 2