Levin的最佳分解算法参考?


13

在曼努埃尔·布鲁姆(Manuel Blum)的“ 初学者的建议 ”中:

莱昂尼德·莱文(LEONID LEVIN)相信,无论P = NP的答案是什么?问题,它不会像您认为的那样。他给出了一些很好的例子。首先,他给出了一个可乘的最优的乘积算法,直到一个乘法常数。他证明了,如果他的算法是指数的,那么每个用于FACTORING的算法都是指数的。等效地,如果任何分解因数的算法是多时间的,那么他的算法就是多时间的。但是我们不能说出他算法的运行时间,因为从很强的意义上说,它的运行时间是无法分析的。

Levin的出版物页面返回404,DBLP未显示与保理相关的任何内容,并且在Google Scholar中搜索“ leonid levin factoring”没有任何我感兴趣的东西。AFAIK广义筛是因数分解最快的算法。曼努埃尔·布鲁姆(Manuel Blum)在说什么?谁能将我链接到论文?

Answers:


11

NP

这是Blum关于安全性和密码学的演讲笔记的引文:

列昂尼德·莱文(Leonid LEVIN)的最佳分词(分解)算法。令SPLIT表示任何计算INPUT的算法:正整数(即非素数)整数n。输出:n的非平凡因子。

定理:存在一种“最佳”数字分割算法,我们称之为“最佳分割”。从以下意义上说,该算法是最优的:对于每个数字分解算法SPLIT,都有一个(相当大但固定的)常数C,这样对于每个正整数输入n,输入n上OPTIMAL-SPLIT的“运行时间”为输入n上SPLIT的运行时间最多为C倍。

这是Levin的最佳分解算法

最佳分割算法:开始按大小顺序列举所有算法,在每个大小内按字典顺序列出。运行所有算法,以便在任何时候t,第i个算法都获得执行时间的[1 /(2 ^ i)]分数。每当算法停止时,输出整数m的范围为1 <m <n,请检查m是否除以n(即n mod m = 0)。如果是这样,则返回m。结束


有人可以解释为什么分数需要为1 /(2 ^ i)而不是简单的像1 / i这样的东西吗?
2011年

1
@netvope:1 / i的无限总和发散。您也许可以使用1 / i ^ 2来做到这一点,但是1/2 ^ i要简单得多。

3

NPcoNP

给定一个数字,我们要考虑N。

是N素数吗?如果是这样,则输出“ PRIME”,否则:

i=1...

P=1...i

使用输入N对i步运行程序P

L1M1N=LM(L,M)


4
您不能使用已知的素数测试,因为它不比最佳分解更快。除此之外,我一点也不明白。为了证明这对于将因子分解为常数是最佳的,我认为我们必须证明最后一步的乘法不是时间复杂度的主导项。如果我没记错的话,渐近设置中最快的已知乘法算法是基于FFT的,并且对n位整数花费O(n log n log log n)时间。是否有可能证明最优保理至少需要这么长的时间?
伊藤刚(Tsuyoshi Ito)

@Tsuyoshi:我认为您是对的,因为如果已知的乘法/素数测试比分解困难,则该算法将无法达到最佳。但是,如果您阅读上面的Blum语录,他只会说Levin算法是多项式的,当且仅当最优算法是最优的时,这解决了这个问题。另外两件事:(1)如何避免在此算法中使用已知的素数测试?(2)我认为此算法的公式不正确,因为在不同程序之间运行时间分配不正确;请参阅Al-Turkistany的正确答案。
彼得·索尔

@Peter:嗯,Blum的话说:“他(莱文)给出了一个可证明的最优乘数算法,直到乘法常数。” 但是考虑到我们甚至不知道保理是否花费了比线性时间更多的时间,因此很难这样说。
伊藤刚(Tsuyoshi Ito)

@Tsuyoshi:我知道,我读错了百隆的名言。
彼得·索尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.