Biarkan dan menjadi himpunan bagian dari . Kami tertarik untuk menemukan jumlah Minkowski .
adalah fungsi karakteristik jika
Biarkan menjadi konvolusi diskrit dari dan , lalu jika dan hanya jika . Karenanya dapat dihitung dalam waktu dengan konvolusi diskrit melalui FFT.
Terkadang penting untuk mengetahui pasangan aktual dan yang berjumlah . disebut saksi dari , jika terdapat sehingga . Fungsi disebut fungsi saksi jika adalah saksi .
Apakah mungkin untuk menghitung fungsi saksi dalam waktu ?
convolution
fft
Chao Xu
sumber
sumber
Jawaban:
Di sini saya menjelaskan bagaimana cara mendapatkanO(n∗polylogn) secara acak waktu berjalan. Kita membutuhkan urutan pengamatan:
Seorang saksi dari nilaiv adalah sepasang angka (a,b)∈A×B sehingga a+b=v . Misalkan PA(x)=∑i∈Axi dan PB(x) didefinisikan analog. Amati bahwa koefisien xv dalam PA(x)∗PB(x) adalah jumlah saksi yang ada untuk nilaiv .
Asumsikanv memiliki saksi tunggal (a,b)∈A×B , dan pertimbangkan polinomial QA(x)=∑i∈Ai∗xi . Jelas, koefisien xv di QA(x)∗PB(x) adalah a , dan dengan demikian sekarang kita tahu pasangan (a,v−a) dan kita selesai.
Jadi, kita selesai dengan kasus bahwa ada satu saksi. Jadi mempertimbangkan kasus yang memiliki k saksi ( a 1 , b 1 ) , ... , ( a k , b k ) . Biarkan saya ( k ) = ⌈ lg √v k (a1,b1),…,(ak,bk) . Perhatikan bahwa2i(k)-1≤√i(k)=⌈lgk−−√⌉ . Selanjutnya, misalkanRj=(Aj,Bj), untukj=1,...,m, untukm=O(logn)menjadi sampel acak, sehingga setiap elemenAdipilih menjadi Aidengan probabilitasp=1/2 i ( k ) . Probabilitas bahwav2i(k)−1≤k−−√≤2i(k) Rj=(Aj,Bj) j=1,…,m m=O(logn) A Ai p=1/2i(k) v memiliki saksi tunggal dalam adalah α = ( kRj , karena saksi adalah pasangan angka yang terpisah (karena jumlah setiap pasangan adalahv). Sangat mudah untuk memverifikasi bahwaαadalah konstanta dalam(0,1)independen dari nilaik. Dengan demikian, itu harus, dengan probabilitas tinggi, yangvmemiliki saksi tunggal dalam salah satu sampelR1,...,Rm. Dengan demikian, dengan menghitung dua polinomial yang terkait dengan sampel tersebut, seperti dijelaskan di atas, padaα=(k1)p2(1−p2)k−1 v α (0,1) k v R1,…,Rm waktu (per sampel), menggunakan FFT, kita dapat memutuskan ini dalam waktu yang konstan.O(nlogn)
Kami hampir selesai. Hitung sampel acak di atas untuk resolusi . Untuk setiap resolusi seperti itu hitung sampel acak dan polinomial terkait. Juga, menghitung polinomial terkait untuk A dan B . Preprocessing ini secara naif membutuhkan O ( n log 3 n ) , tetapi saya menduga bahwa menjadi sedikit lebih hati-hati faktor log n harus dilepas.i=1,…,⌈lgn⌉ A B O(nlog3n) logn
Algoritma: Untuk setiap nilai , hitung berapa banyak saksi, katakan k, ia memiliki waktu yang konstan, dengan berkonsultasi dengan polinomial Q A ( x ) ∗ P B ( x ) . Selanjutnya, pergi ke struktur data yang relevan untuk i ( k ) . Kemudian, ia menemukan sampel acak yang memilikinya sebagai saksi tunggal, dan itu mengekstrak pasangan yang adalah saksi ini dalam waktu yang konstan.v QA(x)∗PB(x) i(k)
Anehnya, waktu preprocessing adalah , tetapi waktu yang diharapkan untuk menemukan saksi sendiri hanya membutuhkan O ( n ) waktu, karena seseorang dapat menghentikan pencarian segera setelah seseorang menemukan saksi. Ini menunjukkan bahwa algoritma ini harus ditingkatkan. Secara khusus, untuk i ( k ) « lg n , polinomial yang dihasilkan sangat jarang, dan salah satu harus dapat melakukan jauh lebih cepat FFT.O(nlog3n) O(n) i(k)≪lgn
sumber
Ok, saya sudah menahan sejak Sariel benar-benar harus mendapatkan pujian untuk jawaban, tapi saya bosan menunggu, jadi di sini adalah saya potong di algoritma acak hampir linier.
Ini meledakan waktu berjalan oleh tiga faktor logaritmik; mungkin itu bisa dikurangi.
sumber
Jawaban ini memberikan algoritma determinstic .O(n polylogn)
Tampaknya algoritma Sariel dan David dapat diderandomisasi melalui pendekatan yang mirip dengan makalah ini . [2] Saat menjalani proses ini, saya menemukan ada masalah yang lebih umum yang menyiratkan hasil ini.
Letf be the running time of calling the oracles, and assume f=Ω(m+n) , then one can find the sets in deterministic O(fklogn polylog(m)) time. [1]
Now we can reduce the finding witness problem to1 -reconstruction problem. Here S1,…,S2n⊂{1,…,2n} where Si={a|a+b=i,a∈A,b∈B} .
Define the polynomialsχQ(x)=∑i∈Qxi , IQ(x)=∑i∈Qixi
The coefficient forxi in χQχB(x) is |Si∩Q| and in IQχB(x) is ∑s∈Si∩Qs . Hence the oracles take O(nlogn) time per call.
This gives us anO(n polylog(n)) time deterministic algorithm.
[1] Yonatan Aumann, Moshe Lewenstein, Noa Lewenstein, Dekel Tsur: Finding witnesses by peeling. ACM Transactions on Algorithms 7(2): 24 (2011)
[2] Noga Alon, Moni Naor: Derandomization, witnesses for Boolean matrix multiplication and construction of perfect hash functions. Algorithmica 16(4-5) (1996)
sumber