Apakah menentukan apakah ada prima dalam suatu interval yang dikenal sebagai P atau NP-complete?

13

Saya melihat dari posting ini di stackoverflow bahwa ada beberapa algoritma yang relatif cepat untuk menyaring suatu interval angka untuk melihat apakah ada prima dalam interval itu. Namun, apakah ini berarti bahwa masalah keputusan keseluruhan: (Apakah ada prima dalam suatu interval?) Ada di P. (Ada banyak jawaban untuk posting yang tidak saya baca sehingga saya minta maaf jika pertanyaan ini adalah duplikat atau tidak perlu).

Di satu sisi, jika intervalnya cukup besar (misalnya ) maka sesuatu seperti Postulat Bertrand berlaku dan pasti ada prima dalam interval ini. Namun, saya juga tahu bahwa ada kesenjangan besar yang sewenang-wenang antara dua bilangan prima (misalnya . [ N ! , N ! + N ][N,2N][N!,N!+N]

Bahkan jika masalah keputusan dalam PI tidak melihat bagaimana masalah pencarian yang sesuai juga dapat ditelusuri karena, maka kita mungkin tidak dapat menggambar pada properti yang sama mengenai distribusi bilangan prima yang dikenal saat melakukan pencarian biner.

Ari
sumber

Jawaban:

17

Jadi masalah Anda adalah sebagai berikut:

Input: integers Pertanyaan: apakah ada prima di ?[ , kamu ],kamu
[,kamu]

Sejauh yang saya tahu, tidak diketahui apakah masalah itu dalam P atau tidak.

Inilah yang saya tahu:

  • Pengujian primality (diberi nomor tunggal, uji apakah itu prima) ada di P, jadi jika rentangnya cukup kecil, Anda dapat menguji setiap angka secara mendalam untuk mengetahui apakah nomor itu prima - tetapi ini tidak menyebabkan algoritma umum.

  • Jika dugaan Cramer benar, maka masalahnya adalah pada dugaan Cramer mengatakan bahwa jarak antara bilangan prima berturut-turut di dekat adalah , jadi algoritma berikut ini akan di P: beralih melalui angka , masing-masing menguji apakah itu prima; jika Anda menemukan yang utama, segera hentikan dengan jawaban ya; jika anda menekan , berhenti dengan tidak ada jawaban. Dugaan Cramer memberi tahu kami bahwa Anda akan berhenti setelah sebagian besar uji coba , sehingga algoritma akan berjalan dalam waktu polinomial.O ( ( log n ) 2 ) , + 1 , + 2 , + 3 , ... u O ( ( log ) 2 )nHAI((catatann)2),+1,+2,+3,...kamuHAI((catatan)2)

    Sayangnya, hasil yang diketahui pada celah utama tampaknya tidak cukup kuat untuk membuktikan tanpa syarat bahwa masalahnya ada di P.

  • Berikut ini adalah algoritma sederhana lain: berulang kali memilih bilangan bulat acak dari , dan uji apakah itu perdana. Hentikan jika Anda menemukan bilangan prima, atau jika Anda telah mencoba setiap bilangan bulat di dan tidak ada bilangan prima. Secara heuristik, kita harus mengharapkan ini menjadi efisien dalam praktik. Teorema bilangan prima memberitahu kita bahwa jika Anda memilih angka secara acak di sekitar , probabilitas bilangan prima adalah sekitar . Dengan demikian, secara heuristik, kita harus berharap bahwa setelah sekitar iterasi, Anda biasanya akan menemukan prime dan berhenti, jika ada. Di sisi lain, karena masalah pengumpul kupon, jika tidak ada prime dalam rentangr[,kamu][,kamu]kamu1/catatannHAI(catatankamu)[,kamu], Anda akan berhenti setelah tentang iterasi . Jadi, jika kita memiliki batas atas yang baik pada ukuran kesenjangan terpanjang antara bilangan prima, ini akan menyiratkan bahwa masalahnya ada di BPP. Bahkan tanpa batas atas seperti itu, maka contoh masalah acak mudah.HAI((kamu-l)catatan(kamu-l))

  • Mungkin seseorang dapat menerapkan metode pengayakan untuk meningkatkan waktu berjalan dalam praktik (misalnya, untuk menghindari melakukan pengujian primality pada angka yang dapat dibagi oleh prime kecil). Saya tidak tahu apakah ini dapat ditunjukkan mengarah pada perbaikan asimptotik.

  • Karena teknik-teknik ini, masalahnya mungkin mudah dalam prakteknya.

  • Karena pernyataan di atas, saya pribadi ragu bahwa masalahnya adalah NP-complete.

DW
sumber
HAI(kamu)
HAI(poli(catatankamu))
HAI(poli(catatankamu))HAI(poli(kamu))
catatankamukamu
Tidak perlu, Anda sudah membersihkan kebingungan saya. Terima kasih banyak!
Quelklef