Tại sao phép biến đổi trong thuật toán nhân của Schönhage Nhận Strassen lại rẻ?


8

Các nhân Schönhage-Strassen thuật toán hoạt động bằng cách chuyển phép nhân kích thước thành nhiều phép nhân kích thước với một số lý thuyết biến đổi, và recursing. Ít nhất tôi nghĩ đó là những gì nó làm bởi vì có một số sự thông minh khác và tôi thực sự không hiểu nó đủ tốt để tóm tắt chính xác. Nó kết thúc sau .Nlg(N)O(Nlg(N)lg(lg(N)))

Một biến đổi lý thuyết số hoàn toàn giống như một Biến đổi Fourier rời rạc , ngoại trừ nó được thực hiện trong trường hữu hạn của các số nguyên modulo . Điều này làm cho các hoạt động rẻ hơn rất nhiều, vì biến đổi Fourier có rất nhiều nhân với nguồn gốc của sự thống nhất, và gốc rễ của sự thống nhất của là tất cả sức mạnh của 2 vì vậy chúng ta có thể thay đổi! Ngoài ra, số nguyên dễ làm việc hơn rất nhiều so với số phức dấu phẩy động.F2N+12N+1F2N+1

Dù sao đi nữa, điều khiến tôi bối rối là đó là rất lớn. Nếu tôi cung cấp cho bạn một phần tử ngẫu nhiên từ , phải mất các bit để chỉ định nó. Vì vậy, thêm hai yếu tố sẽ mất thời gian . Và DFT thực hiện rất nhiều bổ sung.F2N+1F2N+1O(N)O(N)

Schönhage sừng Strassen chia đầu vào thành các nhóm với các bit . Các nhóm này là các giá trị của mà nó sẽ biến đổi. Mỗi lộ trình qua các DFT sẽ có bổ sung / bớt, và có đi. Vì vậy, dựa trên việc bổ sung mất thời gian , có vẻ như chi phí của tất cả các bổ sung đó phải là , không có triệu chứng giống như .Nlg(N)lg(N)F2N+1O(Nlg(N))O(lg(Nlg(N)))O(N)O(NNlg(N)lg(Nlg(N)))O(N2)

Chúng ta có thể làm tốt hơn một chút so với điều đó ... bởi vì các giá trị bắt đầu quá nhỏ, các bổ sung khá thưa thớt. Vượt qua đầu tiên 'bổ sung thực sự chỉ tốn mỗi lần và vượt qua lần thứ hai' tốn mỗi lần và vượt qua 'chi phí' mỗi cái, nhưng tất cả vẫn chỉ là một khủng khiếp .O(lg(N))21O(lg(N))O(min(N,2ilg(N)))N2lg(N)

Làm thế nào là Schönhage Thẻ Strassen làm cho các bổ sung giá rẻ? Chúng có giá bao nhiêu?

Có phải vì thuật toán thực sự sử dụng FN+1 (với NĐảm bảo là một quyền lực của 2)? Có đủ xếp chồng lên nhau22nvà tiếng Đức trong bài báo mà tôi thực sự không chắc chắn. Mặt khác, tôi không nghĩ rằng đảm bảo đủ nguồn gốc của sự thống nhất để mọi thứ được giải quyết.


Bạn đã đọc bài viết Wikipedia? Ít nhất, nó không phải bằng tiếng Đức. Theo Wikipedia, kích thước được giảm từN đến nN tại mỗi bước, hoạt động từ đó n2=Θ(N).
Yuval Filmus

@Yuval Bạn thấy ở đâu nNtrong bài báo? Có rất nhiều "gốc nguyên thủy" và một mẹo tối ưu hóa bổ sung liên quan đến căn bậc hai, nhưng nếu không thì tôi không thấy nó. Tôi thấy "Chia mỗi số đầu vào thành các vectơ X và Y của2k các bộ phận mỗi, nơi 2k chia N. ", nhưng không có định nghĩa về k.
Craig Gidney

@Yuval Điều đó có vẻ hữu ích ... nhưng vẫn còn O(N) bổ sung cho mỗi lần vượt qua với mỗi chi phí O(N). Vì vậy, chi phí vượt quaO(N32), cái nào tốt hơn nhưng không đủ tốt.
Craig Gidney

