計算複雜度
計算複雜度由算法決定,一個數學問題通常可同時有多個解決算法,而計算複雜度可表述算法的複雜程度,在密碼設計和密碼分析中具有重要作用。計算複雜性理論不僅反映密碼破譯的固有困難性,評測密碼算法對抗密碼破譯的實際能力,還能爲不同密碼算法實現難度的分析與比較提供了方法。
算法複雜度一般由執行算法所需要的計算時間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 $的線性多項式的函數,則稱該算法爲亞指數時間算法。
介於多項式時間算法和指數時間算法之間的是亞指數時間算法,本文所涉及到的近似最大公因子問題和錯誤學習問題,目前還不存在相應的亞指數時間算法用於求解上述兩類問題。
可忽略函數
可忽略函數是一個極小量,在計算複雜度理論和全同態加密的安全性定義中應用廣泛。