【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 | 证明多个带子图灵机时间复杂度 )
文章目錄
- 一、確定性模型的計算復雜性關系
- 二、證明 "多個帶子圖靈機時間復雜度是 O(n2)\rm O(n^2)O(n2)"
一、確定性模型的計算復雜性關系
計算的 復雜性 取決于 模型的計算 ;
給定一個函數 t(n)\rm t(n)t(n) , 假設有一個 兩個帶子圖靈機 時間復雜度是 O(t(n))\rm O(t(n))O(t(n)) , 那么對應的有相同計算能力的 一個帶子圖靈機 時間復雜度是 O(t2(n))\rm O(t^2(n))O(t2(n)) ;
示例 : 參考上一篇博客 【計算理論】計算復雜性 ( 兩個帶子的圖靈機的時間復雜度 ) , 識別語言 A={0k1k:k≥0}\rm A = \{ 0^k1^k : k \geq 0 \}A={0k1k:k≥0} , 一個帶子圖靈機識別上述語言的 計算時間復雜度是 O(n2)\rm O(n^2)O(n2) , 兩個帶子圖靈機識別上述語言的 計算時間復雜度是 O(n)\rm O(n)O(n) ;
二、證明 "多個帶子圖靈機時間復雜度是 O(n2)\rm O(n^2)O(n2)"
參考 【計算理論】圖靈機 ( 多個帶子的圖靈機 | 計算能力對比 | 證明過程 | 一個帶子圖靈機 ) 博客 , 以如下三個帶子的圖靈機為例 , 加入下面的 三個帶子圖靈機的時間復雜度是 t(n)\rm t(n)t(n) ;
使用 單個帶子圖靈機 模仿上述 三個帶子圖靈機 , 那么對應的單個帶子圖靈機的時間復雜度是 t2(n)\rm t^2(n)t2(n) ;
計算 單個單子圖靈機 模仿 三個帶子圖靈機 一步的計算 , 需要花費的步數 ;
模仿的核心是將三個帶子的字符串放在一個帶子中 , 使用 “#” 分割 , 并使用紅色記錄三個帶子對應的位置 , 一個讀頭需要記錄三個位置 , 如下圖 :
使用 111 個帶子的圖靈機 模擬 333 個帶子的圖靈機 的代價是 讀寫頭必須從左向右整個遍歷一遍帶子 , 才能模擬 333 個帶子的圖靈機 一步的計算 ;
最壞的情況下就是 , 三個帶子圖靈機走 111 步 , 單個帶子圖靈機走 三個帶子所有字符串的內容長度 對應的步數 , 也就是 10+410 + 410+4 步 , 多出來的 444 步是 444 個 “#” 分割字符 ;
三個帶子圖靈機 每個帶子的長度是 t(n)\rm t(n)t(n) , 單個帶子圖靈機 帶子長度是 3t(n)\rm 3t(n)3t(n) ;
單個帶子圖靈機 模仿 三個帶子圖靈機 一步操作 , 最壞的情況下 , 需要執行的步數是 3t(n)\rm 3t(n)3t(n) ;
總共需要模仿 t(n)\rm t(n)t(n) 步 , 因此總共需要模仿的步數是 3t2(n)\rm 3t^2(n)3t2(n) ;
如果是 四個帶子圖靈機 , 總共需要模仿的步數是 4t2(n)\rm 4t^2(n)4t2(n) ,
如果是 五個帶子圖靈機 , 總共需要模仿的步數是 5t2(n)\rm 5t^2(n)5t2(n) ,
如果是 一百個帶子圖靈機 , 總共需要模仿的步數是 100t2(n)\rm 100t^2(n)100t2(n) ,
其數量級還是 t2(n)\rm t^2(n)t2(n) ,
因此增加到 222 個帶子 , 與 增加到 100100100 個帶子 , 甚至 一億個帶子 , 算法復雜度的數量級是 O(n2)\rm O(n^2)O(n2) , 這是不變的 ;
單個帶子模仿多個帶子圖靈機 , 所花費的時間是平方增加 , 不管多個帶子的個數是多少 ;
總結
以上是生活随笔為你收集整理的【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 | 证明多个带子图灵机时间复杂度 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】计算复杂性 ( 两个带子的图
- 下一篇: 【计算理论】计算复杂性 ( 非确定性图灵