Thuật toán Thomas có phải là cách nhanh nhất để giải quyết một hệ thống tuyến tính ba chiều thưa thớt chiếm ưu thế theo đường chéo đối xứng


13

Tôi tự hỏi liệu thuật toán Thomas có phải là cách nhanh nhất (có thể chứng minh được không?) Để giải quyết một hệ thống tam giác đối xứng thống trị theo đường chéo về độ phức tạp của thuật toán (không tìm kiếm các gói triển khai như LAPACK, v.v.). Tôi biết rằng cả thuật toán Thomas và multigrid đều phức tạp , nhưng có lẽ yếu tố không đổi cho multigrid là ít hơn? Dường như với tôi, multigrid có thể nhanh hơn nhưng tôi không tích cực.Ôi(n)

Lưu ý: Tôi đang xem xét trường hợp ma trận rất lớn. Phương pháp trực tiếp hoặc lặp đi lặp lại đều được chấp nhận.

Câu trả lời:


12

Tôi tin rằng việc so sánh một phương pháp lặp (multigrid) với phương pháp trực tiếp / chính xác (Thomas) về mặt số lượng hoạt động chính xác là không thực sự có ý nghĩa. Số lượng hoạt động của IIRC, Thomas là cho bất kỳ hệ thống ba cực nào. Lần duy nhất tôi có thể tưởng tượng nhịp đập đa năng là một trường hợp tầm thường khi có một giải pháp tuyến tính, và thậm chí sau đó chi phí đánh giá phần dư ở mỗi cấp sẽ tương đương với chi phí của Thomas.số 8N

Tính hữu dụng của multigrid nằm ở chỗ nó nói chung cho các ma trận thưa thớt và không bị giới hạn trong các hệ thống ba cực.Ôi(N)


Cảm ơn. Tôi nhận ra rằng các phương pháp lặp không chính xác. Tôi nên chỉ định một dung sai rất nhỏ (giả sử 10 ^ -15) và chỉ coi đó là "chính xác" cho mục đích so sánh.
James

@ user2697246 tốt, bạn đã hỏi về "có thể" nhanh nhất. Tốc độ hội tụ chính xác cho multigrid (hoặc bất kỳ sơ đồ lặp) nào sẽ luôn phụ thuộc vào chính giải pháp và dự đoán bắt đầu - một giải pháp tuyến tính sẽ được giải quyết chính xác trong một bước, trong khi một điều gì đó dao động hơn sẽ cần nhiều thao tác hơn. Thomas có một số lượng hoạt động chính xác, cố định cho tất cả các trường hợp. Nói một cách thực tế, bạn sẽ không bao giờ đánh bại Thomas vì (giải quyết một cách nghiêm túc) việc giải quyết một hệ thống ba chiều cho một trường hợp không tầm thường.
Aurelius

@Aurelius Thuật toán Thomas có thể được song song không? Nếu không, đó là một lợi thế lớn của multigrid!
Nick Alger

3
@NickAlger Không, thuật toán Thomas hoàn toàn nối tiếp và có song song hóa là một lợi thế lớn cho multigrid (mặc dù đối với trường hợp cụ thể của hệ thống ba cực tôi nghi ngờ độ trễ truyền thông sẽ giết chết bạn.) Có một kỹ thuật dành riêng cho các hệ thống ba chiều được gọi là song song khử (PCR) là , song song với N , mà tôi đã sử dụng thành công trên GPU. Ôi(NtôiogN)N
Aurelius

Một điều chỉnh, thuật toán Thomas yêu cầu các hoạt động 8N, không phải 9N. Ngoài ra, ý của bạn là gì khi "multigrid ... có một giải pháp tuyến tính"? Tất cả các hệ thống đang xem xét ở đây là tuyến tính.
Doug Lipinski

11

Câu trả lời ngắn gọn là thuật toán Thomas sẽ nhanh hơn bất kỳ sơ đồ lặp nào cho hầu hết các trường hợp. Ngoại lệ có lẽ sẽ áp dụng một lần lặp duy nhất của sơ đồ lặp rất đơn giản như Gauss-Seidel, nhưng điều này rất khó có thể đưa ra một giải pháp chấp nhận được. Ngoài ra, điều này là bỏ qua mối quan tâm xử lý song song.

Ôi(n)Ôi(n)

5N3N3N22N2


"Multigrid là một lựa chọn đặc biệt kém trong trường hợp ma trận ba đường chéo vì mặc dù multigrid là O (n), hằng số là khá lớn." Tôi cũng nghĩ vậy, nhưng việc googling đưa ra một dòng trong cuốn sách Multigrid của Trottenburg tuyên bố hằng số 0,1-0,2, được nêu mà không có bằng chứng. Tôi không nghĩ rằng tôi tin điều đó.
Aurelius

1
@Aurelius Thú vị. Điều đó rõ ràng là không thể trong trường hợp chung vì có 3N mục trong ma trận ba góc. Nếu chi phí là ~ 0,1 * N, điều đó có nghĩa là bạn thậm chí không bao giờ hoạt động trên hầu hết các mục.
Doug Lipinski

Vâng, chúng tôi đang ở trên cùng một trang; chỉ cần đánh giá một stprint 3 điểm yêu cầu các hoạt động 3N. Tôi chỉ đọc lướt qua nên có thể tôi hoàn toàn hiểu sai về tuyên bố, nhưng bạn có thể tự mình nhìn thấy nó trong đoạn trích sách của google.
Aurelius

4
Câu trích dẫn đầy đủ (trg 21) là "Hiệu quả theo nghĩa thực tế có nghĩa là các hằng số tỷ lệ trong câu lệnh O (N) này là nhỏ hoặc vừa phải. Đây thực sự là trường hợp của multigrid: nếu được thiết kế tốt, các yếu tố hội tụ độc lập h có thể được thực hiện rất nhỏ (trong khoảng 0,1-2 hoặc thậm chí ít hơn) và số lượng hoạt động trên mỗi bước không xác định cũng không nhỏ. " 0,1-2 đang đề cập đến việc giảm dư cho mỗi chu kỳ của multigrid. Hằng số trên O (N) sẽ theo thứ tự 1,5-2,0x ma trận nhân với mỗi chu kỳ (với tổng số một hoặc hai chu kỳ).
Godric Seer

À, cảm ơn @GodricSeer, điều đó có ý nghĩa hơn.
Aurelius

0

Các vòng lặp đa lõi ngay cả trên lõi đơn có thể được vector hóa bởi trình tối ưu hóa. Vì vậy, trong khi số lượng hoạt động có thể giúp ích, chúng ta không nên quên rằng ngay cả trong thế giới nối tiếp, các bộ xử lý có song song véc tơ và do đó thời gian để giải pháp có thể không chính xác như những gì chúng ta dự đoán từ phân tích chi phí.

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.