首页
社区
课程
招聘
[素性检测]PRIMES is in P: A-K-S 算法
发表于: 2009-5-20 17:10 10913

[素性检测]PRIMES is in P: A-K-S 算法

2009-5-20 17:10
10913

方便大家了解Agrawal-Kayal-Sazena 算法,附上Manindra Agrawal, Neeraj Kayal, and Nitin Saxena的论文。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
2
除了那帖【分享】如何迅速檢驗質數?  解說外,是否請 linygu 再說的平民化一點。
謝謝。
2009-5-20 19:02
0
雪    币: 1022
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
rockinuk版在《如何迅速檢驗質數?》里已经讲得很透彻了,不认为我还能讲得更好。
把那论文发上来是方便一些想看原文又懒得去找的同学。
2009-5-20 19:41
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
4
你當然可以講的更好囉~
2009-5-20 20:06
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
5
《如何迅速檢驗素數》?迅速嗎?

據我所知,A-K-S方法並不迅速,相反,還比Rabin-Miller慢得多得多,可以說,根本就不在一個數量級,甚至不可用於實踐。A-K-S的可貴之處在於它是在數學史上,第一次從"方法"上能夠"確認"一個數是否為素數,而Rabin-Miller(及其他素性測試方法)只能說某一大整數為素數的概率很大,而無法判定它"就是素數"。

不知我的認識是否有誤?請版主賜教。
2009-5-21 23:58
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
6
如何迅速檢驗素數?迅速嗎?

據我所知,A-K-S方法並不迅速,相反,還比Rabin-Miller慢得多得多,可以說,根本就不在一個數量級,乃至不可用於實踐。A-K-S的可貴之處在於它是在數學史上,第一次從"方法"上能夠"確認"一個數是否為素數,而Rabin-Miller(及其他素性測試方法)只能說某一大整數為素數的概率很大,而無法判定它"就是素數"。

不知我的認識是否有誤?請版主賜教

1) 您怎麼知道 or 證明 A-K-S 的方法比 Rabin-Miller 慢? 請問您的比較基準點在哪?

2) 照您這樣描述 「A-K-S的可貴之處在於它是在數學史上,第一次從"方法"上能夠"確認"一個數是否為素數」,那意思就是其他的方法如 Rabin-Miller test 沒有 "方法" 能夠 "確認",那既然這樣,一個很確定的一個不能確定的,就沒有比較基礎了。
既然沒比較基礎就沒有迅速可言。

3) 如果您可以發展出一套像 A-K-S 那樣的方法出來(不一定類似 A-K-S),在 "方法" 上能夠 "確認" 該數是否為素數時,我倒不介意替您比較。

謝謝光臨。
不知前版主是否接受,我的邏輯論點。
2009-5-22 00:16
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
7
谢谢来自台湾的版主的回复。

你可能误解了我的意思,也有可能是我没有表达清楚自己的意思。

1> 我把限定词"大整数"放到了后面,而没有前置,这是我的失误。我认为的大整数是相对于RSA算法的一般安全性而言,比如至少512 bits以上。这个比特数量就是我的比较基点。其实,像256 bits的数以目前的计算机速度,12个小时基本可以穷举完(这里指分解)。

2> A-K-S刚出来时我也看过那篇文章,不过我没有能力证明它的任何观点或者断言,你知道的,我没那个水平。关于它的实际运算速度我依稀记得是看了哪篇文章(现在想不起是哪篇了)上说它现在还是很慢。从我下面给的链接你也可以看到,至少目前它并不比"试除法"快。我的"乃至不可用於實踐"说的就是这个。

3> 你的第2点倒是提醒了我,对两种不同的思路做比较有可能是不合适的。不过,如果改良后的A-K-S方法若能迅速(比如不超过10秒)判定一个数是素数,那么Rabin-Miller等测试方法还真应该被取代了。

4> 还有一点我没有表述清楚的是:第一次能够从方法上确认一个数是否为素数不应该是A-K-S。而应该是最原始的"试除法"吧,但我故意回避了,因为"试除法"对于判定大整数是否为素数几乎无能为力。

5> 你的第3点"火"可真大呀,把我都烧着了。:D ...开个玩笑。正如我前面所说,我没那个能力。我只是密码学的业余爱好者,看看热闹还行,来不了真格的。

有篇文章你可以参看一下,是我临时找的:
http://www.thefreelibrary.com/Prime+pursuit:+constructing+an+efficient+prime+number+detector-a094011330

中间有段话:

PRACTICAL CONCERNS Achieving a theoretical break-through is one thing. Putting it into practice for everyday use is another matter entirely. With a running time proportional to the 12th power of the number of digits, the new algorithm is still painfully slow for relatively small numbers. As it turns out, Caldwell says, "it is far slower than trial division in practice."

