L符号

L符号是个类似大O符号渐近符号,标记为,多用于表示特定算法计算复杂性

定义

L符号的定义如下:

 

其中,c为一正实数,且 为一实数 

L符号主要用于计算数论英语Computational number theory,表示困难数论问题之算法的复杂性,如整数分解的筛法及离散对数的解法。L符号可简化对这些算法的分析,以 表示主要项, 则用以表示其他较小的项。

 为0时,

 

是个ln n多项式函数;而当 为1时,

 

则会是ln n指数函数(即n的多项式函数)。

 介于0与1之间时,L符号为ln n次指数(与超越多项数)函数。

例子

许多通用的整数分解算法都具有次指数复杂度,其中目前已知最快的为普通数域筛选法,其时间复杂度估算为

 

其中, 。在普通数域筛法出现前,最快的整数分析算法为二元筛法英语Quadratic sieve,其时间复杂度估算为

 

椭圆曲线离散对数问题而言,目前已知最快的通用算法为大步小步法英语Baby-step giant-step,其时间复杂估算为群阶的开平方。以L符号表示为

 

目前已知最快测试一个数是否为质数的算法为AKS质数测试,其时间复杂度为多项式时间,以L符号表示为

 

其中,c已被证明至多为6[1]

历史

最早出现L符号的文献为卡尔·帕梅朗斯英语Carl Pomerance所著的论文《一些整数分解算法的分析与比较》(Analysis and comparison of some integer factoring algorithms)[2]。在此论文中,L符号的参数只有 ,其中的 则因其所分析的算法而设为 

具有两个参数的L符号则由阿尔扬·伦斯特拉英语Arjen Lenstra亨德里克·伦斯特拉在其论文《数论中的算法》(Algorithms in Number Theory)[3]中首次引入,用以分析唐·科普斯密思英语Don Coppersmith离散对数算法,为现在数学文献中最常使用的形式。

参考资料

  1. ^ Hendrik W. Lenstra Jr.; Carl Pomerance. Primality testing with Gaussian periods (PDF). 2011 [2018-04-01]. (原始内容 (PDF)存档于2012-02-25). 
  2. ^ Carl Pomerance. Analysis and comparison of some integer factoring algorithms (PDF). Computational Methods in Number Theory, Part 1. Mathematisch Centrum. 1982: 89–139 [2018-04-01]. (原始内容存档 (PDF)于2021-02-04). 
  3. ^ Arjen K. Lenstra; Hendrik W. Lenstra, Jr. Algorithms in Number Theory. Handbook of Theoretical Computer Science (vol. A): Algorithms and Complexity. 1991.