Tìm kiếm nhân chứng trong tổng số chồn


16

Hãy AB là tập con của {0,,n} . Chúng tôi quan tâm đến việc tìm ra tổng số Minkowski A+B={a+b | aA,bB} .

χX:{0,,2n}{0,1} là một chức năng đặc trưng củaX nếu

χX(x)={1 if xX0 otherwise

Gọi f là tích chập riêng của χAχB , sau đó xA+B khi và chỉ khi f(x)>0 . Do đó A+B có thể được tính theo thời gian O(nlogn) bằng cách tích chập riêng qua FFT.

Đôi khi điều quan trọng là tìm ra các cặp thực tế aAbB rằng khoản tiền để x . aA được gọi là nhân chứng của x , nếu tồn tại bB sao cho a+b=x . Hàm w:A+BA được gọi là hàm nhân chứng nếu w(x) là nhân chứng của x .

Có thể tính toán một hàm nhân chứng trong thời gian O(nlogn) không?


3
O(npolylogn) không đặc biệt khó.
Sariel Har-Peled

2
Bạn có thể sử dụng tìm kiếm nhị phân. ví dụ: phân vùng A thành hai bộ có kích thước gần bằng nhau AL,AR và tính AL+BAR+B ; kiểm tra xem cái nào trong số đó x; và tái diễn. Điều này sẽ giúp bạn có một cái gì đó như O(nlg2n) .
DW

@DW này chỉ có thể tìm thấy một nhân chứng cho một đơn x , nhưng chúng tôi muốn có một nhân chứng cho mỗi phần tử trong A+B . (từ ngữ của tôi dường như không rõ ràng, vì vậy tôi chỉ cập nhật câu hỏi)
Chao Xu

Nhưng bạn có quan tâm đến giải pháp O (n polylog n) không?
Sariel Har-Peled

@ SarielHar-Peled có, tôi cũng quan tâm đến thuật toán xác định O(npolylogn) .
Chao Xu

Câu trả lời:


11

Ở đây tôi đang giải thích làm thế nào để có được thời gian chạy ngẫu nhiên . Chúng ta cần một chuỗi các quan sát:O(npolylogn)

  1. Một nhân chứng của một giá trị là một cặp số ( một , b ) A × B như vậy mà một + b = v . Hãy P Một ( x ) = Σ i A x iP B ( x ) được định nghĩa Tương tự. Nhận thấy rằng hệ số x v trong P Một ( x ) * P B ( xv(a,b)A×Ba+b=vPA(x)=iAxiPB(x)xv là số lượng nhân chứng có cho giá trị v .PA(x)PB(x)v

  2. Giả sử có một nhân chứng duy nhất ( một , b ) A × B , và xem xét các đa thức Q Một ( x ) = Σ i A i * x i . Rõ ràng, hệ số của x v trong Q Một ( x ) * P B ( x )một , và như vậy bây giờ chúng ta biết được cặp ( một , v - một )v(a,b)A×BQA(x)=iAixixvQA(x)PB(x)a(a,va) và chúng ta đã xong.

  3. Vì vậy, chúng tôi được thực hiện với trường hợp có một nhân chứng duy nhất. Vì vậy, xem xét các trường hợp đó k nhân chứng ( một 1 , b 1 ) , ... , ( một k , b k ) . Hãy để tôi ( k ) = lg vk(a1,b1),,(ak,bk). Quan sát rằng2i(k)-1i(k)=lgk . Tiếp theo, đặtRj=(Aj,Bj), vớij=1,Lọ,m, chom=O(logn)là các mẫu ngẫu nhiên, sao cho mỗi phần tử củaAđược chọn vào Aivới xác suấtp=1/2 i ( k ) . Xác suất màv2i(k)1k2i(k)Rj=(Aj,Bj)j=1,,mm=O(logn)AAip=1/2i(k)vcó một nhân chứng duy nhất trong là , vì nhân chứng là các cặp số khác nhau (vì tổng của mỗi số cặp là ). Thật dễ dàng để xác minh rằng là một hằng số trong không phụ thuộc vào giá trị của . Như vậy, với xác suất cao, có một nhân chứng duy nhất trong một trong các mẫu . Như vậy, bằng cách tính hai đa thức liên quan đến mẫu đó, như được mô tả ở trên, trong thời gian (trên mỗi mẫu), bằng cách sử dụng FFT, chúng ta có thể quyết định điều này trong thời gian không đổi.Rjvα(0,1)kvR1,Lôi,RmO(nlogn)α=(k1)p2(1p2)k1vα(0,1)kvR1,,RmO(nlogn)

  4. Chúng ta đang gần hoàn tất. Tính các mẫu ngẫu nhiên ở trên cho độ phân giải . Đối với mỗi độ phân giải như vậy, tính toán các mẫu ngẫu nhiên và đa thức liên quan. Ngoài ra, tính toán đa thức liên quan cho và . Quá trình tiền xử lý này ngây thơ mất , nhưng tôi nghi ngờ rằng cẩn thận hơn một chút nên yếu tố nên có thể tháo rời.Một B O ( n log 3 n ) log ni=1,,lgnABO(nlog3n)logn

  5. Thuật toán: Với mỗi giá trị , hãy tính có bao nhiêu nhân chứng, giả sử k, nó có thời gian không đổi, bằng cách tham khảo đa thức . Tiếp theo, đi đến cấu trúc dữ liệu có liên quan cho . Sau đó, nó tìm thấy mẫu ngẫu nhiên có nó như một nhân chứng duy nhất và nó trích xuất cặp đó là nhân chứng này trong thời gian không đổi.Q Một ( x ) * P B ( x ) i ( k )vQA(x)PB(x)i(k)

  6. Thật kỳ lạ, thời gian tiền xử lý là , nhưng thời gian dự kiến ​​để tìm nhân chứng chỉ mất thời gian , vì người ta có thể dừng tìm kiếm ngay khi tìm thấy nhân chứng. Điều này cho thấy rằng thuật toán này nên được ứng biến. Đặc biệt, đối với , các đa thức được tạo ra rất thưa thớt và người ta có thể thực hiện FFT nhanh hơn nhiều.O ( n ) i ( k ) lg nO(nlog3n)O(n)i(k)lgn


12

Ok, tôi đã trì hoãn vì thực sự Sariel sẽ nhận được tín dụng cho câu trả lời, nhưng tôi mệt mỏi vì phải chờ đợi, vì vậy đây là phần cắt của tôi ở thuật toán ngẫu nhiên gần tuyến tính.

  • Bằng cách chọn các mẫu của điểm, , bạn có thể nhận được số lượng các phép toán con logarit sao cho mỗi tổng từ bài toán ban đầu có xác suất không đổi được biểu diễn duy nhất trong một các bài toán con (một trong đó việc lấy mẫu cắt giảm số lượng biểu diễn dự kiến ​​xuống gần 1). i = 0 , 1 , Mạnhn(1ϵ)ii=0,1,
  • Bằng cách lặp lại quy trình lấy mẫu, số lần logarit bạn có thể nhận được tất cả các khoản tiền để có các biểu diễn duy nhất với xác suất cao.
  • Nếu bạn có một phân vùng và thành hai tập con, thì bằng cách nhân số đó với bốn, thêm 2 vào các số trong một trong các tập con trong và thêm 1 vào các số trong một trong các tập con trong , bạn có thể đọc từ các giá trị mod-4 của các khoản tiền có thể đạt được, trong đó hai tập con mà triệu hồi của chúng đến từ.B A BABAB
  • Bằng cách lặp lại quá trình phân vùng một số lần logarit, sử dụng từng vị trí bit của biểu diễn nhị phân của các giá trị hoặc chỉ mục trong các bài toán con để chọn các phân vùng trong mỗi bước, bạn có thể xác định duy nhất các triệu hồi của mỗi tổng đại diện duy nhất.

Điều này làm nổ tung thời gian chạy bởi ba yếu tố logarit; có lẽ điều đó có thể giảm đi


3
Ha ha;). Tôi đang ở giữa viết nó, và sau đó đi ăn trưa ...
Sariel Har-Peled

5

Câu trả lời này đưa ra thuật toán xác định .O(n polylogn)

Dường như thuật toán của Sariel và David có thể được tạo ra từ một cách tiếp cận tương tự như bài báo này . [2] Trong khi trải qua quá trình tôi thấy có một vấn đề tổng quát hơn bao hàm kết quả này.

Các vấn đề -reconstructionk

Có được ẩn bộ , chúng ta có hai thầy mo và mà phải mất một bộ truy vấn .S i z e S u m QS1,,Sn{1,,m}SizeSumQ

  1. ( | S 1Q | , | S 2Q | , ... , | S nQ | )Size(Q) trả về , kích thước của mỗi giao lộ.(|S1Q|,|S2Q|,,|SnQ|)
  2. ( Σ s S 1Q s , Σ s S 2Q s , ... , Σ s S nQ s )Sum(Q) lợi nhuận , các tổng các phần tử trong mỗi giao điểm.(sS1Qs,sS2Qs,,sSnQs)

Các vấn đề -reconstruction hỏi một để tìm tập con như vậy mà và cho tất cả .n S ' 1 , ... , S ' n S ' iS i | S ' i | = phút ( k , | S i | )knS1,,SnSiSi|Si|=min(k,|Si|)i

Gọi là thời gian chạy của các phép lạ và giả sử , sau đó người ta có thể tìm thấy các tập hợp trong thời gian xác định . [1]f = Ω ( m + n ) O ( f k log n p o l y l o g ( m ) )ff=Ω(m+n)O(fklogn polylog(m))

Bây giờ chúng ta có thể giảm vấn đề tìm kiếm nhân chứng thành vấn đề tái cấu trúc . Ở đây trong đó .1S1,,S2n{1,,2n}Si={a|a+b=i,aA,bB}

Xác định đa thức ,χQ(x)=iQxiIQ(x)=iQixi

Hệ số cho trong làvà trong là . Do đó, các nhà tiên tri mất thời gian cho mỗi cuộc gọi.χ Q χ B ( x ) | S iQ | Tôi Q χ B ( x ) Σ s S iQ s O ( n log n )xiχQχB(x)|SiQ|IQχB(x)sSiQsO(nlogn)

Điều này cho chúng ta một thuật toán xác định thời gian .O(n polylog(n))

[1] Yonatan Aumann, Moshe Lewenstein, Noa Lewenstein, Dekel Tsur: Tìm kiếm nhân chứng bằng cách lột da . Giao dịch ACM trên các thuật toán 7 (2): 24 (2011)

[2] Noga Alon, Moni Naor: Derandomization, nhân chứng cho phép nhân ma trận Boolean và xây dựng các hàm băm hoàn hảo . Thuật toán 16 (4-5) (1996)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.