Mais detalhes sobre o teste Baillie – PSW

7

É claro que o Mathematica usa o teste Baillie – PSW para sua função PrimeQ (que testa a primalidade) e, como eu li na documentação do Mathematica , ele começa com a divisão de teste, depois as bases 2 e 3 de Miller – Rabin e, em seguida, o teste de pseudoprime de Lucas. Minha pergunta é:

Podemos remover as bases 2 e 3 e usar apenas uma base aleatória?

Além disso, alguém pode sugerir uma boa referência sobre esse teste de primalidade que não seja a Wikipedia ?

Ramez Hindi
fonte

Respostas:

8

A vantagem de usar a base 2 é que conhecemos toda a base 2 do psp até 264. Foi verificado que nenhum desses psp (2) passa no teste de Lucas quando os parâmetrosP,Q são escolhidos de acordo com qualquer um dos métodos do artigo Baillie / Wagstaff.

Se você escolher uma base aleatória, pode haver algum composto nque passa nos testes de Fermat e Lucas. Por exemplo,n=5777 é uma forte base psp 76 e também é um pseudoprime de Lucas.

A propósito, se você implementar um teste de Lucas, eu também recomendaria adicionar a seguinte verificação, que é praticamente gratuita quando você chegar ao final do cálculo de Lucas. E sen é um primo ímpar e (n,QD)=1 1 Onde D=P2-4Q, (e, como sempre, (Dn)=-1 1 (um símbolo de Jacobi), então Vn+1 12Q(modn). E seD,Pe Q são escolhidos pelo método UMA(veja Baillie / Wagstaff), então 913 é o único número composto ímpar de até 25 bilhões para o qual essa congruência é válida. (O papel P / B dá um limite de108, mas recentemente levei o cálculo mais longe). Portanto, além dos testes sprp (2) e slprp (P, Q), essa congruência adiciona força adicional ao teste de primalidade.

Robert Baillie
fonte
5

Referências para o teste:

  • Pomerance, Selfridge, Wagstaff, " The Pseudoprimes to 25 x 10 ^ 9 ", July 1980. Página 1024-1025, Verifique se n é uma base primária provável forte 2. Verifique se n é uma amostra provável provável de Lucas usando o método A (Selfridge) ou B. Os autores oferecem US $ 30 ao primeiro pesquisador de um contra-exemplo ou prova de inexistência. Ele faz referência ao próximo artigo ao discutir o teste.

  • Baillie e Wagstaff, " Lucas Pseudoprimes ", outubro de 1980. Página 1401. Os ensaios dividem-se em algum limite conveniente. Verifique se n é uma base primária provável forte 2. Verifique se n é uma base provável provável forte de Lucas usando o método A (Selfridge) ou B.

  • Pomerance, " Existem contra-exemplos ao teste de primazia de Baillie-PSW? ", 1984. Referências PSW80: Verifique se n é uma base de probabilidade provável forte 2. Verifique se n é uma probabilidade provável de Lucas usando os parâmetros Selfridge (método A) . Ele menciona que, mesmo que a condição 1 seja enfraquecida, todo composto para n <= 25 * 10 ^ 9 ainda falha. O artigo curto chama repetidamente essa combinação de um forte base-2 prp e Lucas-Selfridge prp testa o teste "Baillie-PSW".

Todos estes descrevem o uso de um forte teste provável de base 2. O artigo PSW ligeiramente anterior indica um teste de Lucas, enquanto o artigo BW recomenda um teste forte de Lucas. Os artigos de 1980 indicam que um dos dois métodos específicos de seleção de parâmetros deve ser usado, enquanto o artigo de Pomerance de 1984 descarta o método não-Selfridge.

Na minha opinião, o artigo de Baillie e Wagstaff é a principal referência, embora deva ser lido em combinação com Pomerance, Selfridge e Wagstaff. Consenso ao longo do tempo é que a seleção do parâmetro Selfridge (método A) deve ser usada. Outras variações comumente usadas incluem o teste extra-forte, o teste "quase" extra-forte e os testes de Frobenius. Veja a página " Estatísticas, dados e tabelas de pseudoprime " para obter mais informações e links.

Para responder às suas perguntas sobre o Mathematica:

  1. Baseado em Pinch (1993) , o Mathematica costumava fazer um teste de pseudoprima forte de base 2, como deveria, mas usava um teste de Lucas "borked" que não era o teste de Baillie et al. indicado. Pinch encontrou pseudoprimes em seu teste. Ele também indica que Wolfram modificou o teste de Lucas de alguma forma, mas não para usar o teste de Lucas que deve ser usado para o BPSW. Sem as informações de Wolfram, não sabemos o que eles fizeram nos últimos 24 anos desde então. Talvez eles tenham reforçado o teste "Lucas" e adicionado o teste de RM base 3 para encobrir os problemas. Talvez agora eles estejam usando um teste de Lucas adequado. Nós não sabemos.

  2. Se o teste de Lucas correto foi usado, o teste de base 3 poderia ser removido e teríamos um teste de BPSW semelhante ao usado pela maioria dos outros pacotes. Nós saberíamos que não havia absolutamente contra-exemplos inferiores a 2 ^ 64, e nenhum contra-exemplo maior conhecido. Adicionar outro teste, seja a base 3 ou uma base aleatória, acrescentaria um pouco mais de certeza a entradas> 64 bits. Não acho que seja uma má ideia.

  3. Substituir o teste de base 2 por um teste de base aleatória é, na minha opinião, uma péssima idéia. Temos resultados bem conhecidos para o uso da base 2, incluindo o muito bom exemplo de contra-64 bits. Isso torna o teste determinístico. Embora o uso de uma base aleatória ainda retenha a propriedade anti-correlação em relação ao teste de Lucas, ele possui diferentes vantagens. Pessoalmente, acho melhor usar um teste de BPSW adequado (SPRP base 2 + forte / AES / ES Lucas) mais um ou mais testes de base aleatória, se você quiser derrotar adversários que conhecem secretamente os pseudoprimes de BPSW. Ou adicione o trabalho extra para um teste de Frobenius em cima do teste de Lucas.

DanaJ
fonte
1

Você está fazendo duas perguntas. Eu vou responder apenas a primeira.

É muito provável que o Mathematica use o teste base 2 e 3 como uma otimização . Provavelmente, essas bases são mais rápidas de testar (por causa de sua magnitude) e funcionam para os dois números. Você pode pular esse teste se quiser, mas a função resultante seria mais lenta, em média.

Yuval Filmus
fonte
A divisão de teste é uma otimização fácil. O teste de base 2 faz parte do BPSW, portanto não pode ser ignorado. Adicionar um teste de base 3 é a verdadeira questão. Um teste de Lucas custa 1,5-2x um teste de RM. O teste de base 2 captura a maioria dos compósitos, especialmente para grandes entradas. Portanto, ou estamos tentando acelerar o pseudoprime de base 2 à custa dos números primos, ou estamos tentando reduzir a chance de um contra-exemplo para grandes entradas. Suspeito do último, mas com nenhuma evidência além do raciocínio acima.
precisa saber é o seguinte