Baillie–PSWテストの詳細


7

MathematicaがPrimeQ関数(素数性をテストする)にBaillie–PSWテストを使用していることは明らかであり、私がMathematicaのドキュメントで読んだように、トライアル除算から始まり、ベース2と3のMiller–Rabin、そしてルーカスの疑似プライムテストです。私の質問は:

ベース2と3を削除し、ランダムベースのみを使用できますか?

また、ウィキペディア以外に、この素​​数性テストについて良い参考文献を提案できる人はいますか?

回答:


8

基数2を使用する利点は、pspの基数2がまですべてわかっていることです。Baillie / Wagstaffの論文のいずれかの方法に従ってパラメータが選択された場合、これらのpsp(2)がLucasテストに合格しないことが確認されています。264P,Q

ランダムなベースを選択した場合、FermatテストとLucasテストの両方に合格する複合が存在する可能性があります。たとえば、は強力なpspベースの76であり、Lucas疑似素数でもあります。nn=5777

ちなみに、Lucasテストを実装する場合は、次のチェックを追加することをお勧めします。これは、Lucasの計算の最後に到達すると実質的に無料です。もし奇数の素数であり、(そして、いつものように、(ヤコビ記号)、次に。メソッド(Baillie / Wagstaffを参照)によって、が選択された場合、913は、これはこの合同が成り立つことです(白黒の論文ではn(n,QD)=1D=P24Q(Dn)=1Vn+12Q(modn)D,PQA108、しかし私は最近計算をさらに進めました)。したがって、sprp(2)およびslprp(P、Q)テストに加えて、この合同性は素数性テストに追加の強度を追加します。


5

テストのリファレンス:

  • Pomerance、Selfridge、Wagstaff、「The Pseudoprimes to 25 x 10 ^ 9」、1980年7月。ページ1024-1025、nが強い確率素数かどうかを確認2.メソッドA(Selfridge)を使用してnがLucas確率素数かどうかを確認またはB.著者は、反例の最初の発見者または存在しないことの証明に30ドルを提供します。テストについて議論するときに、次のペーパーを参照します。

  • BaillieとWagstaff、「Lucas Pseudoprimes」、1980年10月。ページ1401.試用版はいくつかの便利な制限に分割されます。方法A(セルフリッジ)またはBを使用して、nが強い確率素数かどうかを確認します。2. nが強力なLucas確率素数かどうかを確認します。

  • Pomerance、 " Baillie-PSW Primality Testの反例はありますか? "、1984。参考文献PSW80:nが強い確率素数ベースかどうかを確認2. Selfridgeパラメータを使用してnがLucas確率素数かどうかを確認(方法A) 。彼は、条件1が弱められても、n <= 25 * 10 ^ 9へのすべての合成は依然として失敗すると述べています。短い論文では、この強力なbase-2 prpとLucas-Selfridge prpの組み合わせを「Baillie-PSW」テストと繰り返し呼んでいます。

これらはすべて、強力なbase-2可能性のある素数検定の使用を説明しています。少し前のPSW論文はルーカステストを示していますが、BW論文は強力なルーカステストを推奨しています。1980年の論文は、2つの特定のパラメータ選択方法の1つを使用する必要があることを示していますが、Pomeranceの1984年の論文は、非セルフリッジ法を削除しています。

私の意見では、Baillie and Wagstaffの論文が主な参考資料ですが、Pomerance、Selfridge、Wagstaffと組み合わせて読む必要があります。時間の経過に伴うコンセンサスは、Selfridge(メソッドA)パラメーター選択を使用する必要があるということです。一般的に使用されるその他のバリエーションには、超強力テスト、「ほぼ」超強力テスト、およびフロベニウステストがあります。詳細とリンクについては、「Pseudoprime statistics、Data、and Tables」のページをご覧ください。

Mathematicaの質問に答えるには:

  1. ピンチ(1993)に基づいて、Mathematicaはベース2の強力な疑似素数テストを本来の方法で行っていましたが、Baillieらのテストではない、不良な「Lucas」テストを使用していました。示した。ピンチはテストに疑似素数を見つけました。彼はまた、Wolframが何らかの方法でLucasテストを変更したが、BPSWに使用する必要があるLucasテストを使用しないことを示しています。Wolframからの情報がなければ、彼らがそれ以来過去24年間に彼らが何をしたのか私たちは知りません。おそらく、彼らは「ルーカス」テストを強化し、問題をカバーするためにベース3 MRテストを追加しました。多分彼らは今、適切なルーカステストを使用しています。わかりません。

  2. 正しいルーカステストが使用された場合、ベース3テストは削除され、他のほとんどのパッケージで使用されているものと同様のBPSWテストが残されます。2 ^ 64未満の反例は絶対になく、既知の大きな反例もありません。ベース3かランダムベースかに関係なく、別のテストを追加すると、64ビットを超える入力に対して少し確実性が増します。それは悪い考えではないと思います。

  3. ベース2テストをランダムベーステストで置き換えることは、私の意見では悪い考えです。非常に優れた64ビットカウンターの例を含め、base 2を使用した結果はよく知られています。テストが確定的になります。ランダムなベースを使用しても、Lucasテストに関して反相関プロパティは保持されますが、トレードオフは異なります。個人的には、BPSW疑似プライムを密かに知っている敵を倒したい場合は、適切なBPSWテスト(base 2 SPRP + strong / AES / ES Lucas)と1つ以上のランダムベーステストを使用することをお勧めします。または、ルーカステストに加えて、フロベニウステストの余分な作業を追加します。


1

あなたは二つの質問をしている。最初に答えます。

Mathematicaがベース2と3のテストを最適化として使用している可能性は非常に高いです。これらの基底は、(その大きさのため)おそらくテストがより速く、両方の数値に対して機能します。必要に応じてこのテストをスキップできますが、結果の関数は平均して遅くなります。


トライアルディビジョンは簡単な最適化です。base-2テストはBPSWの一部であるため、スキップできません。基数3のテストを追加することが本当の問題です。Lucasテストの費用は、MRテストの1.5〜2倍です。base-2テストは、特に大きな入力の場合、ほとんどのコンポジットをキャッチします。したがって、素数を犠牲にしてbase-2-pseudoprimesを高速化するか、または大きな入力の反例の可能性を減らすようにします。私は後者を疑っていますが、上記の理由以外に証拠はありません。
DanaJ 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.