日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )

發(fā)布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、小 O 記號 ( 嚴格漸進上界 )
  • 二、分析算法的時間復雜度





一、小 O 記號 ( 嚴格漸進上界 )



如果 g(n)\rm g(n)g(n)f(n)\rm f(n)f(n) 漸進上界 , 符號化表示為 f(n)=O(g(n))\rm f(n) = O(g(n))f(n)=O(g(n)) ,

如果 f(n)\rm f(n)f(n) 除以 g(n)\rm g(n)g(n) , 求 n→∞n \to \inftyn 極限為 000 時 , 符號化表示為 limn→∞f(n)g(n)=0\rm lim_{n \to \infty} \cfrac{f(n)}{g(n)} = 0limn?g(n)f(n)?=0 ,

那么稱 g(n)\rm g(n)g(n)f(n)\rm f(n)f(n)嚴格漸進上界 ;


嚴格漸進上界使用 小 o\rm oo 記號 表示 :

n=o(n)\rm \sqrt{n} = o(n)n?=o(n)

n=o(nloglogn)\rm n = o(n\ log\ log \ n)n=o(n?log?log?n)

nloglogn=o(nlogn)\rm n\ log\ log \ n = o(n\ log \ n)n?log?log?n=o(n?log?n)

nlogn=o(n2)\rm n\ log \ n = o(n ^2)n?log?n=o(n2)

n2=o(n3)\rm n ^2 = o(n ^3)n2=o(n3)





二、分析算法的時間復雜度



構(gòu)造圖靈機認識如下語言 : A={0k1k:k≥0}\rm A = \{ 0^k1^k : k \geq 0 \}A={0k1k:k0}

M1=\rm M_1 =M1?= "在長度為 n\rm nn 的字符串 w\rm ww 上進行如下計算 :

① 掃描整個帶子上的字符串 , 查看 000111 的順序 , 所有的 000 必須在所有的 111 前面 ; 如果順序錯誤 , 進入拒絕狀態(tài) ;

② 掃描整個帶子 , 遇到一個 000 , 就劃掉一個 111 ; 如果帶子上存在 000111 , 該操作重復進行 ;

③ 如果最后只剩下 000 或只剩下 111 , 說明 兩個數(shù)字的個數(shù)不等 , 進入拒絕狀態(tài) ; 如果最后帶子上只剩下空白字符 , 說明兩個數(shù)字個數(shù)相等 , 進入接受狀態(tài) ; "


分析上述算法的時間復雜度 :


字符串 w="0000?1111?"\rm w = "0000 \cdots 1111 \cdots"w="0000?1111?" , 整個 字符串長度為 n\rm nn ;

① 首先從左向右掃描一遍字符串 , 如果 000 出現(xiàn)在 111 右邊 , 說明字符串不符合條件 , 檢查的字符個數(shù)最壞的情況就是遍歷 n\rm nn 次 , 使用 大 O\rm OO 標記 為 : O(n)\rm O(n)O(n) ;

② 掃描帶子 , 讀取到一個 000 , 劃掉一個 111 , 然后在掉過頭來 , 讀取到一個 000 , 劃掉一個 111 ;

這是一個循環(huán) , 計算循環(huán)復雜度 , 只需要考慮 每次循環(huán)花費的時間 , 和 循環(huán)次數(shù) ;

循環(huán)的次數(shù)最壞情況是 n2\rm \cfrac{n}{2}2n? , 還是 n\rm nn 的數(shù)量級 , 標記為 O(n)\rm O(n)O(n) ;

每次循環(huán)的花費時間步數(shù) : 向右走 n2\rm \cfrac{n}{2}2n? 步 , 找到 111 字符 , 刪除 111 字符后 , 然后再向左 n2\rm \cfrac{n}{2}2n? 步 回到第 000 個 , 大約是 n2\rm \cfrac{n}{2}2n? 步 , 數(shù)量級還是 nnn , 使用 大 O\rm OO 標記 為 : O(n)\rm O(n)O(n) ;

將上述 循環(huán)次數(shù) 和 每次循環(huán)步數(shù) 大 O\rm OO 標記 相乘 , 就是該階段的 大 O\rm OO 標記 為 : O(n)×O(n)=O(n2)\rm O(n) \times O(n) = O(n^2)O(n)×O(n)=O(n2) ;


上述 ① 和 ② 總的 大 O\rm OO 標記 為 : O(n)+O(n2)=O(n2)\rm O(n) + O(n^2) = O(n^2)O(n)+O(n2)=O(n2)

總結(jié)

以上是生活随笔為你收集整理的【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。