Làm thế nào để sắp xếp lại các biến để tạo ra một ma trận dải băng thông tối thiểu?


15

Tôi đang cố gắng giải phương trình Poisson 2D bằng các khác biệt hữu hạn. Trong quá trình này, tôi thu được một ma trận thưa thớt chỉ có biến trong mỗi phương trình. Ví dụ: nếu các biến là U , thì sự rời rạc sẽ mang lại:5U

Ui1,j+Ui+1,j4Ui,j+Ui,j1+Ui,j+1=fi,j

Tôi biết rằng tôi có thể giải quyết hệ thống này bằng phương pháp lặp, nhưng tôi nghĩ rằng nếu tôi ra lệnh cho các biến một cách thích hợp, tôi có thể có được một ma trận dải có thể được giải bằng phương pháp trực tiếp (nghĩa là loại bỏ Gaussian / o xoay vòng). Điều này có thể không? Có chiến lược nào để làm điều này cho các hệ thống thưa thớt khác, có lẽ ít cấu trúc hơn không?


2
Một cái gì đó giống như Cuthill-McKee?
JM

Thật thú vị ... tôi chưa bao giờ nghe nói về thuật toán Cuthill-McKee trước đây! :)
Paul

1
Ngoài ra còn có Reverse Cuthill-McKee nữa.
Geoff Oxberry

1
Tôi hy vọng nó rõ ràng từ các câu trả lời, nhưng bạn không muốn sử dụng một bộ giải có dải cho vấn đề này, cũng như không chọn một thứ tự giảm thiểu băng thông. Có lẽ câu hỏi hoặc câu trả lời được chọn có thể được chỉnh sửa để làm rõ điều này, nếu không tôi sợ rằng huyền thoại này sẽ được duy trì. Tôi đã đưa ra một so sánh trực quan và so sánh điền vào scicomp.stackexchange.com/a/880/119 .
Jed Brown

@JedBrown: Thật ra, tôi không hoàn toàn làm việc với một vấn đề poisson, vì vậy ... Vấn đề của tôi có cấu trúc tương tự như vấn đề poisson ... Các chỉ số của các biến (tôi và j) hoàn toàn giống nhau, và ma trận chiếm ưu thế theo đường chéo với các mục ngoài đường chéo (trong cùng một hàng) thêm vào chính xác tổng của mục nhập đường chéo.
Paul

Câu trả lời:


13

Đây là một vấn đề được nghiên cứu kỹ trong lĩnh vực người giải quyết trực tiếp thưa thớt. Tôi đặc biệt khuyên bạn nên đọc tổng quan của Joseph Liu về phương pháp nhiều mặt để có được ý tưởng tốt hơn về cách sắp xếp lại và siêu dữ liệu có hiệu lực điền vào và thời gian giải pháp.

Phân tích lồng nhau là một cách cực kỳ phổ biến để tạo ra sự sắp xếp lại, và về cơ bản bao gồm phân vùng đồ thị đệ quy. MeTiS là tiêu chuẩn thực tế cho phân vùng đồ thị và bạn có thể đọc về một số ý tưởng đằng sau nó ở đây . Một gói thường được sử dụng khác là SCOTCHChaco cũng rất quan trọng, vì các tác giả của nó đã giới thiệu phân vùng đồ thị đa cấp , đây cũng là ý tưởng cơ bản đằng sau MeTiS .

George và Liu cho thấy trong cuốn sách kinh điển của họ rằng các giải pháp thưa thớt trực tiếp 2d chỉ cần công việc và O ( n log n ) bộ nhớ, trong khi 3d thưa thớt trực tiếp đòi hỏi O ( n 2 ) công việc và O ( n 4 / 3 ) bộ nhớ.O(n3/2)O(nlogn)O(n2)O(n4/3)


Bạn có một trích dẫn cho tài liệu tham khảo George và Liu?
Paul

Thêm; Tôi chuẩn bị ra khỏi xe khi lần đầu tiên nộp nó. Tôi biết rằng có một phiên bản sách có sẵn miễn phí ở đâu đó (Jed biết nó ở đâu), nhưng tôi không thể tìm thấy nó.
Jack Poulson

Tôi đã cập nhật liên kết để trỏ đến PDF của cuốn sách thay vì đánh giá sách.
Jed Brown

@JedBrown Đó là một tài liệu tham khảo tuyệt vời! Cám ơn rất nhiều! :)
Paul

