Tamsayıların minkowski toplamında tanık bulma


16

ve alt kümeleri olsun . Minkowski toplamını A + B = \ {a + b ~ | ~ a \ 'da A, b \' de B \} bulmakla ilgileniyoruz .AB{0,,n}A+B={a+b | aA,bB}

χX:{0,,2n}{0,1} karakteristik bir fonksiyonudur iseX

χX(x)={1 if xX0 otherwise

Let ayrı konvolüsyon olmak ve , daha sonra , ancak ve ancak . Bu nedenle , FFT yoluyla ayrık evrişim ile zamanında hesaplanabilir .fχAχBxA+Bf(x)>0A+BO(nlogn)

Bazen gerçek çifti öğrenmek için önemlidir ve buna meblağlar . olarak adlandırılan bir tanık ait mevcut ise, , öyle ki . Bir fonksiyonu bir adlandırılır şahit fonksiyonu ise bir tanık .aAbBxaAxbBa+b=xw:A+BAw(x)x

zamanında bir tanık fonksiyonunun hesaplanması mümkün müdür ?O(nlogn)


3
O(npolylogn) özellikle zor değildir.
Sariel Har-Peled

2
İkili aramayı kullanabilirsiniz. örneğin, bölüm A iki kabaca eşit büyüklükte-kümeler halinde AL,AR , ve işlem AL+B ve AR+B ; bu hangisinde olduğunu kontrol edin x; ve özyineleme. Bu size gibi bir şey verecektir O(nlg2n).
DW

@DW Bu yalnızca tek bir için tanık bulabilir , ancak A + B'deki her öğe için bir tanık istiyoruz . (ifadelerim net görünmüyor, bu yüzden soruyu güncelledim)xA+B
Chao Xu

Ama O (n polylog n) çözümü ile ilgileniyor musunuz?
Sariel Har-Peled

@ SarielHar-Peled evet, ben de deterministik algoritması ile ilgileniyorum . O(npolylogn)
Chao Xu

Yanıtlar:


11

Burada rasgele çalışma süresinin nasıl alınacağını açıklıyorum . Bir dizi gözleme ihtiyacımız var:O(npolylogn)

  1. Bir tanık bir değer arasında bir sayı çifti ( a , b ) A x B , öyle ki , bir + b = v . Let P A ( x ) = Σ i bir x i ve p B ( x ) benzer şekilde tanımlanabilir. Dikkate bu katsayısı x v içinde P A ( x ) * P B ( xv(a,b)A×Ba+b=vPA(x)=iAxiPB(x)xvv değeri için tanık sayısıdır.PA(x)PB(x)v

  2. Varsayalım tek tanık sahiptir ( bir , b ) bir x B ve polinom dikkate S A ( x ) = Σ i bir I * x i . Açıktır ki, katsayısı x v içinde Q, A ( x ) * P B ( x ) olan bir , ve bu şekilde artık çift biliyoruz ( a , v - bir )v(a,b)A×BQA(x)=iAixixvQA(x)PB(x)a(a,va) ve işimiz bitti.

  3. Yani, tek bir tanığın olduğu dava ile işimiz bitti. Yani k tanıklarına ( a 1 , b 1 ) , , ( a k , b k ) sahip olduğunu düşünün . Let i ( k ) = lg vk(a1,b1),,(ak,bk). 2i(k)-1değerine dikkat edini(k)=lgk . Daha sonra, izinRj=(AJ,Bj)için,j=1,...,m, içinm=O(logn)her bir elemanı, bu rastgele örnek olmakAiçine seçilmiş olan Aiolasılığı ilep=1/2 i ( k ) . Volasılığı2i(k)1k2i(k)Rj=(Aj,Bj)j=1,,mm=O(logn)AAip=1/2i(k)vsahip tek bir tanık olan α = ( kRj, çünkü tanık ayrık sayı çifti (her çiftin toplamıv olduğundan). A'nınkdeğerinden bağımsız olarak(0,1) 'de bir sabitolduğunu doğrulamak kolaydır. Bu nedenle, yüksek bir olasılıkla, bu olmalıdırvörneklerinin birinde tek bir tanık sahipolan R1,...,R,m. Bu haliyle, yukarıda tarif edildiği gibi bu örnekle ilişkili iki polinomun hesaplanmasıyla,α=(k1)p2(1p2)k1vα(0,1)kvR1,,Rm süresi (numune başına), FFT kullanarak, buna sabit zamanda karar verebiliriz.O(nlogn)

  4. Neredeyse bitti. Çözünürlükler için rasgele numune üzerinde hesaplamak . Bu tür her bir çözünürlük için rastgele örnekleri ve ilişkili polinomları hesaplayın. Ayrıca, A ve B için ilişkili polinomu hesaplayın . Bu ön işleme saf bir şekilde O ( n log 3 n ) alır , ancak biraz daha dikkatli olmanın bir log n faktörünün çıkarılabilir olması gerektiğinden şüpheleniyorum .i=1,,lgnABO(nlog3n)logn

  5. Algoritma: Her değeri için , polinom Q A ( x ) P B ( x ) danışarak kaç tanığın, yani k sabit zamana sahip olduğunu hesaplayın . Ardından, i ( k ) için ilgili veri yapısına gidin . Daha sonra, onu tek bir tanık olarak içeren rastgele örneği bulur ve bu tanık olan çifti sabit zamanda çıkarır.vQA(x)PB(x)i(k)

  6. Garip bir şekilde, ön işleme süresi , ancak tanığın kendisinin bulunması için beklenen süre sadece O ( n ) zaman alır, çünkü kişi tanık bulur bulmaz aramayı durdurabilir. Bu, bu algoritmanın geliştirilebilir olması gerektiğini gösterir. Özellikle, için i ( k ) « lg n , oluşturulan polinomları çok azdır ve bir çok daha hızlı FFT yapmak mümkün olmalıdır.O(nlog3n)O(n)i(k)lgn


12

Tamam, gerçekten Sariel'in bir cevap için kredi alması gerektiğinden uzak duruyorum, ama beklemekten yoruldum, işte benim doğrusalımdaki rasgele bir algoritmada benim kesimim.

  • noktalarının örneklerini seçerek , i = 0 , 1 , , orijinal problemdeki her bir toplamın alt problemlerden birinde benzersiz bir şekilde temsil edilme olasılığına sahip olacak şekilde logaritmik bir dizi alt sorun elde edebilirsiniz ( örneklemenin beklenen temsil sayısını yaklaşık 1'e düşürdüğü örnek).n(1ϵ)ii=0,1,
  • Örnekleme işlemini logaritmik sayıda tekrarlayarak, tüm toplamların yüksek olasılıkla benzersiz temsiller elde etmesini sağlayabilirsiniz.
  • Eğer bir bölüm varsa ve B iki alt-grup halinde dörde sayının çarpımı kümelerden biri numaralara 2 ekleyerek, daha sonra A ve kümelerden biri numaralar 1 ekleyerek B yapabilirsiniz iki alt kümeden hangilerinin geldiği ulaşılabilir toplamların mod-4 değerlerinden okur.ABAB
  • Her adımdaki bölümleri seçmek için alt problemlerdeki değerlerin veya endekslerin ikili bitlerinin her bit konumunu kullanarak bölümleme işlemini logaritmik sayıda tekrarlayarak, benzersiz olarak temsil edilen her bir toplamın toplamlarını tanımlayabilirsiniz.

Bu çalışma süresini üç logaritmik faktörle havaya uçurur; muhtemelen bu azaltılabilir.


3
Ha ha;).
Yazmanın

5

Bu cevap determinstik bir algoritması verir.O(n polylogn)

Görünüşe göre Sariel ve David'in algoritması bu yazıda benzer bir yaklaşımla derandomize edilebilir . [2] Süreç boyunca ilerlerken bu sonucu ima eden daha genel bir sorun olduğunu gördüm.

-reconstruction sorunk

Orada gizli setleri , iki kahinler var S i z e ve S u m bir sorgu kümesi almasını Q .S1,,Sn{1,,m}SizeSumQ

  1. her kavşağın boyutunudöndürür ( | S 1Q | , | S 2Q | , , | S nQ | ) .Size(Q)(|S1Q|,|S2Q|,,|SnQ|)
  2. her kavşaktaki elemanların toplamınıdöndürür ( s S 1Q s , s S 2Q s , , s S nQ s ) .Sum(Q)(sS1Qs,sS2Qs,,sSnQs)

-reconstruction sorun bulmak için bir sorar n alt kümeleri S ' 1 , ... , S ' n öyle ki S ' iS i ve | S i | = min ( k , | S i | ) tüm i için .knS1,,SnSiSi|Si|=min(k,|Si|)i

Izin vermek oracles çağırmak için çalışma süresi ve f = Ω ( m + n ) varsayalım , o zaman setleri deterministik O ( f k log n p o l y l o g ( m ) ) zaman bulabilirsiniz. [1]ff=Ω(m+n)O(fklogn polylog(m))

Şimdi, tanık bulma problemini imar problemine indirgeyebiliriz. Burada S 1 , , S 2 n{ 1 , , 2 n } burada S i = { a | a + b = i , a A , b B } .1S1,,S2n{1,,2n}Si={a|a+b=i,aA,bB}

Polinomları tanımlayın , I Q ( x ) = i Q i x iχQ(x)=iQxiIQ(x)=iQixi

Katsayısı içinde χ Q χ B ( x ) olduğu | S iQ | ve I Q χ B ( x ) olan Σ s S iS s . Böylece, kehanetler çağrı başına O ( n log n ) zaman alır.xiχQχB(x)|SiQ|IQχB(x)sSiQsO(nlogn)

Bu bize zaman deterministik algoritması verir.O(n polylog(n))

[1] Yonatan Aumann, Moshe Lewenstein, Noa Lewenstein, Dekel Tsur: Soyma yoluyla tanıkları bulmak . Algoritmalarda ACM İşlemleri 7 (2): 24 (2011)

[2] Noga Alon, Moni Naor: Derandomizasyon, Boole matris çarpımının tanıkları ve mükemmel hash fonksiyonlarının inşası . Algoritma 16 (4-5) (1996)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.