Trovare un testimone nella somma degli interi minkowski


16

Siano e sottoinsiemi di . Siamo interessati a trovare la somma di Minkowski .A AB B{ 0 , , n } {0,,n}A + B = { a + b | a A , b B }  A+B={a+b | aA,bB}

χ X : { 0 , , 2 n } { 0 , 1 }χX:{0,,2n}{0,1} è una funzione caratteristica di seX Xχ X ( x ) = { 1  se  x X 0  altrimenti

χX(x)={1 if xX0 otherwise

Sia la convoluzione discreta di e , quindi se e solo se . Quindi può essere calcolato in tempo mediante convoluzione discreta tramite FFT.f fχ A χAχ BχB x A + B xA+Bf ( x ) > 0 f(x)>0A + B A+BO ( n registro n )O(nlogn)

A volte è importante scoprire la coppia effettiva e che somma a . è chiamato testimone di , se esiste tale che . Una funzione è chiamata funzione testimone se è un testimone di x .a A aAb B bBx xa AaAx xb B bBa + b = x a+b=xw : A + B Aw:A+BAw ( x ) w(x)xx

È possibile calcolare una funzione testimone in O ( n registro n )O(nlogn) tempo?


3
O(npolylogn)O(npolylogn) non è particolarmente difficile.
Sariel Har-Peled,

2
È possibile utilizzare la ricerca binaria. ad es., dividere AA in due insiemi di dimensioni approssimativamente uguali AL,ARAL,AR e calcolare AL+BAL+B e AR+BAR+B ; controlla quale di questi xx è in; e ricorrere. Questo ti darà qualcosa come O(nlg2n)O(nlg2n) .
DW,

@DW Questo può trovare solo un testimone per un singolo , ma vogliamo un testimone per ogni elemento in . (la mia formulazione non è chiara, quindi ho appena aggiornato la domanda)xxA+BA+B
Chao Xu,

Ma sei interessato alla soluzione O (n polilogo n)?
Sariel Har-Peled,

@ SarielHar-Peled sì, sono anche interessato deterministico . O(npolylogn)O(npolylogn)
Chao Xu,

Risposte:


11

Qui sto spiegando come ottenere tempo di esecuzione randomizzato. Abbiamo bisogno di una sequenza di osservazioni:O(npolylogn)O(npolylogn)

  1. Un testimone di un valore è una coppia di numeri ( a , b ) A × B tale che a + b = v . Sia P A ( x ) = i A x i e P B ( x ) definiti in modo analogo. Osservare che il coefficiente di x v in P A ( x ) P B ( xvv(a,b)A×Ba+b=vPA(x)=iAxiPB(x)xv)PA(x)PB(x) è il numero di testimoni disponibili per il valore vv .

  2. Supponiamo che vv abbia un singolo testimone ( a , b ) A × B(a,b)A×B , e considera il polinomio Q A ( x ) = i A i x iQA(x)=iAixi . Chiaramente, il coefficiente di x vxv in Q A ( x ) P B ( x )QA(x)PB(x) è aa , e come tale ora conosciamo la coppia ( a , v - a )(a,va) e abbiamo finito.

  3. Quindi, abbiamo finito con il caso che ci sia un solo testimone. Quindi considera il caso in cui v ha k testimoni ( a 1 , b 1 ) , ... , ( a k , b k ) . Sia i ( k ) = lg vk(a1,b1),,(ak,bk)k. Osservare che2i(k)-1i(k)=lgkk2 i ( k ) . Quindi, siaRj=(Aj,Bj), perj=1,,m, perm=O(logn)essere campioni casuali, in modo tale che ogni elemento diAsia scelto in Aicon probabilitàp=1/2 i ( k ) . La probabilità chev2i(k)1k2i(k)Rj=(Aj,Bj)j=1,,mm=O(logn)AAip=1/2i(k)vha un singolo testimone in R j è α = ( kRj1 ) p2(1-p2)k-1, poiché il testimone sono coppie di numeri disgiunte (poiché la somma di ciascuna coppia èv). È facile verificare cheαsia una costante in(0,1)indipendente dal valore dik. Come tale, deve essere, con alta probabilità, chevabbia un singolo testimone in uno dei campioniR1,...,Rm. Come tale, calcolando i due polinomi associati a tale campione, come descritto sopra, inα=(k1)p2(1p2)k1vα(0,1)kvR1,,RmO ( n log n ) tempo (per campione), usando FFT, possiamo decidere in tempo costante.O(nlogn)

  4. Abbiamo quasi finito. Calcola i campioni casuali sopra riportati per risoluzioni i = 1 , , lg n . Per ciascuna di tali risoluzioni calcolare i campioni casuali e i polinomi associati. Inoltre, calcolare il polinomio associato per A e B . Questa preelaborazione richiede ingenuamente O ( n log 3 n ) , ma sospetto che essere leggermente più attento a un fattore log n debba essere rimovibile.i=1,,lgnABO(nlog3n)logn

  5. L'algoritmo: per ogni valore v , calcola quanti testimoni, diciamo k, ha in tempo costante, consultando il polinomio Q A ( x ) P B ( x ) . Quindi, vai alla struttura dati pertinente per i ( k ) . Quindi trova il campione casuale che lo ha come singolo testimone ed estrae la coppia che è questo testimone in tempo costante.vQA(x)PB(x)i(k)

  6. Stranamente, il tempo di preelaborazione è O ( n log 3 n ) , ma il tempo previsto per trovare il testimone richiede solo O ( n ) tempo, poiché si può interrompere la ricerca non appena si trova un testimone. Ciò suggerisce che questo algoritmo dovrebbe essere migliorabile. In particolare, per i ( k ) lg n , i polinomi generati sono molto scarsi e si dovrebbe essere in grado di eseguire FFT molto più velocemente.O(nlog3n)O(n)i(k)lgn


12

Ok, mi sto trattenendo dal momento che davvero Sariel dovrebbe ottenere credito per una risposta, ma sono stanco di aspettare, quindi ecco il mio taglio su un algoritmo random lineare quasi lineare.

  • Scegliendo campioni di n ( 1 - ϵ ) i punti, i = 0 , 1 , ... , è possibile ottenere un numero logaritmico di sottoproblemi in modo tale che ogni somma dal problema originale abbia una probabilità costante di essere rappresentata in modo univoco in uno dei sottoproblemi ( quello in cui il campionamento riduce il numero previsto di rappresentazioni a quasi 1).n(1ϵ)ii=0,1,
  • Ripetendo il processo di campionamento un numero logaritmico di volte è possibile ottenere tutte le somme per avere rappresentazioni uniche con alta probabilità.
  • Se si dispone di una partizione di A e B in due sottoinsiemi, quindi moltiplicando i numeri per quattro, aggiungendo 2 ai numeri in uno dei sottoinsiemi in A e aggiungendo 1 ai numeri in uno dei sottoinsiemi in B , è possibile letto dai valori mod-4 delle somme ottenibili da cui dei due sottoinsiemi provengono le loro somme.ABAB
  • Ripetendo il processo di partizione un numero logaritmico di volte, utilizzando ogni posizione di bit delle rappresentazioni binarie dei valori o degli indici nei sottoproblemi per selezionare le partizioni in ogni passaggio, è possibile identificare in modo univoco i riepiloghi di ogni somma rappresentata in modo univoco.

Questo fa saltare il tempo di esecuzione di tre fattori logaritmici; probabilmente ciò può essere ridotto.


3
Ah ah;). Ero nel mezzo di scriverlo, e poi sono andato a pranzo ...
Sariel Har-Peled,

5

Questa risposta fornisce un determinstic O ( n p o l y l o g n )  algoritmo.O(n polylogn)

It appears that Sariel and David's algorithm can be derandomized through an approach similar to this paper. [2] While going through the process I found there is a more general problem that implies this result.

The kk-reconstruction problem

There are hidden sets S1,,Sn{1,,m}S1,,Sn{1,,m}, we have two oracles SizeSize and SumSum that take a query set QQ.

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

The kk-reconstruction problem asks one to find nn subsets S1,,SnS1,,Sn such that SiSiSiSi and |Si|=min(k,|Si|)|Si|=min(k,|Si|) for all ii.

Let ff be the running time of calling the oracles, and assume f=Ω(m+n)f=Ω(m+n), then one can find the sets in deterministic O(fklogn polylog(m))O(fklogn polylog(m)) time. [1]

Now we can reduce the finding witness problem to 11-reconstruction problem. Here S1,,S2n{1,,2n}S1,,S2n{1,,2n} where Si={a|a+b=i,aA,bB}Si={a|a+b=i,aA,bB}.

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

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

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.