1
@Alexander Mọi người đều gán 3D cho George và Liu, mặc dù tôi không biết liệu họ có chỉ rõ điều đó trong cuốn sách hay không. Đó là hiển nhiên từ lý thuyết tuy nhiên. Tách đỉnh tối thiểu cho một lưới là n 2 / 3 = m × m . Ma trận dày đặc kết hợp với Siêu nút có ( n 2 / 3 ) 2 = n 4 / 3 bài dự thi và đòi hỏi ( n 2 / 3 ) 3 = n 2n=m×m×mn2/3=m×m(n2/3)2=n4/3(n2/3)3=n2hoạt động để yếu tố. Thuật ngữ logarit trong trường hợp 2D tinh tế hơn và được xử lý trong Chương 8 về Phân tích lồng nhau, đạt được giới hạn dưới.
Jed Brown

5

Cuthill-McKee là tiêu chuẩn thực tế cho những gì bạn muốn làm. Nếu bạn muốn chơi với phương pháp này, có một cách triển khai thuật toán dễ sử dụng (và ngược lại) trong Thư viện đồ thị Boost (BGL) và tài liệu chứa các ví dụ về cách sử dụng nó.


thực sự đảo ngược Cuhill-McKee; nó thường cho ít điền. Nhưng một trật tự mổ xẻ lồng nhau vượt trội hơn nhiều so với một trật tự băng thông thấp.
Arnold Neumaier

4

Nói về các phương pháp nhiều mặt, Tim Davis , người làm việc trên các phương pháp đa mặt cho nhân tố LU ( UMFPACK ) có một số thói quen sẽ sắp xếp lại ma trận để giảm thiểu việc điền vào. Bạn có thể tìm thấy chúng ở đây như là một phần của SuiteSparse . SuiteSparse sử dụng MeTiS.

Một điều khác cần lưu ý: Trong một số vấn đề, bạn có thể khéo léo sắp xếp các biến để bạn có được dải hoặc gần với dải, các mẫu có thể giúp bạn tránh được rắc rối (và thời gian CPU) khi gọi các thuật toán này. Tuy nhiên, việc sắp xếp lại thông minh này đòi hỏi cái nhìn sâu sắc về phần của bạn và không có gì chung chung như các thuật toán sắp xếp lại dựa trên lý thuyết đồ thị mà mọi người đã đề cập trong câu trả lời của họ ở đây.


Không có gì đâu, Paul. Nếu bạn thích nó, bỏ phiếu lên.
Geoff Oxberry

3

Có một thuật toán gọi là ADI (Tiềm ẩn hướng thay thế) trong các vòng tròn toán học ứng dụng và toán tử phân tách trong các vòng tròn vật lý về cơ bản là những gì bạn mô tả. Đây là một phương pháp lặp và nó tuân theo quy trình cơ bản này:

  1. yx

  2. xy

  3. Lặp lại 1 và 2 cho đến khi lỗi nhỏ như bạn muốn.

Tôi không biết độ phức tạp chính thức của thuật toán này, nhưng tôi đã thấy nó hội tụ ít lần lặp hơn so với những thứ như Jacobi và Gauss-Seidel mỗi khi tôi sử dụng nó.


2
Nếu bạn quyết định đi theo con đường chia tách toán tử, một số điều bạn sẽ muốn cẩn thận là việc chia tách toán tử được biết là dẫn đến lỗi trong các giải pháp trạng thái ổn định trong một số trường hợp. (Một trong những bạn cùng phòng của tôi đã phát triển một cách để vượt qua khó khăn này, nhưng tôi không tin rằng anh ấy đã xuất bản nó.) Ngoài ra, việc chia tách toán tử được biết là gây ra lỗi số. Có nhiều cách được thiết lập tốt để ước tính các lỗi này một posteriori ; Don Estep đã hoàn thành công việc xuất sắc trong lĩnh vực đó.
Geoff Oxberry

@GeoffOxberry Nghe có vẻ như bạn đang đề cập đến một sự chia tách khác nhau. Bạn có thể sử dụng ADI trong một sơ đồ hoàn toàn không có lỗi phân tách vì nó thực sự giải quyết được hệ thống. Ngoài ra còn có các phương pháp IMEX kiểm soát chặt chẽ các lỗi phân tách.
Jed Brown

xy

Tôi chưa bao giờ nghe nói về việc chia tay Godunov và Strang. Tôi có xu hướng chia tách nhà điều hành của mình với công thức Baker-Campbell-Hausdorf. Đó có phải là điều tương tự?
Dan
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.