However, "one has to be extremely careful when pronouncing something practical or not," warns Richard E. Crandall of the Center for Advanced Computation at Reed College in Portland, Ore.

Indeed, experts who have carefully studied the Agrawal-Kayal-Saxena algorithm have already made improvements. One such variant was developed by Hendrik W. Lenstra of the University of California, Berkeley. Crandall recently demonstrated that a computer programmed with this variant could crack a 30-digit prime in about a day instead of the several years required for the original IIT algorithm.


我把文章中的"30-digit prime"理解为不超过999999999999999999999999999999大小的数(十进制),不过它只有100比特,是小了点,大概花了1天。即使是十六进制的FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF也只有120比特。

最后,我当然也期待这个算法能尽快取得更大突破。

最后的最后,若有什么谬误之处还请批评指正。我看了kanxue对你的介绍,你应该是专业人士,但没看见是哪个大学的,你好像没说。希望以后多多指导。
2009-5-22 05:02
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
8
1) 我也沒有要批評您,或是我發火。一點都沒有。我只是就您的字面意思及邏輯來提出您的見解及意思。
我想可能是我誤會您原本的意思吧!?
下次我會注意,可能是地方用語不同。譬如,我前幾天還不知道什麼叫“太挫了”,現在我瞭解意思了。

2) 我並沒有說 A-K-S 就是非常實用,但它的確解決了目前需要解決的問題。
大的質數,有大的質數檢驗的方法】,【小的質數,有小的質數檢驗方法】,簡單來說,殺雞用殺雞的刀,殺牛用殺牛的刀,雖然都是刀,但因為對象不同,刀的選擇也會不一樣。
又譬如,一位 A 男生追一位 B 小姐的方法,應該不會跟 A 男生追一位  C 小姐的方法相同。

3) 至於效率的問題,我也不敢保證同一個 1024 bits prime number 下,哪一個方法,誰比較有效率,誰沒有效率。
以計算機 hardware design 來說,我寧願用 adder 也不要用 multiplier。why?
因為 adder 的 clocks 短,速度快;multipler 的 clocks 比較長,相對於 adder 來說速度就慢了。adder 設計簡單,multiplier 比較複雜,當然若考慮 logic gates 那些條件下,或是算一個很大數的乘法(multiple) 時,若採用 adder 來完成工作就不見得佔到便宜。
因為我們都會考慮 “Optimize problem”。

4) 試除法還是很好用的。現在的計算機不管是硬件或是軟件都提升不少,如果不考慮時間,試除法總會成功。
譬如,有一種方法叫 “brute force”,不考慮時間,就是一直 try 到成功為止。

5) 試除法是不是最原始判定一個數是不是為質數的方法,我不知道,您可能要問專家。

最後還是歡迎您常來逛逛,我不認為我是專業人士,只是興趣罷了。

Ps. 或許您該去質疑另一篇,【曾經有個華人得過圖靈獎,而且破譯了 Hill Cipher 那篇文吧!?】,得 2000 年 tuning award 是為真,破譯 Hill Cipher.....!?
2009-5-22 07:00
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
9
Hill Cipher就不看了,我感兴趣的地方不在这(还是那句话,我也没那个水平)。只是记得3年前曾写过一个Hill Cipher的crackme/keygenme,对它的了解也就仅限于当时。
2009-5-22 10:11
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
10
聞道有先後,術業有專攻。
謝謝撥冗光臨並給我們支持。
2009-5-22 13:34
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
台湾版主说的很对,也很专业。有一位业界老大拿到这篇当时还没发表的文章后,很快就给出了一个优化算法。
相信这个算法会被持续优化,或许将来会被一种不同的、但效率更高的算法所取代,谁能预测到呢?
目前这个算法的局限还是很明显的,但是它毕竟第一次给出了关于素性检验的明确答案---就是论文的标题。同时,人们从此有了一个比较的基点。这才是开创性的工作。
2009-5-27 22:32
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
忘了说一点,其实印度人给的算法是相当适合做并行计算的。
2009-5-27 22:36
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
13
Thanks For share.
2009-6-3 19:02
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
Happytown说的没错,
Rabin-Miller虽然是概率检测,贵在速度快,容易实现;
A-K-S之前看过论文,论文里只是个朴素的理论,像1024bit大素数检测的话,确实要慢很多。
目前工程实现上还是Rabin-Miller算法,A-K-S还没有听到过有具体工程应用,所以是研究热点啊。

不过记得前段时间在哪里看到NIST放出了素数检测的新算法,但是没有跟进关注……
2009-6-10 14:00
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
15
沒有人說 Happttown 不對。
只是 A-K-S 更能比 Rabin-Miller 更精準的判斷是不是 prime number。

“青菜,蘿蔔,各有所好”,這句話還真貼切。(我聽朋友講過這句話)
2009-6-10 17:33
0
游客
登录 | 注册 方可回帖
返回
//