Menemukan saksi dalam jumlah bilangan bulat minkowski

16

Biarkan dan menjadi himpunan bagian dari . Kami tertarik untuk menemukan jumlah Minkowski .AB{0,,n}A+B={a+b | aA,bB}

χX:{0,,2n}{0,1} adalah fungsi karakteristik X jika

χX(x)={1 if xX0 otherwise

Biarkan f menjadi konvolusi diskrit dari χA dan χB , lalu xA+B jika dan hanya jika f(x)>0 . Karenanya A+B dapat dihitung dalam waktu O(nlogn) dengan konvolusi diskrit melalui FFT.

Terkadang penting untuk mengetahui pasangan aktual aA dan bB yang berjumlah x . aA disebut saksi dari x , jika terdapat bB sehingga a+b=x . Fungsi w:A+BA disebut fungsi saksi jika w(x) adalah saksi x .

Apakah mungkin untuk menghitung fungsi saksi dalam waktu O(nlogn) ?

Chao Xu
sumber
3
O(npolylogn) tidak terlalu sulit.
Sariel Har-Peled
2
Anda dapat menggunakan pencarian biner. misal, partisi menjadi dua set , dan hitung dan ; periksa yang mana dari ada di; dan berulang. Ini akan memberi Anda sesuatu seperti . AAL,ARAL+BAR+BxO(nlg2n)
DW
@DW ini hanya dapat menemukan saksi untuk satu , tapi kami ingin menjadi saksi untuk setiap elemen dalam . (Kata-kata saya sepertinya tidak jelas, jadi saya baru saja memperbarui pertanyaan)xA+B
Chao Xu
Tetapi apakah Anda tertarik dengan solusi O (n polylog n)?
Sariel Har-Peled
@ SarielHar-Peled ya, saya juga tertarik pada algoritma deterministik . O(npolylogn)
Chao Xu

Jawaban:

11

Di sini saya menjelaskan bagaimana cara mendapatkan O(npolylogn) secara acak waktu berjalan. Kita membutuhkan urutan pengamatan:

  1. Seorang saksi dari nilai v adalah sepasang angka (a,b)A×B sehingga a+b=v . Misalkan PA(x)=iAxi dan PB(x) didefinisikan analog. Amati bahwa koefisien xv dalam PA(x)PB(x) adalah jumlah saksi yang ada untuk nilaiv .

  2. Asumsikan v memiliki saksi tunggal (a,b)A×B , dan pertimbangkan polinomial QA(x)=iAixi . Jelas, koefisien xv di QA(x)PB(x) adalah a , dan dengan demikian sekarang kita tahu pasangan (a,va) dan kita selesai.

  3. 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 vk(a1,b1),,(ak,bk). Perhatikan bahwa2i(k)-1i(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)1k2i(k)Rj=(Aj,Bj)j=1,,mm=O(logn)AAip=1/2i(k)vmemiliki 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(1p2)k1vα(0,1)kvR1,,Rm waktu (per sampel), menggunakan FFT, kita dapat memutuskan ini dalam waktu yang konstan.O(nlogn)

  4. 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,,lgnABO(nlog3n)logn

  5. 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.vQA(x)PB(x)i(k)

  6. 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

Sariel Har-Peled
sumber
12

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.

  • Dengan memilih sampel poin saya , i = 0 , 1 , ... , Anda bisa mendapatkan jumlah logaritmik subproblem sehingga setiap penjumlahan dari masalah asli memiliki probabilitas konstan untuk diwakili secara unik di salah satu subproblem ( yang mana pengambilan sampel mengurangi jumlah representasi yang diharapkan mendekati 1).n(1ϵ)ii=0,1,
  • Dengan mengulangi proses pengambilan sampel sejumlah logaritmik, Anda bisa mendapatkan semua jumlah untuk memiliki representasi unik dengan probabilitas tinggi.
  • Jika Anda memiliki partisi dan B menjadi dua himpunan bagian, maka dengan mengalikan angka dengan empat, menambahkan 2 ke angka-angka di salah satu himpunan bagian dalam A , dan menambahkan 1 ke angka-angka di salah satu himpunan bagian dalam B , Anda dapat bacalah dari nilai mod-4 dari jumlah yang dapat dicapai yang mana dari dua himpunan bagian dari mana mereka berasal.ABAB
  • Dengan mengulangi proses partisi beberapa kali logaritmik, menggunakan setiap posisi bit dari representasi biner dari nilai-nilai atau indeks dalam subproblem untuk memilih partisi di setiap langkah, Anda dapat secara unik mengidentifikasi puncak dari setiap jumlah yang diwakili secara unik.

Ini meledakan waktu berjalan oleh tiga faktor logaritmik; mungkin itu bisa dikurangi.

David Eppstein
sumber
3
Ha ha ;). Saya sedang menulisnya, dan kemudian pergi makan siang ...
Sariel Har-Peled
5

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.

Masalah rekonstruksik

Ada yang tersembunyi set , kita memiliki dua nubuat S i z e dan S u m yang mengambil query set Q .S1,,Sn{1,,m}SizeSumQ

  1. Size(Q) returns (|S1Q|,|S2Q|,,|SnQ|), the size of each intersection.
  2. Sum(Q) returns (sS1Qs,sS2Qs,,sSnQs), the sum of elements in each intersection.

The k-reconstruction problem asks one to find n subsets S1,,Sn such that SiSi and |Si|=min(k,|Si|) for all i.

Let f 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 to 1-reconstruction problem. Here S1,,S2n{1,,2n} where Si={a|a+b=i,aA,bB}.

Define the polynomials χQ(x)=iQxi, IQ(x)=iQixi

The coefficient for xi in χQχB(x) is |SiQ| and in IQχB(x) is sSiQs. Hence the oracles take O(nlogn) time per call.

This gives us an O(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)

Chao Xu
sumber