ค้นหาพยานด้วยจำนวน minkowski จำนวนเต็ม


16

ให้และเป็นส่วนย่อยของ{ 0 , ... , n } เราสนใจที่จะหาผลรวม Minkowski A + B = { a + b | , B }BAB{0,,n}  A+B={a+b | aA,bB}

χ X : { 0 , , 2 n } { 0 , 1 }χX:{0,,2n}{0,1}เป็นฟังก์ชันเฉพาะของ XXถ้า χ X ( x ) = { 1  ถ้า  x X 0 เป็น อย่างอื่น

χX(x)={1 if xX0 otherwise

Let fเป็นบิดที่ไม่ต่อเนื่องของχχAและχ BχBแล้วx + BxA+Bและถ้าหาก0 ดังนั้นสามารถคำนวณได้ในเวลาO ( n log n )โดยการแยก convolution ผ่าน FFTf ( x ) > 0 A + Bf(x)>0A+BO(nlogn)

บางครั้งก็เป็นสิ่งสำคัญที่จะหาคู่ที่เกิดขึ้นจริงและBว่าจำนวนเงินที่จะx จะเรียกว่าเป็นพยานของxถ้ามีอยู่Bดังกล่าวว่า+ B = x ฟังก์ชั่นเรียกว่าฟังก์ชั่นพยานถ้าเป็นพยานของxaAbBxaAxbBa+b=xw : A + B Aw:A+BAw ( x ) xw(x)x

เป็นไปได้หรือไม่ที่จะคำนวณฟังก์ชั่นพยานในเวลาO ( n log n )O(nlogn) ?


3
O ( n p o l y l o g n )O(npolylogn)ไม่ยากโดยเฉพาะ
Sariel Har-Peled

2
คุณสามารถใช้การค้นหาแบบไบนารี เช่นพาร์ทิชันเป็นสองประมาณเท่ากับขนาดชุดL , RและคำนวณL + BและR + B ; ตรวจสอบว่ามีxใดบ้าง และการชดเชย นี้คุณจะได้รับสิ่งที่ต้องการO ( n LG 2 n ) AAL,ARAL+BAR+BxO(nlg2n)
DW

@DW นี้สามารถหาพยานหาเดียวxxแต่เราต้องการพยานองค์ประกอบในแต่ละ+ B (ถ้อยคำของฉันดูเหมือนจะไม่ชัดเจนดังนั้นฉันเพิ่งปรับปรุงคำถาม)A+B
Chao Xu

แต่คุณสนใจวิธีแก้ปัญหา O (n polylog n) หรือไม่
Sariel Har-Peled

@ SarielHar-Peled ใช่ฉันสนใจในอัลกอริทึมO ( n p o l y l o g n )O(npolylogn)ด้วย
Chao Xu

คำตอบ:


11

ที่นี่ฉันกำลังอธิบายวิธีรับO ( n p o l y l o g n )O(npolylogn)เวลาทำงานแบบสุ่ม เราต้องการลำดับการสังเกต:

  1. พยานของค่าโวลต์เป็นคู่ของตัวเลข( , ) × Bดังกล่าวว่า+ B = V ให้P A ( x ) = i A x iและP B ( x )ถูกกำหนดแบบอะนาล็อก สังเกตว่าสัมประสิทธิ์ของx vในP A ( x ) P B ( xv( a , b ) A × Ba+b=vPA(x)=iAxiPB(x)xv)คือหมายเลขของพยานมีสำหรับค่าโวลต์PA(x)PB(x)v

  2. สมมติวีมีพยานเดียว( , ) × BและพิจารณาพหุนามQ ( x ) = Σ ฉันฉัน* xฉัน เห็นได้ชัดว่าสัมประสิทธิ์ของx vในQ A ( x ) P B ( x )คือaและตอนนี้เรารู้คู่( a , v - a ) แล้วv(a,b)A×BQA(x)=iAixixvQA(x)PB(x)a(a,va) และเราทำเสร็จแล้ว

  3. ดังนั้นเราจะทำกับกรณีที่มีพยานคนเดียว เพื่อพิจารณากรณีที่โวลต์มีkพยาน( 1 , 1 ) , ... , ( k , k ) ให้ฉัน( k ) = lg vk(a1,b1),,(ak,bk)k สังเกตที่2ฉัน(k)-1i(k)=lgkk2ฉัน( k ) ถัดไปให้Rj=(Aj,Bj), สำหรับj=1,,m, สำหรับm=O(logn)เป็นตัวอย่างแบบสุ่มเช่นว่าแต่ละองค์ประกอบของAจะถูกเลือกเข้าสู่ Aiด้วยความน่าจะเป็นp=1/2ฉัน( k ) ความน่าจะเป็นที่v2i(k)1k2i(k)Rj=(Aj,Bj)j=1,,mm=O(logn)AAip=1/2i(k)vมีพยานเดี่ยวในR jคือα = ( kRj1 ) p2(1-p2)k-1เนื่องจากพยานเป็นคู่กันของตัวเลข (เนื่องจากผลรวมของแต่ละคู่คือv) มันเป็นเรื่องง่ายที่จะตรวจสอบว่าαเป็นค่าคงที่ใน(0,1)เป็นอิสระจากค่าของk เช่นนี้มันจะต้องมีความน่าจะเป็นสูงที่โวลต์มีพยานเพียงครั้งเดียวในหนึ่งของกลุ่มตัวอย่างR1,...,Rเมตร ดังนั้นโดยการคำนวณชื่อพหุนามทั้งสองที่เกี่ยวข้องกับตัวอย่างดังที่อธิบายไว้ข้างต้นในα=(k1)p2(1p2)k1vα(0,1)kvR1,,Rmเวลา O ( n log n ) (ต่อตัวอย่าง) โดยใช้ FFT เราสามารถตัดสินใจได้ในเวลาคงที่O(nlogn)

  4. เราเกือบเสร็จแล้ว คำนวณข้างต้นตัวอย่างที่สุ่มสำหรับมติฉัน= 1 , ... , LG n สำหรับการแก้ปัญหาแต่ละครั้งให้คำนวณตัวอย่างสุ่มและพหุนามที่เกี่ยวข้อง นอกจากนี้คำนวณพหุนามที่เกี่ยวข้องสำหรับการและB การประมวลผลล่วงหน้าอย่างไร้เดียงสาใช้O ( n log 3 n )แต่ฉันสงสัยว่าการระมัดระวังตัวเล็กน้อยของlog n factor ควรถอดออกได้i=1,,lgnABO(nlog3n)logn

  5. The algorithm: For every value vv, compute how many witness, say k, it has in constant time, by consulting the polynomial QA(x)PB(x)QA(x)PB(x). Next, go to the relevant data-structure for i(k)i(k). Then, it finds the random sample that has it as a single witness, and it extract the pair that is this witness in constant time.

  6. Strangely enough, the preprocessing time is O(nlog3n)O(nlog3n), but the expected time to find the witness themselves take only O(n)O(n) time, since one can stop the search as soon as one find a witness. This suggests that this algorithm should be improveable. In particular, for i(k)lgni(k)lgn, the polynomials generated are very sparse, and one should be able to do much faster FFT.


12

Ok, I've been holding off since really Sariel should get credit for an answer, but I'm tired of waiting, so here is my cut at a near-linear randomized algorithm.

  • By choosing samples of n(1ϵ)in(1ϵ)i points, i=0,1,i=0,1,, you can get a logarithmic number of subproblems such that each sum from the original problem has constant probability of being represented uniquely in one of the subproblems (the one where the sampling cuts down the expected number of representations to near 1).
  • By repeating the sampling process a logarithmic number of times you can get all sums to have unique representations with high probability.
  • If you have a partition of AA and BB into two subsets, then by multiplying the numbers by four, adding 2 to the numbers in one of the subsets in AA, and adding 1 to the numbers in one of the subsets in BB, you can read off from the mod-4 values of the achievable sums which of the two subsets their summands come from.
  • By repeating the partition process a logarithmic number of times, using each bit position of the binary representations of the values or indices in the subproblems to select the partitions in each step, you can uniquely identify the summands of every uniquely-represented sum.

This blows up the running time by three logarithmic factors; probably that can be reduced.


3
Ha ha ;). I was in the middle of writing it, and then went to lunch...
Sariel Har-Peled

5

This answer gives a determinstic O(n polylogn) algorithm.

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 k-reconstruction problem

There are hidden sets S1,,Sn{1,,m}, we have two oracles Size and Sum that take a query set Q.

  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)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.