【计算理论】计算复杂性 ( 计算理论内容概览 | 计算问题的有效性 | 时间复杂性度量 | 输入表示 | 时间复杂度 )
文章目錄
- 一、計算理論內容概覽
- 二、計算問題的判定性
- 三、計算問題的 有效性
- 四、時間復雜性度量
- 五、算法有效性 數學定義需求
- 六、輸入表示
- 七、時間復雜度
一、計算理論內容概覽
計算理論分為 形式語言與自動機 , 可計算部分 , 計算復雜性部分 ;
形式語言與自動機 內容 : 自動機 , 確定性有限自動機 , 非確定性有限自動機 , 正則語言 , 泵引理 , 上下文無關語法 , 下推自動機 , 都屬于 形式語言 與 自動機 部分 ;
可計算 內容 : 圖靈機 , 確定性圖靈機 , 非確定性圖靈機 , 丘奇-圖靈命題 , 可判定性 , 可計算性 等問題 ;
計算復雜性 內容 : 時間復雜性 , 模型間的時間復雜性關系 , P\rm PP 類 , NP\rm NPNP 類 ;
計算理論 知識點很枯燥 , 但是 在進行理論研究時 , 或者大的計算機工程實踐時 , 很有用 ;
二、計算問題的判定性
根據計算模型 , 可以將判定性問題 , 總結成以下幾點 :
① 所有 關于 圖靈機 的計算問題 , 都是 不可判定的 ; ( 萊斯定理 )
② 所有 關于 確定性有限自動機 的計算問題 , 都是可判定的 ;
③ 關于 下推自動機 的計算問題 , 有些可判定 , 有些不可判定 ;
三、計算問題的 有效性
可計算性 包含 可判定性 , 可判定性 包含 有效性 ;
可計算性 > 可判定性 > 有效性 ;
計算問題 對應的算法中 , 有些算法是 有效的 , 有些算法是 無效的 ,
如 : 窮舉算法 , 蠻力搜索之類的算法 , 沒有有效性可言 , 肯定不是有效算法 ; 貪心算法 , 歐幾里得算法 是有效算法 ;
這里希望可以區分 有效算法 與 無效算法 ;
四、時間復雜性度量
計算機中度量時間長短有兩種方式 :
① 離散時間 ( 自然數表達 ) : 時間是離散的 , 如 1,2,3,4,?1, 2, 3, 4 , \cdots1,2,3,4,? 秒
② 連續時間 ( 實數表達 ) : 時間是連續的 , 如 1.221457?1.221457\cdots1.221457? 秒
計算復雜性的表達使用的是 離散時間 , 自然數表達 ;
五、算法有效性 數學定義需求
有效性 與 無效性 區分時 , 將 貪心算法 分到有效性算法中 , 將蠻力窮舉的算法 分到無效性算法中 ;
需要定一個區分原則 , 區分算法的有效性 , 將一個算法分為 有效算法 或 無效算法 ;
為 算法有效性 提供一個 嚴格的數學定義 ;
六、輸入表示
輸入字符串大小 , 輸入字符串越長 , 所花的時間越長 , 計算所花的時間與輸入字符串時單調遞增的 ;
有效性 進行定義時 , 通過輸入字符串大小進行度量 ;
計算機計算輸入有很多形式 , 數字 , 圖形 , 字符串 , 二進制數據 等 ;
數字的表示 , 假如輸入數字是 171717 , 要將對應的時間復雜度理解成 222 , 這個數字由 222 位數字組成的 ;
如果將上述 171717 數字 , 使用二進制表示 , 是 100011000110001 , 輸入位數是 555 , 對應的時間復雜度理解成 555 ;
算法復雜性 只與輸入的數據大小有關 , 輸入的大小必須是合理的 ;
輸入數字時 , 可以輸入 十六進制 , 十進制 , 八進制 , 二進制 , 但是不能輸入 一進制數字 , 一進制輸入是不合理的 ;
七、時間復雜度
假設 M\rm MM 是 確定性圖靈機 , 該圖靈機在所有的輸入上都會 停機 ;
因為該圖靈機會停機 , 其結果不是接受 , 就是拒絕 , 不會出現 Loop 不停機的狀態 , 因此該 圖靈機 M\rm MM 是判定機 ;
圖靈機 M\rm MM 的運行時間 或 時間復雜度 是一個函數 f\rm ff , 該函數是 從 自然數集 到 自然數集上的映射 , N→N\rm N \to NN→N ;
前面的自然數集 N\rm NN 主要是度量的 輸入字符串大小 , 后面的自然數集 N\rm NN 是計算的步數 ;
f(n)\rm f(n)f(n) 的含義是度量 長度為 n\rm nn 的所有字符串 , 計算時所花費的步數的 最大值 ;
證明 M\rm MM 為什么必須是判定機 :
假設 M\rm MM 是圖靈機 , 在某些輸入上是不停機的 , 如輸入字符串為 aab\rm aabaab ;
圖靈機 M\rm MM 在 aab\rm aabaab 字符串上進行計算時 , 進入 Loop 狀態 , 不停機 , 此時定義 f(3)\rm f(3)f(3) 的值只能是無窮大 ;
此時該函數 f(n)\rm f(n)f(n) 就沒有意義了 ;
函數在數字上進行取值時 , 必須是一個具體的數字 ;
總結
以上是生活随笔為你收集整理的【计算理论】计算复杂性 ( 计算理论内容概览 | 计算问题的有效性 | 时间复杂性度量 | 输入表示 | 时间复杂度 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】可判定性 ( 可判定性总结
- 下一篇: 【计算理论】计算复杂性 ( 时间复杂度时