Está determinando se existe um primo em um intervalo conhecido como P ou NP-complete?


13

Vi neste post no stackoverflow que existem alguns algoritmos relativamente rápidos para peneirar um intervalo de números para ver se há um primo nesse intervalo. No entanto, isso significa que o problema geral de decisão de: (existe um primo em um intervalo?) Está em P. (Havia muitas respostas para esse post que eu não li, então peço desculpas se esta pergunta é uma duplicado ou desnecessário).

Por um lado, se o intervalo for grande o suficiente (por exemplo ), algo como o Postulado de Bertrand se aplica e, definitivamente, há um primo nesse intervalo. No entanto, também sei que há arbitrariamente grandes lacunas entre dois primos (por exemplo [ N ! , N ! + N ] . [N,2N][N!,N!+N]

Mesmo que o problema de decisão esteja no PI, não vemos como o problema de pesquisa correspondente também é tratável porque, talvez não consigamos usar as mesmas propriedades em relação à distribuição conhecida de números primos ao executar a pesquisa binária.

Respostas:


17

Portanto, seu problema é o seguinte:

Entrada: números inteiros Pergunta: existe um primo em [ , u ] ?,u
[,u]

Até onde eu sei, não se sabe se esse problema está em P ou não.

Aqui está o que eu sei:

  • O teste de primazia (dado um único número, teste se é primo) está em P; portanto, se o intervalo é pequeno o suficiente, você pode testar exaustivamente cada número no intervalo para ver se é primo - mas isso não leva a uma algoritmo geral.

  • Se a conjectura de Cramer é verdadeira, o problema está em P. A conjectura de Cramer diz que o intervalo entre primos consecutivos próximos a é O ( ( log n ) 2 ) , portanto o algoritmo a seguir estará em P: iterar pelos números , + 1 , + 2 , + 3 , , testando cada um se é primo; se você encontrar um que seja primo, pare imediatamente com uma resposta sim; se você acertar você , pare sem responder. A conjectura de Cramer nos diz que você vai parar depois da maioria dos OnO((logn)2),+1,+2,+3,...você testes de primalidade, para que o algoritmo seja executado em tempo polinomial.O((registro)2)

    Infelizmente, os resultados conhecidos sobre lacunas privilegiadas não parecem fortes o suficiente para provar incondicionalmente que o problema está em P.

  • r[,você][,você]você1/registronO(registrovocê)[,você]O((você-eu)registro(você-eu))

  • Provavelmente, pode-se aplicar métodos de peneiração para melhorar o tempo de execução na prática (por exemplo, para evitar qualquer teste de primalidade em números divisíveis por um pequeno primo). Não sei se isso pode levar a qualquer melhoria assintótica.

  • Devido a essas técnicas, o problema provavelmente é fácil na prática.

  • Devido às observações acima, duvido pessoalmente que o problema seja NP-completo.


O(você)

O(poli(registrovocê))

O(poli(registrovocê))O(poli(você))

registrovocêvocê

Não há necessidade, você esclareceu minha confusão. Muito obrigado!
Quelklef 08/04/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.