Seberapa dekat kita dengan multiply linear, tambah, dan bandingkan (pada bilangan bulat)?

21

Mengakses artikel KW Regan "Connect the Stars" , ia menyebutkan pada akhirnya bahwa masih merupakan masalah terbuka untuk menemukan representasi bilangan bulat sehingga operasi penambahan, perkalian, dan perbandingan dapat dihitung dalam waktu linier:

Apakah ada representasi bilangan bulat sehingga penambahan, perkalian, dan perbandingan semuanya bisa dilakukan dalam waktu linier? Pada dasarnya, apakah ada waktu linier yang dipesan secara acak?

(1) Seberapa dekat kita dengan multiplikasi dan penambahan waktu linear, tanpa membandingkan? Di sini saya berasumsi bahwa ukuran masalah dapat bervariasi, sehingga kita mungkin memerlukan struktur data / algoritma yang memungkinkan untuk mengubah ukuran bilangan bulat.

(2) Untuk masalah lengkap, kita dapat mengasumsikan bahwa kita akan menemukan skema optimal untuk melipatgandakan, menambah, dan membandingkan pada bilangan bulat. Seberapa dekat kita bisa mendapatkan paling lambat dari tiga operasi ini (dalam kasus terburuk) menuju waktu linier? Dan pada catatan itu, seberapa cepat operasi lainnya?

PERNYATAAN MASALAH FORMAL

Seperti yang disebutkan oleh Emil Jeřábek, kami ingin mengesampingkan kasus-kasus sepele dan berkonsentrasi pada perilaku kasus terburuk untuk pertanyaan ini.

Jadi kami bertanya, untuk bilangan bulat non-negatif dan y di mana 0 x < n dan 0 y < n , dapatkah kita menemukan struktur data / algoritma yang dapat melakukan penambahan, perkalian, dan membandingkan dengan \ antara x dan y dalam waktu O ( n log ( n ) ) dan ruang O ( log 2 ( n ) ) ?xy0x<n0y<nxyO(nlog(n))O(log2(n))

Matt Groff
sumber
1
Saya akan menyebutkan bahwa adalah mungkin untuk membuat skema yang melakukan operasi ini dalam waktu pada bilangan bulat non-negatif, di mana n adalah bitsize dari integer terbesar (dengan asumsi kita tahu n depan waktu). Saya ingin tahu apakah kita dapat melakukan yang lebih baik, dan melakukan ini dalam waktu yang sebanding dengan bilangan bulat saat ini sedang dihitung. Θ(n)nn
Matt Groff
5
@TysonWilliams: Ya! Biner!
Jeff
2
Alih-alih mendapatkan waktu linier untuk semua operasi ini, adakah representasi bilangan bulat sehingga semua operasi ini memiliki waktu ? O(nlogn)
Emil Jeřábek mendukung Monica
4
Sebenarnya, ada jawaban positif sepele: mewakili bilangan bulat dalam biner dengan bit padding. Tidakkah pernyataan itu mencakup beberapa kondisi yang menyatakan bahwa representasi harus memiliki panjang linier dalam panjang representasi biner? n2
Emil Jeřábek mendukung Monica
5
@ EmilJeřábek: Saya berasumsi dia ingin representasi dari setiap bilangan bulat untuk menggunakan f ( n ) bit, untuk beberapa fungsi f ( n ) = Θ ( log n ) . nf(n)f(n)=Θ(logn)
Jeffε

Jawaban:

14

Mungkin bukan jawaban terbaik, tapi mungkin ini adalah titik awal yang berguna. Jika kita ingin merepresentasikan bilangan bulat non-negatif, kita dapat menyimpannya sebagai satu set residu bilangan prima modulo residu mulai dari 2. Dalam bentuk ini perbandingan berpotensi sulit, tetapi penggandaan dan penambahan dapat dilakukan dengan cukup cepat. Produk dari primes pertama didekati oleh p n # = exp ( ( 1 + o ( 1 ) ) n log n ) . Oleh karena itu untuk mewakili bilangan bulat N Anda memerlukan modulo residu n pertama , di manan

pn#=exp((1+o(1))nlogn).
Nn . Karena kita dapat merepresentasikan N < p n # apa pun yang menggunakan modulo sebagairesidu n primepertama, kita dapat mengambil n log n log ( N ) . Penambahan dan perkalian dapat dilakukan langsung antara pasangan residu. Ada n pasangan demikian, dengan prima maksimum berada di sekitar n log ( n ) . Jadi penambahan harus dalamN<exp((1+o(1))nlogn)N<pn#nnlognlog(N)nnlog(n) , sedangkan perkalian melalui Schonhage-Strassen harus dalam O ( n log log ( N ) log log log log ( N ) log log log ( N ) ) . Karena n log n log N , maka perkiraan kasar memberikan n dalam O ( log N / log log N )O(nloglog(N))O(nloglog(N)loglogloglog(N)logloglog(N))nlognlogNnO(logN/loglogN). Hal ini akan memberikan kompleksitas penjumlahan dan perkalian sebagai sekitar dan O ( log N log log log N log log log log N ) .O(logN)O(logNlogloglogNloglogloglogN)
Joe Fitzsimons
sumber
1
lihat juga teorema sisa Cina
vzn
1
@ vz: Ya, saya akan menyebutkan itu untuk perbandingan, tetapi kemudian terpikir oleh saya bahwa mungkin ada operasi perbandingan yang lebih cepat melalui representasi radix campuran.
Joe Fitzsimons