Tính tổng các đa thức thưa thớt bình phương trong thời gian O (n log n)?


18

Giả sử chúng ta có đa thức độ nhiều nhất là , , sao cho tổng số hệ số khác không là (nghĩa là đa thức là thưa thớt). Tôi quan tâm đến một thuật toán hiệu quả để tính toán đa thức: n n > m np1,...,pmnn>mn

ipi(x)2

Vì đa thức này có độ lớn nhất là , cả kích thước đầu vào và đầu ra là . Trong trường hợp chúng ta có thể tính kết quả bằng cách sử dụng FFT trong thời gian . Điều này có thể được thực hiện cho bất kỳ ? Nếu nó có bất kỳ sự khác biệt nào, tôi quan tâm đến trường hợp đặc biệt trong đó các hệ số là 0 và 1, và việc tính toán nên được thực hiện trên các số nguyên.O ( n ) m = 1 O ( n log n ) m < n2nO(n)m=1O(nlogn)m<n

Cập nhật. Tôi nhận ra rằng một giải pháp nhanh cho những điều trên sẽ bao hàm những tiến bộ trong nhân ma trận nhanh. Cụ thể, nếu thì chúng ta có thể đọc được là hệ số của trong . Do đó, tính toán tương ứng với tính toán một sản phẩm bên ngoài gồm hai vectơ và tính toán tổng tương ứng với tính toán một sản phẩm ma trận. Nếu có một giải pháp sử dụng thời gian để tính toán sau đó chúng ta có thể nhân hai -by- ma trận trong thời gian một i k b k j x i + n j p k ( x ) 2 p k ( x ) 2 k p k ( x ) 2 f (pk(x)=i=1naikxi+j=1nbkjxnjaikbkjxi+njpk(x)2pk(x)2kpk(x)2f(n,m)kpk(x)2nnf(n2,n), có nghĩa là cho sẽ đòi hỏi một bước đột phá lớn. Nhưng , trong đó là số mũ hiện tại của phép nhân ma trận, có thể có thể. Ý tưởng, có ai không?m n f ( n , m ) = n ω / 2 ωf(n,m)=O(nlogn)mnf(n,m)=nω/2ω


1
Chào Rasmus. Tôi nghĩ rằng bạn có ý định này để đi trên trang web chính. Đây là trang web meta, cho câu hỏi về trang web.
Suresh Venkat

Câu trả lời:


3

Bình phương một đa thức với khác không hệ số đòi hỏi thời gian O ( x 2 i ) sử dụng bình thường hạn bởi hạn nhân, vì vậy đây nên được ưa thích với FFT cho những đa thức nơi x i < xiO(xi2) . NếuΣixi=n, sau đó số lượng các đa thức vớixilớn hơnxi<nlognixi=nxiO(nlogn, và những sẽ mất thời gianO(n 3 / 2 (logn) 1 / 2 )hình vuông và kết hợp (như sẽ các đa thức còn lại). Đây là một sự cải tiến so với rõ ràngO(mnlogn)ràng buộc khimΘ(O(n/logn)O(n3/2(logn)1/2)O(mnlogn)m.Θ(n/logn)


1
Điều tôi quan tâm là một phương pháp tính tổng mà không tính toán từng thuật ngữ. Thực hiện FFT hoặc nhân theo kỳ hạn cho mỗi sản phẩm sẽ quá chậm đối với ứng dụng tôi có trong tâm trí.
Rasmus Pagh

2

Không phải là một câu trả lời đầy đủ nhưng có thể hữu ích.

Hãy cẩn thận: Nó chỉ hoạt động tốt nếu các hỗ trợ của nhỏ.pi2

Với đa thức , hãy để S q = { i a i0 } là hỗ trợ của nó và s q = | S q | là kích thước của sự hỗ trợ. Hầu hết các p tôi sẽ thưa thớt, tức là sẽ có một hỗ trợ nhỏ.q=a0+a1x++anxnSq={iai0}sq=|Sq|pi

Có các thuật toán để nhân các đa thức thưa thớt b theo thời gian tuyến tính theo kích thước của sự hỗ trợ của sản phẩm a b , xem ví dụ: http://arxiv.org/abs/0901.4323abab

Hỗ trợ của là (chứa trong) S a + S b , trong đó tổng của hai tập ST được định nghĩa là S + T : = { s + t s S , t T } . Nếu tổng số hỗ trợ của tất cả các sản phẩm là nhỏ, thì tổng cộng tuyến tính là n , thì người ta chỉ có thể tính toán các sản phẩm và cộng tất cả các đơn thức.abSa+SbSTS+T:={s+tsS,tT}n

Tuy nhiên nó là rất dễ dàng để tìm đa thức b như vậy mà kích thước của sự hỗ trợ của một b là bậc hai trong các kích thước của sự hỗ trợ của mộtb . Trong ứng dụng cụ thể này, chúng tôi là đa thức bình phương. Vậy câu hỏi là cách lớn hơn nhiều S + S so với S . Các biện pháp thông thường cho điều này là số nhân đôi | S + S | / | S | . Có những bộ với số nhân đôi không giới hạn. Nhưng nếu bạn có thể loại trừ các bộ có số lượng nhân đôi lớn là hỗ trợ của p iabababS+SS|S+S|/|S|pi, sau đó bạn có thể có được một thuật toán nhanh cho vấn đề của bạn.


1
Mặc dù tôi không quen thuộc với tổ hợp cộng gộp, tôi nghĩ rằng các tiến trình số học tổng quát và định lý Freiman-Ruzsa là về các tập hợp có nhân đôi nhỏ .
Tsuyoshi Ito

@Tsuyoshi: Bạn nói đúng, tôi sẽ chỉnh sửa câu trả lời của mình. Tuy nhiên, có những GAP với hằng số nhân đôi lớn.
5501

Cá nhân tôi không nghĩ rằng phương pháp này có triển vọng. Một hàm ý (khá không chính xác) của định lý Freiman-Ruzsa là | S + S | / | S | chỉ nhỏ trong các trường hợp đặc biệt, và do đó, một phần Nếu bạn có thể loại trừ các tập hợp có số nhân đôi lớn hơn vì các hỗ trợ của p_iiên là rất lớn nếu . Tuy nhiên, như tôi đã nói, tôi không quen thuộc với tổ hợp phụ gia, và bạn nên lấy lời tôi nói với nó bằng một hạt muối.
Tsuyoshi Ito

Tất nhiên nó chỉ hoạt động nếu ứng dụng trong tâm trí (mà tôi không biết) cung cấp hỗ trợ tốt.
5501

Sau đó, sẽ dễ hiểu hơn nếu bạn đưa ra giả định đó rõ ràng hơn trong câu trả lời của mình. Cách viết giả định hiện tại trong câu trả lời cho thấy rằng bạn cho rằng giả định về số nhân đôi nhỏ không phải là vấn đề lớn.
Tsuyoshi Ito

2

Chỉ muốn lưu ý các thuật toán gần đúng tự nhiên. Điều này không tận dụng lợi thế của sự thưa thớt.

Bạn có thể sử dụng một chuỗi ngẫu nhiên (σi)i[n] Đón X=iσipi(x) ta có thể tính X2 trong nlogn thời gian sử dụng FFT. Sau đó EX2=ipi(x)2=SVX2=O(S). Vì vậy, bạn có thể nhận được một1+εxấp xỉ trong thời gianO(ε2nlogn).


Cách tiếp cận tốt đẹp! Nhưng bạn không cần lặp lại nhiều hơn để có được tất cả các hệ số đúng với xác suất cao?
Rasmus Pagh

@RasmusPagh Đúng vậy, có thể bạn sẽ nhận được một hạn nếu bạn muốn tất cả các hệ số được bảo quản với xác suất 1 - δ . log(n/δ)1δ
Thomas Ahle
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.