階乘級別復雜度的估算


對於復雜度為 \(O(n!)\) 的代碼,以下估算其復雜度:

\(\displaystyle\quad \lg n!\)
\(\displaystyle =\sum_{i=1}^n \lg i\)
\(\displaystyle =\sum_{i=1}^n{\ln i\over \ln 10}\)
\(\displaystyle ={1\over \ln 10}\sum_{i=1}^n\ln i\)
\(\displaystyle \approx\lg e\int_1^n\ln x\text dx\)
\(\displaystyle =\lg e(x\ln x-x)|_1^n\)
\(\displaystyle =\lg e\cdot (n\ln n-n+1)\)

\(\therefore O(n!)\approx O(10^{\lg e\cdot (n\ln n-n+1)})\)

為使復雜度合法,故 \(\lg e\cdot (n\ln n-n+1)\leq 8\)

\(n\ln n-n\leq 8\ln 10-1\approx 17.4\)

由於 \(n\geq 1\)\({\text d\over \text dn}(n\ln n-n)=\ln n\geq 0\)

\(n\ln n-n\) 單調遞增

枚舉可解上述不等式得 \(n\leq 11\)


對於復雜度為 \(O[T(n)\cdot n!]\) 的代碼,以下估算其復雜度:

同上,可得 \(\lg e\cdot (n\ln n-n+1)\leq \lg{10^8\over T(n)}=8-\lg T(n)\)

同上移項后可得到 \(n\ln n-n\leq 8\ln 10-1-\ln 10\lg T(n)\approx 17.4-\ln 10{\ln T(n)\over \ln 10}=17.4-\ln T(n)\)

\(n\ln n-n+\ln T(n)\leq 17.4\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM