Bisakah Merlin meyakinkan Arthur tentang jumlah tertentu?


11

Merlin, yang memiliki sumber daya komputasi tidak terbatas, ingin meyakinkan Arthur bahwa untuk dengan dan Menghitung jumlah ini dengan cara langsung (eksponensial dan penambahan modular) membutuhkan waktu dengan perkalian berbasis FFT. * Tetapi Arthur hanya dapat melakukan operasi .

m|pN, p primepk
(N,m,k)k=O(logN)m=O(N).N(loglogN)2+o(1)O(N)

(Notasi, untuk kompatibilitas dengan versi sebelumnya dari pertanyaan ini: Biarkan penjumlahannya sama dengan ; maka pertanyaannya adalah apakah adalah integer.)mαα

Bisakah Merlin meyakinkan Arthur dengan seutas panjang ? Jika tidak, bisakah dia meyakinkan Arthur dengan bukti interaktif (komunikasi total, tentu saja, harus )? Jika demikian, dapatkah Merlin menggunakan string dengan panjang ? Bisakah Arthur menggunakan waktu ?O(N)O(N)o(N)o(N)

Arthur tidak memiliki akses ke nondeterminisme atau alat khusus lainnya (metode kuantum, peramal selain Merlin, dll.) Tetapi memiliki ruang jika diperlukan. Tentu saja Arthur tidak perlu menghitung penjumlahan secara langsung, ia hanya perlu diyakinkan bahwa triple yang diberikan (N, m, k) membuat persamaan itu benar atau salah.O(N)

Perhatikan bahwa dengan dimungkinkan untuk menghitung jumlah waktu menggunakan metode Lagarias-Odlyzko . Untuk jumlahnya adalah superlinear dan tidak dapat disimpan secara langsung (tanpa, misalnya, pengurangan modular) tetapi tidak jelas apakah ada algoritma cepat.O ( N 1 / 2 + ε )k=0O(N1/2+ε)k>0

Saya juga akan tertarik pada algoritma apa pun untuk menghitung penjumlahan (modular atau sebaliknya) selain dengan menyalakan langsung dan penambahan.

* angka untuk menghitung, waktu untuk setiap perhitungan.lg k log N ( log log N ) 1 + o ( 1 ) = log N ( log log N ) 2 + o ( 1 )N/logNlgklogN(loglogN)1+o(1)=logN(loglogN)2+o(1)



1
Ya, terkait. Perbedaan utama adalah bahwa pertanyaan math.SE mengasumsikan bahwa Merlin tidak memiliki sumber daya komputasi nol dan ini mengasumsikan ia memiliki sumber daya tidak terbatas.
Charles

3
Bagaimana dengan waktu yang dibutuhkan untuk pengujian primality?
Peter Shor

1
@ Charles: Saya tidak melihat bahwa scaling untuk menghitung bilangan prima. Bisakah Anda mengeluarkannya? Saya akan berpikir itu membutuhkan scaling superlinear. The Sieve of Eratosthenes memberikan algoritma . O(N2)NO(N2)
Joe Fitzsimons

1
Algoritma ini disebabkan oleh Lagarias & Odlyzko. Ini dijelaskan, misalnya, dtc.umn.edu/~odlyzko/doc/arch/analytic.pi.of.x.pdf (Dan itu bukan tetapi ˜ O (O(N))O~(N).
Charles

Jawaban:


7

Saya memposting ini secara terpisah dari kasus khusus saya sebelumnya, karena saya percaya ini adalah pendekatan yang berbeda untuk masalah ini, dan memiliki sedikit kaitan dengan jawaban saya yang lain. Mungkin tidak persis apa yang Anda cari, tetapi sederhana, dan semakin dekat.

Ada bukti yang akan selalu diterima Arthur jika buktinya benar, tetapi akan menolak dengan probabilitas . Berikut adalah cara kerjanya: Merlin mengirimkan Arthur pasangan untuk setiap prima . Arthur memverifikasi jumlah (mengambil waktu ). Arthur cek bahwa jumlah yang benar dari bilangan prima yang disediakan (dengan menghitung ) yang sublinear di . Terakhir, untuk pasangan acak , ia mengonfirmasi bahwa adalah prima dan bahwa . Ini membutuhkan waktu (pi,ci=p k i  mod m)pNO(N/log(N))×O(log(N))=O(N)π(N)NSNpp k i1(loglogN)2+o(1)(pi,ci=pik mod m)pNO(N/log(N))×O(log(N))=O(N)π(N)NSNpS N O ( ( log log N ) 2 + o ( 1 )pikci mod mS = ( log log N ) - ( 2 + o ( 1 ) ) SSN O((loglogN)2+o(1)). Mengambil , kami memperoleh skala waktu linier. Dengan demikian, sebagian kecil dari semua pasangan diverifikasi. Jika ada yang gagal, tentu saja Arthur akan menolak. Agar Arthur menerima bukti yang salah, harus ada setidaknya satu pasangan yang gagal satu dari dua tes ini (atau jumlah pasangan harus kurang dari π ( N ) yang sebelumnya diperiksa). Jadi sebagai pecahan S dari semua pasangan diperiksa, tes akan gagal untuk bukti yang salah dengan probabilitas setidaknya S .S=(loglogN)(2+o(1))Sπ(N)SS

Perhatikan bahwa untuk besar ini jauh lebih baik daripada menebak acak, yang berhasil dengan probabilitas 1N .1m=1O(N)


Jika memposting dua jawaban adalah praktik yang buruk, beri tahu saya dan saya akan menggabungkannya. Saya meninggalkan mereka terpisah karena yang terakhir hanya datang kepada saya dan merupakan pandangan yang sama sekali berbeda dibandingkan dengan jawaban pertama.
Joe Fitzsimons

1
baik-baik saja dengan saya. terutama dalam pertanyaan CW, biasanya ada banyak jawaban.
Suresh Venkat

@ Suresh: Ya, saya tahu, tapi ini bukan CW, dan saya tidak ingin tampil sebagai pelacur.
Joe Fitzsimons

2
Jawaban yang sangat bagus Ini memaksimalkan kedua sumber daya - string Merlin adalah dan Arthur menggunakan waktu Θ ( N ) . Nitpick: memverifikasi bilangan prima secara individual akan memakan waktu terlalu lama untuk mendapatkan ikatan Anda, tetapi tentu saja Arthur dapat menghasilkan semuanya dan membandingkannya dengan daftar Merlin (mengharuskannya dalam urutan). Θ(N)Θ(N)
Charles

1
@ JoFitzsimons: tidak apa-apa :). jika kedua jawaban tersebut pantas diterima, Anda akan mendapatkan poin dobel :)
Suresh Venkat

