Yếu tố quyết định của ma trận Vandermonde tổng quát


10

Ma trận Moore tương tự như ma trận Vandermonde nhưng có định nghĩa được sửa đổi một chút. http://en.wikipedia.org/wiki/Moore_matrix

Sự phức tạp của tính toán yếu tố quyết định của một nhất định là gì n×n bậc đầy đủ Moore ma trận modulo một số nguyên nào?

Cần Moore quyết định được giảm từ O(n3) sử dụng kỹ thuật FFT để O(nlogan) đối với một số aR+{0} ?

Độ phức tạp của Moore det modulo có phải là số nguyên và Vandermonde det giống nhau không? Độ phức tạp của yếu tố quyết định Vandermonde là O(nlog2n) (Trang 644 trong Sổ tay khoa học máy tính lý thuyết: Thuật toán và độ phức tạp của Jan Leeuwen)

Bài tương tự như bài hiện tại: Modulo m xác định


Định thức Moore thậm chí có thể được tính trong thời gian O (n ^ 3) (trên RAM nguyên) không?
Jeffε

1
@ Jɛ ff E Đó là lý do tại sao tôi đã đề cập modulo ngẫu nhiên . NN
T ....

Nhân tiện, và tôi chỉ tò mò, liệu có những ứng dụng được biết sẽ có lợi cho thuật toán "siêu tốc" như vậy không?
Juan Bermejo Vega

@J FFE, làm bạn tình cờ biết nếu tính toán một lũy thừa modulo đôi so với N là trong BPP cho tầm thường N ?. Bởi vì đó là một vấn đề để tính toán các hệ số của ma trận. εNN
Juan Bermejo Vega

Câu trả lời:


4

Nói chung, có một thuật toán thời gian lý thuyết để tìm phân tách LU của một ma trận tùy ý bằng thuật toán Coppersmith Thẻ Win giác , sau đó rõ ràng mang lại thời gian xác định (thêm thời gian O ( n ) ). Tuy nhiên, có một vấn đề là thuật toán Coppersmith Nhận Win giác không được sử dụng trong thực tế. Afaik, mọi người chủ yếu sử dụng thuật toán Strassen thời gian O ( n 2.807 ) . Không tăng lu_factorize của UBLAS có sử dụng cái này không?O(n2.376)O(n)O(n2.807)

Trong trường hợp của bạn, ma trận Moore phải thừa nhận tối ưu hóa đáng kể vì về cơ bản mọi loại bỏ Gaussian như thủ tục như phân rã LU đều có thể được thực hiện một cách trừu tượng. Thật vậy, bạn sẽ tìm thấy một công thức để tính toán định thức Moore được tham chiếu bởi wikipedia , có lẽ người ta chứng minh bằng cách đơn giản là thực hiện phân tách LU nói chung.O(n)


Xin chào Jeff: Bạn tham khảo công thức nào cho công thức O (n ^ 2). Tôi nghĩ rằng Vandermonde det có thể được tính bằng O (nlogn) nhưng tôi không thể tìm thấy tài liệu tham khảo. Vì vậy, Moore Det cũng nên ở O (nlogn)?
T ....

Vâng, tôi nên nói O (n) rõ ràng, thực sự O (n log n) cho n lớn.
Jeff Burdges

Xin chào Jeff: Bạn có một tài liệu tham khảo?
T ....

7
@JeffBurdges: Nếu thời gian chạy là O (n log n) "cho n lớn", thì theo định nghĩa, thời gian chạy là O (n log n), không phải O (n).
Jeffε

Tôi không thấy công thức tham chiếu bởi Wikipedia. Tốt nhất có vẻ Θ ( n 2 ) . O(n)Θ(n2)
Peter Taylor

3

