Dapatkan bit N secara efisien ?

11

Diberikan dan , apakah mungkin untuk mendapatkan bit ke - (atau digit dari basis kecil apa pun) daridalam waktu / ruang , di mana adalah beberapa fungsi polinomial dalam dan ?NMMN!O(p(ln(N),ln(M)))p(x,y)xy

yaitu Diberikan , (dengan , ), cari bit daridalam .N=2ηM=2μNMZ2μ(2η)!O(p(η,μ))

Catatan: Saya telah menanyakan hal ini di mathoverflow.net di sini dan belum mendapatkan jawaban, jadi saya mengirim silang.

Dari komentar di situs lain, Gene Kopp menunjukkan bahwa seseorang dapat secara efisien menghitung bit orde rendah dengan melakukan aritmatika modular dan bit orde lebih tinggi menggunakan perkiraan Stirling, jadi pertanyaan ini adalah 'seberapa efisienkah seseorang dapat menghitung bit urutan menengah?' .

pengguna834
sumber

Jawaban:

13

Dick Lipton memiliki posting yang indah dari 2009 tentang hubungan antara fungsi faktorial dan anjak piutang. Ada banyak hal di sana yang tidak terkait dengan pertanyaan ini, tetapi satu poin penting adalah teorema ini:

Jikadapat dihitung dengan perhitungan aritmatika garis lurus dalam langkah , maka anjak piutang memiliki sirkuit ukuran polinomial.n!O(logcn)

Saya menduga ini adalah bukti bahwa pertanyaan Anda, terutama dalam batas waktu yang Anda sebutkan, akan sulit dijawab.

Suresh Venkat
sumber
1
Terima kasih, ini adalah jenis jawaban yang saya cari. Ini tidak langsung menjawab pertanyaan saya dan saya tidak tahu persis bagaimana menghubungkan keduanya, tetapi cukup dekat untuk membuat pikiran saya tenang.
user834
3

Jawaban Suresh mungkin menjawab pertanyaan untuk Anda, tetapi saya pikir saya akan menunjukkan kasus khusus. Anda selalu dapat menghitung hasilnya untuk digit yang kurang signifikan untuk basis apa pun. Ambil sebagai basis kami.p

Jelas, setiap p th istilah dalam faktorial adalah kelipatan dari . Setiap istilah th adalah kelipatan dari , dll. Dengan demikian kekuatan tertinggi yang merupakan faktoradalah . mudah diperkirakan dengan perkiraan Stirlings: . Selanjutnya,, jadi jumlah selalu dapat dihitung secara efisien dengan menjumlahkan sebagai ganti untuk (karenap(p2)p2pN!Xp=i=1logp(N!)Npilogp(N!)lnN!NlnNNpNlogp(N)>N!1iNlogp(N)Npi=0untuk ).i>logp(N!)

Demikian digit terakhir dariadalah nol dalam basis .XpN!p

Joe Fitzsimons
sumber