6

Ini adalah jawaban lengkap untuk masalah yang tidak menggunakan Merlin sama sekali.

Deléglise-Dusart-Roblot [1] memberikan suatu algoritma yang menentukan jumlah bilangan prima hingga yang kongruen dengan l modulo k , dalam waktu O ( x 2 / 3 / log 2 x ) . Sebuah modifikasi dari algoritma Lagarias-Odlyzko [2] memungkinkan sama harus dihitung dalam waktu O ( x 1 / 2 + o ( 1 ) ) .xlk,O(x2/3/log2x).O(x1/2+o(1)).

Dengan menggunakan salah satu algoritma, cari jumlah bilangan prima di semua kelas residu mod bilangan prima sampai produk mereka lebih besar dari Untuk setiap q prima , ambil jumlah total bilangan prima di setiap kelas residu kali kelas residu dengan kekuatan k -th; ini memberikan nilai m.q,k

p primepNpk(modq).

Gunakan Teorema Sisa Mandarin untuk menentukan nilai jumlah mod23logm.

Dengan teorema bilangan prima, bilangan prima terbesar yang dibutuhkan adalah jadi ini memberikan jumlah waktuO ( N 1 / 2 + o ( 1 ) ) .(1+o(1))logm,O(N1/2+o(1)).

Referensi

[1] Marc Deléglise, Pierre Dusart, dan Xavier-François Roblot, Menghitung bilangan prima di kelas residu , Matematika Komputasi 73 : 247 (2004), hlm. 1565-1575. doi 10.1.1.100.779

[2] JC Lagarias dan AM Odlyzko, Komputasi : Metode analitikπ(x) , Jurnal Algoritma 8 (1987), hlm. 173-191.

[3] Charles, jawab di MathOverflow . (Ya, ini adalah orang yang sama. Lihat jawaban lain di sana untuk pendekatan yang berbeda.)


5

Ini bukan jawaban lengkap, melainkan kasus khusus (untuk nilai lebih besar dari yang Anda pertimbangkan), yang semula saya posting sebagai komentar. Dalam kasus (untuk beberapa bilangan bulat ) ada bukti sederhana dan string Merlin bisa dari nol panjang.k = x φ ( m ) xkk=xϕ(m)x

Untuk melakukan ini, Arthur cukup menghitung . Ini dapat dilakukan dengan memfaktorkan (yang dapat dilakukan dalam waktu sublinear di bahkan menggunakan divisi percobaan). Karena untuk semua , dan jika tidak, jika maka kita memiliki , di mana adalah jumlah perbedaan pembagi utama . Seperti yang ditunjukkan di bagian komentar dapat dihitung dalam waktu sublinear dalamm Nϕ(m)mNp | m p x φ ( m )1  mod  m k = x φ ( m ) Σ p N , p p r i m e p kπ ( N ) - y  mod  m y mpxϕ(m)0 mod mp|mpxϕ(m)1 mod mk=xϕ(m)pN,p primepkπ(N)y mod mymNπ(N)N, dan karenanya jumlah ini dapat langsung dihitung oleh Arthur.

Selanjutnya, untuk kasus khusus yang maka jumlahnya tidak dapat sama dengan , seperti .m α 1 < π ( N ) < m1<N<mmα1<π(N)<m

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.