Điều quan trọng là, trong định nghĩa bạn cung cấp, ma trận sống trong một trường hữu hạn, giả sử trong đó m là số nguyên tố. Điều này cho phép bạn sử dụng định lý Euler để tính toán các số mũ đôi xuất hiện trong ma trận trong thời gian . Nếu không, có vẻ khó thậm chí tính toán các hệ số ma trận mà không tính hệ số .ZmmO ( log ( m n )aqemodma q ia q iO(log(mn)M(logm))m

aqiaqi(modφ(m))(modm)
m

Nếu là số nguyên tố hoặc có thể được xác định một cách hiệu quả, thì độ phức tạp trong trường hợp xấu nhất bị chi phối bởi số bước bạn cần cho phép nhân ma trận . Chẳng hạn, cách tiếp cận biểu mẫu bình thường của Smith mà tôi đã đề cập trong bài đăng của đối tác sẽ tính toán định thức theo thời gian nếu bạn sử dụng "chậm" thuật toán nhân . có thể được chọn là 2.373.O ( n ω ) O ( n ωmO(nω) * ωO(nωlog2mlog(mn))ω

Bạn bị chậm lại trong Moore vs Vandermonde vì bạn phải nhân đôi số mũ của các hệ số của ma trận. Khi bạn có thể nhân tố sự chậm lại này chỉ là đa bội trên . Nếu không, thuật toán được trình bày cung cấp cho bạn mức giảm Cook thành Mô-đun lũy thừa kép trên .m Z mmmZm

Lưu ý *: thuật toán nhân số nguyên nhanh hơn cho phép bạn thay thế bằng .log2mM(logmloglogm)


Cập nhật : về khả năng đạt được .O(nlogan)

Tôi không có câu trả lời chắc chắn cho điều này, nhưng tôi đã tìm thấy một số thông tin có thể thắt chặt tìm kiếm của bạn.

Các thuật toán cho ma trận có cấu trúc tính toán các đại lượng như các định thức trong thời gian được gọi là "siêu tốc" trong tài liệu. Tất cả các thuật toán "siêu tốc" được biết đến cho các ma trận có cấu trúc (Vandermonde, Toeplitz, Hankel) dường như dựa vào một đặc tính chung của ma trận này được gọi là "xếp hạng dịch chuyển" thấp. Trao đổi thảo luận về chương đầu tiên của cuốn sách này (các trang truy cập mở) hoặc trong bài viết này [ACM] , [PDF] .O(nlogan)

Từ những gì tôi đọc được, đưa ra một Ma trận Moore , nếu bạn có thể tìm thấy ma trận , sao cho ma trận mới (hoặc thay thế ) có cấu trúc như saum×nMABL(M)=AMMBL(M)=MAMB

L(M)=k=1rgkhkT

và thứ hạng nhỏ (không đổi hoặc bị giới hạn bởi ), sau đó bạn có thể áp dụng các kỹ thuật hiện có (kiểm tra chương 5 của cuốn sách, mở- truy cập các trang) vào tam giác và, do đó, tính toán , sử dụng . Ở trên, , biểu thị các vectơ. Nếu bạn không thể tìm thấy cuốn sách ở trên để đọc toàn bộ, bài viết này cũng có rất nhiều thông tin về các phương pháp này.r>0o(min{m,n})MdetMO(nlog2n)gkhk

Thật không may, tôi không thể tìm thấy cấu trúc xếp hạng dịch chuyển thấp cho ma trận Moore (Vandermonde có). Biến chứng chính ở đây dường như phát sinh từ bản chất "phi tuyến tính" của hàm mũ đôi. Nếu nó giúp, các trường hợp cho Vandermonde, Cauchy, Toeplitz, Hankel được giải quyết trong cuốn sách.


Tôi có thể làm cho ma trận của mình sống trong một trường char . Tuy nhiên, kích thước của bảng chữ cái cho ứng dụng dự định của tôi sẽ lớn. Vậy có dạng cho một số đủ lớn . 3m3kk
T ....

Điều đó tốt, vì bạn có thể tính toán hàm tổng của :)3k
Juan Bermejo Vega

Vâng, điều đó không đơn giản hóa sự phức tạp, tôi sẽ nói vì lĩnh vực này rất rất lớn.
T ....

Nó đơn giản hóa các vấn đề tôi đề cập với lũy thừa kép. Vì , bạn có thể sử dụng định lý Euler để nhân đôi số mũ : đầu tiên, tính , sau đó . Bạn có thể làm điều này trong thời gian . Sử dụng thuật toán nhân trường, và bạn sẽ nhận được chi phí "netto" cuối cùng của đó là hiệu quả. φ(3k)=3k3k1aqimodmb=qimodφ(3k) O ( log ( n 3 k ) M ( k log 3 ) ) M ( n ) = n 2 O ( n ω k 2 l o g 2 3 ( log n + k log 3 ) )abmod3kO(log(n3k)M(klog3))M(n)=n2O(nωk2log23(logn+klog3))
Juan Bermejo Vega

Chúng ta có thể thay thế bằng không? Đó là tiết kiệm chi phí tôi tò mò (có thể có thể từ cấu trúc ma trận). Với , tôi không đạt được bất cứ điều gì cho mục đích của mình. 1 + ε ω 2ω1+ϵω2
T ....
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.