L符號

来自testwiki
跳转到导航 跳转到搜索

L符號是個類似大O符號漸近符號,標記為Ln[α,c],多用於表示特定演算法計算複雜性

定義

L符號的定義如下:

Ln[α,c]=e(c+o(1))(lnn)α(lnlnn)1α

其中,c為一正實數,且α為一實數0α1

L符號主要用於計算數論,表示困難數論問題之演算法的複雜性,如整數分解的篩法及離散對數的解法。L符號可簡化對這些演算法的分析,以ec(lnn)α(lnlnn)1α表示主要項,eo(1)(lnn)α(lnlnn)1α則用以表示其他較小的項。

α為0時,

Ln[α,c]=Ln[0,c]=e(c+o(1))lnlnn=(lnn)c+o(1)

是個ln n多項式函數;而當α為1時,

Ln[α,c]=Ln[1,c]=e(c+o(1))lnn=nc+o(1)

則會是ln n指數函數(即n的多項式函數)。

α介於0與1之間時,L符號為ln n次指數(與超越多項數)函數。

例子

許多通用的整數分解演算法都具有次指數複雜度,其中目前已知最快的為普通數域篩選法,其時間複雜度估算為

Ln[1/3,c]=e(c+o(1))(lnn)1/3(lnlnn)2/3

其中,c=(64/9)1/31.923。在普通數域篩法出現前,最快的整數分析演算法為Template:Le,其時間複雜度估算為

Ln[1/2,1]=e(1+o(1))(lnn)1/2(lnlnn)1/2.

橢圓曲線離散對數問題而言,目前已知最快的通用演算法為Template:Le,其時間複雜估算為群階的開平方。以L符號表示為

Ln[1,1/2]=n1/2+o(1).

目前已知最快測試一個數是否為質數的演算法為AKS質數測試,其時間複雜度為多項式時間,以L符號表示為

Ln[0,c]=(lnn)c+o(1)

其中,c已被證明至多為6[1]

歷史

最早出現L符號的文獻為卡爾·帕梅朗斯所著的論文《一些整數分解演算法的分析與比較》(Analysis and comparison of some integer factoring algorithms)[2]。在此論文中,L符號的參數只有c,其中的α則因其所分析的演算法而設為1/2

具有兩個參數的L符號則由Template:Le亨德里克·倫斯特拉在其論文《數論中的演算法》(Algorithms in Number Theory)[3]中首次引入,用以分析Template:Le離散對數演算法,為現在數學文獻中最常使用的形式。

參考資料

Template:Reflist