算法的計算復雜性


計算復雜度

  計算復雜度由算法決定,一個數學問題通常可同時有多個解決算法,而計算復雜度可表述算法的復雜程度,在密碼設計和密碼分析中具有重要作用。計算復雜性理論不僅反映密碼破譯的固有困難性,評測密碼算法對抗密碼破譯的實際能力,還能為不同密碼算法實現難度的分析與比較提供了方法。

  算法復雜度一般由執行算法所需要的計算時間T(時間復雜度)和計算空間S(空間復雜度)來度量,它們通常可以表示成輸入規模$\lambda $的函數。在分析算法的復雜度時,通常用${\rm O},\tilde {\rm O},o,\Theta $四種方式表示它們之間的漸近程度。

  算法的復雜度通常指時間復雜度,通常分為以下 3類:多項式時間算法復雜度亞指數時間算法復雜度指數時間算法復雜度,三個算法時間復雜度是遞增的。若存在常數$a,{n_0}$,當$a > {n_0}$時,滿足,則稱算法的時間復雜度為$T(n) < af(\lambda )$。

多項式時間算法

  假設$\lambda $是輸入規模,k 為常數,如果執行此算法的時間復雜度為${\rm O}({\lambda ^k})$,則稱該算法是一個多項式時間算法

計算復雜度理論中,多項式時間算法被認為是簡單的算法。對於一個問題,如果存在多項式時間的解決算法,那么該問題不是一個計算困難問題。

指數時間算法

  如果執行此算法的時間復雜度為${\rm O}({t^{f(\lambda )}})$,其中 t 為大於1的常數,此時,若 ${f(\lambda )}$是關於$\lambda $的一個多項式函數,則稱該算法為指數時間算法。

若解決該問題的算法均是指數時間的算法,那么該問題是計算困難問題。

亞指數時間算法

  若${f(\lambda )}$是一個大於常數小於$\lambda $的線性多項式的函數,則稱該算法為亞指數時間算法。

介於多項式時間算法和指數時間算法之間的是亞指數時間算法,本文所涉及到的近似最大公因子問題和錯誤學習問題,目前還不存在相應的亞指數時間算法用於求解上述兩類問題。

可忽略函數

可忽略函數是一個極小量,在計算復雜度理論和全同態加密的安全性定義中應用廣泛。

 


免責聲明!

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



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