算法的計算複雜性

計算複雜度

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

  算法複雜度一般由執行算法所需要的計算時間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 $的線性多項式的函數,則稱該算法爲亞指數時間算法。

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

可忽略函數

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

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章