1
Các thiết lập của k xuất hiện trong câu "Số phần tối ưu để phân chia đầu vào thành tỷ lệ với N." Giá trị của n sau đó 2Θ(N)+1, vì vậy mỗi chi phí bổ sung O(N).
Yuval Filmus

Câu trả lời:


5

Theo bài viết trên Wikipedia , ở mỗi bước, độ dài của các số nguyên được giảm từN đến (đại khái) Nvà có (khoảng) N trong số họ, và do đó, bổ sung chỉ có giá O(N). Có một phân tích chi tiết về thời gian chạy trong đoạn cuối của phần được liên kết, được sao chép ở đây trong trường hợp nó thay đổi:

Trong bước đệ quy, quan sát được sử dụng rằng:

  • Mỗi phần tử của vectơ đầu vào có nhiều nhất N/2k chút ít;
  • Tích của hai phần tử vectơ đầu vào có nhiều nhất 2N/2k chút ít;
  • Mỗi phần tử của tích chập là tổng của nhiều nhất 2k những sản phẩm đó, và vì vậy không thể vượt quá 2N/2k+k chút ít.

Đây N là chiều dài đầu vào hiện tại và k=Θ(N). Số học được thực hiện modulo2n+1, Ở đâu n là một số bội số của 2k cái nào lớn hơn 2N/2k+k; lưu ý rằngn=Θ(N).


Tôi không hiểu tại sao mỗi yếu tố của tích chập không thể vượt quá 2N2k+kchút ít. Tôi hiểu rằng nếu chúng ta chỉ cần thêm chúng lại với nhau mà không có sự thay đổi nào thì chúng sẽ không lớn hơn thế, nhưng chúng ta sẽ không làm số học trongF2N+1và nhân rộng mọi thứ bằng sức mạnh khổng lồ của 2? CácNyếu tố thứ nhất của sự chập là i=0Nxi2iN, đẩy mạnh sức mạnh bằng cách N đối với mỗi phần tử, do đó, nó sẽ không được hưởng lợi từ việc chồng chéo bit của chúng và yêu cầu Nchút ít?
Craig Gidney

Là những bổ sung đang được thực hiện trong F2N+1? Bài báo nói rằng "cần phải sử dụng N nhỏ hơn cho phép nhân đệ quy", nhưng không rõ liệu bước xuống đó được thực hiện cho cả phép biến đổi và phép nhân theo điểm hay chỉ cho phép nhân theo chiều.
Craig Gidney

Bài viết Wikipedia trộn lẫn Nn; hy vọng điều đó đã được sửa trong câu trả lời sửa đổi của tôi. Số học được thực hiện modulo2n+1, Ở đâu n=Θ(N). Vectơ kết quả sau đó có thể được kết hợp để đưa ra một modulo kết quả2N+1.
Yuval Filmus

Lặp lại, mẹo là thực hiện mô đun số học một mô đun nhỏ hơn, có kích thước tương thích với kích thước của các mảnh. CácNsố nguyên -bit được cắt thành khoảng N mảnh dài Nchút ít.
Yuval Filmus

Ah, điều đó giải thích nó sau đó. Điều đó có nghĩa làlg(n) phiên bản cũng khá nhanh, vì nó có lg(n)hoạt động quy mô. Nếu bạn có thể nói rõ ràng rằng trong câu trả lời của bạn, điều đó thật tuyệt.
Craig Gidney

3

Có một lời giải thích tuyệt vời về chính xác những gì đang diễn ra, bao gồm cả quy mô của lĩnh vực đi xuống như thế nào khi bạn tiến bộ, trong tài liệu của GMP: 15.1.6 Phép nhân FFT .

Một cái nhìn tổng quan sâu hơn về mặt lý thuyết bắt đầu từ trang 55 của Số học máy tính hiện đại (pdf) (ờ ... trình duyệt nói trang 71 nhưng bản thân trang nói 55). Nó giải thích tính chính xác của thuật toán và phá vỡ phân tích phức tạp.

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.