【计算理论】计算复杂性 ( 时间复杂度时间单位 : 步数 | 算法分析 | 算法复杂性分析 )
文章目錄
- 一、時間復雜度時間單位
- 二、算法分析
- 三、算法復雜性分析
一、時間復雜度時間單位
圖靈機計算時間 是根據 步數 進行定義的 , 圖靈機走 111 步 , 時間加一 ,
每一步的時間可能不一致 , 有些步需要花費少量時間 , 有些步需要花費大量時間 ,
在計算理論中 , 只討論步數 , 不討論具體精確的時間 ;
f(n)\rm f(n)f(n) 是長度為 n\rm nn 的字符串 , 輸入到圖靈機中進行計算時 , 所需要的 步數的最大值 ;
步數的最大值就是最壞情況下走的最多的步數 ;
二、算法分析
給定語言 : A={0k1k:k≥0}\rm A = \{ 0^k1^k : k \geq 0 \}A={0k1k:k≥0}
構造圖靈機 M1\rm M_1M1? 認識上述語言 : 設計過程如下 :
在圖靈機帶子上放入 0k1k0^k1^k0k1k 字符 , 如 000111000111000111 , 如何識別該字符串 , 一定在 A\rm AA 語言中 ,
首先檢查 010101 的相對順序 , 000 一定要出現在 111 的前面 , 如果順序紊亂就進入拒絕狀態 , 如果順序正確 , 繼續向下執行 ;
每遇到一個 000 就劃掉一個 111 , 如果最后發現都沒有剩余 , 那么該圖靈機進入接受狀態 , 否則進入拒絕狀態 ;
M1\rm M_1M1? 圖靈機算法設計如下 : 算法的描述是雙引號 “” 中的內容 , 這是操作意義上的圖靈機 , 只描述圖靈機讀頭操作 , 沒有必要將圖靈機指令整體設計出來 ;
M1=\rm M_1 =M1?= "在長度為 n\rm nn 的字符串 w\rm ww 上進行如下計算 :
① 掃描整個帶子上的字符串 , 查看 000 和 111 的順序 , 所有的 000 必須在所有的 111 前面 ; 如果順序錯誤 , 進入拒絕狀態 ;
② 掃描整個帶子 , 遇到一個 000 , 就劃掉一個 111 ; 如果帶子上存在 000 和 111 , 該操作重復進行 ;
③ 如果最后只剩下 000 或只剩下 111 , 說明 兩個數字的個數不等 , 進入拒絕狀態 ; 如果最后帶子上只剩下空白字符 , 說明兩個數字個數相等 , 進入接受狀態 ; "
三、算法復雜性分析
現在討論上述算法的復雜性 , 假設給定字符串長度為 n\rm nn , 那么討論在最壞的情況下 , 所花費的時間最大值 ;
最壞的情況就是在每個步驟中 , 都達到計算的最大值 , 最壞的情況就是 000 的個數與 111 的個數一樣多 , 都是 n2\rm \cfrac{n}{2}2n? 個 , 并且 000 在前面 , 111 在后面 , 這是計算步數最多的情況 ;
如 : 第一步如果 111 就出現在第一個 , 執行 111 步就進入了拒絕狀態 , 此時肯定是最少的執行步數 ;
總結
以上是生活随笔為你收集整理的【计算理论】计算复杂性 ( 时间复杂度时间单位 : 步数 | 算法分析 | 算法复杂性分析 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】计算复杂性 ( 计算理论内容
- 下一篇: 【计算理论】计算复杂性 ( 算法复杂度标