关于 sum 1/i 复杂度宽松估算的显然证明
前提
\(\frac{\mathrm{d} \ln x}{\mathrm{d} x} = \frac{1}{x}\) ,\(\ln x\) 在 \(x > 0\) 递增。
\(\frac{\mathrm{d} 1/x}{\mathrm{d} x} = -\frac{1}{x^2}\) ,\(\ln x\) 在 \(x > 0\) 的斜率变化率递减。
\[\frac{\ln (n + 1) - \ln n}{n + 1 - n} < lim_{\Delta \to 0} \frac{\ln (n + \Delta x) - ln n}{\Delta} = \frac{1}{n}
\]
算两遍思想
\[\begin{aligned}
\ln (n + 1) - \ln n &< \frac{1}{n} \\
\ln n - \ln (n - 1) &< \frac{1}{n - 1} \\
\ln (n - 1) - \ln (n - 2) &< \frac{1}{n - 2} \\
\cdots \\
\ln 2 - \ln 1 &< \frac{1}{1} \\
\textbf{两边求和} \\
\ln (n + 1) &< \sum_{i = 1}^{n} \frac{1}{i}
\end{aligned}
\]
又
\[\frac{\ln n - \ln (n-1)}{n - (n - 1)} > lim_{\Delta x \to 0} \frac{\ln (n - \Delta x) - \ln n}{\Delta} = \frac{1}{n}
\]
继续基于算两遍思想差分
\[\begin{aligned}
\ln n - \ln (n - 1) &> \frac{1}{n} \\
\ln (n - 1) - \ln (n - 2) &> \frac{1}{n - 1} \\
\ln (n - 2) - \ln (n - 3) &> \frac{1}{n - 2} \\
\cdots \\
\ln 2 - \ln 1 &> \frac{1}{2} \\
\textbf{两边求和} \\
\ln n + 1 &> \sum_{i = 1}^{n} \frac{1}{i}
\end{aligned}
\]
有
\[\ln (n + 1) < \sum_{i = 1}^{n} \frac{1}{i} < \ln n + 1
\]
于是 \(T(\sum_{i = 1}^{n} \frac{1}{i}) = O(\ln n)\)
——永远是挑战而不是练习,下次一定更好。