Adalah algoritma Thomas cara tercepat untuk memecahkan sistem linier tridiagonal simetris dominan dominan diagonal

13

Saya bertanya-tanya apakah algoritma Thomas adalah cara tercepat (dapat dibuktikan?) Untuk menyelesaikan sistem tridiagonal simetris dominan diagonal dalam hal kompleksitas algoritmik (tidak mencari paket implementasi seperti LAPACK dll). Saya tahu bahwa kedua algoritma Thomas dan multigrid adalah kompleksitas, tetapi mungkin faktor konstan untuk multigrid kurang? Rasanya bagi saya multigrid tidak bisa lebih cepat tetapi saya tidak positif.HAI(n)

Catatan: Saya sedang mempertimbangkan kasus di mana matriksnya sangat besar. Baik metode langsung atau berulang dapat diterima.

James
sumber

Jawaban:

12

Saya percaya membandingkan metode berulang (multigrid) ke metode langsung / tepat (Thomas) dalam hal jumlah operasi yang tepat tidak benar-benar bermakna. IIRC, count operasi Thomas adalah untuk setiap sistem tridiagonal. Satu-satunya waktu saya dapat membayangkan pemukulan multigrid yang dapat dibayangkan adalah untuk kasus sepele memiliki solusi linier, dan bahkan kemudian biaya untuk mengevaluasi residu pada setiap tingkat akan sebanding dengan biaya Thomas.8N

The kegunaan kebohongan multigrid pada kenyataan bahwa itu umum untuk matriks jarang, dan tidak terbatas pada sistem tridiagonal.HAI(N)

Aurelius
sumber
Terima kasih. Saya menyadari bahwa metode berulang tidak tepat. Saya seharusnya menetapkan toleransi yang sangat kecil (katakanlah 10 ^ -15) dan hanya menganggapnya sebagai "tepat" untuk tujuan perbandingan.
James
@ user2697246 baik, Anda bertanya tentang "terbukti" tercepat. Tingkat konvergensi yang tepat untuk multigrid (atau skema iteratif apa pun) selalu akan bergantung pada solusi itu sendiri dan tebakan awal - solusi linier akan dipecahkan secara efektif tepat dalam satu langkah, sedangkan sesuatu yang lebih berosilasi akan membutuhkan lebih banyak operasi. Thomas memiliki perhitungan operasi pasti dan pasti untuk semua kasus. Secara praktis, Anda tidak akan pernah mengalahkan Thomas karena (secara seri) memecahkan sistem tridiagonal untuk kasus yang tidak sepele.
Aurelius
@ Aurelius Dapatkah algoritma Thomas diparalelkan? Jika tidak, itu adalah salah satu keunggulan utama multigrid!
Nick Alger
3
@NickAlger Tidak, algoritma Thomas benar-benar serial, dan ya paralelisasi adalah keuntungan besar bagi multigrid (walaupun untuk kasus spesifik sistem tridiagonal, saya curiga latensi komunikasi akan membunuh Anda.) Ada teknik khusus untuk sistem tridiagonal yang disebut parallel cyclic reduksi (PCR) yang merupakan , diparalelkan dengan N , yang saya telah berhasil digunakan pada GPU. HAI(NlHaigN)N
Aurelius
Satu koreksi, algoritma Thomas membutuhkan operasi 8N, bukan 9N. Juga, apa yang Anda maksud dengan "multigrid ... memiliki solusi linier"? Semua sistem yang dipertimbangkan di sini adalah linear.
Doug Lipinski
11

Jawaban singkatnya adalah bahwa algoritma Thomas akan lebih cepat daripada skema iteratif untuk hampir semua kasus. Pengecualian mungkin akan menerapkan iterasi tunggal dari skema iteratif yang sangat sederhana seperti Gauss-Seidel, tetapi ini sangat tidak mungkin untuk memberikan solusi yang dapat diterima. Juga, ini mengabaikan masalah pemrosesan paralel.

HAI(n)HAI(n)

5N3N3N-22N-2

Doug Lipinski
sumber
"Multigrid adalah pilihan yang sangat buruk dalam hal matriks tri-diagonal karena meskipun multigrid adalah O (n), konstanta cukup besar." Saya pikir ini juga, tetapi googling mengangkat baris dalam buku Multigrid Trottenburg yang mengklaim konstanta 0,1-0,2, dinyatakan tanpa bukti. Kurasa aku tidak percaya itu.
Aurelius
1
@ Aurelius Menarik. Itu jelas tidak mungkin dalam kasus umum karena ada entri 3N dalam matriks tridiagonal. Jika biayanya ~ 0,1 * N, itu berarti Anda bahkan tidak pernah mengoperasikan sebagian besar entri.
Doug Lipinski
Ya kami berada di halaman yang sama; hanya mengevaluasi stensil 3-titik membutuhkan operasi 3N. Saya baru saja membaca sekilas jadi mungkin saya salah menafsirkan pernyataan itu, tetapi Anda bisa melihatnya sendiri di kutipan buku google.
Aurelius
4
Kutipan lengkap (hal 21) adalah "Efisiensi dalam arti praktis berarti bahwa konstanta proporsionalitas dalam pernyataan O (N) ini kecil atau sedang. Ini memang kasus untuk multigrid: jika dirancang dengan baik, faktor konvergensi h-independen dapat dibuat sangat kecil (dalam kisaran 0,1-0,2 atau bahkan kurang) dan jumlah operasi per langkah yang tidak diketahui per iterasi juga kecil. " 0.1-0.2 mengacu pada pengurangan residu untuk setiap siklus multigrid. Konstanta pada O (N) akan berada di urutan 1,5-2,0x matriks dikalikan per siklus (dengan total selusin atau dua siklus).
Godric Seer
Ah, terima kasih @GodricSeer, itu lebih masuk akal.
Aurelius
0

Multigrid loop bahkan pada single core dapat di-vectorizable oleh optimizer. Jadi, sementara hitungan operasi dapat membantu, kita tidak boleh lupa bahwa bahkan di dunia serial, prosesor memiliki paralelisme vektor, dan karenanya waktu-ke-solusi mungkin tidak persis seperti yang kami prediksi dari analisis biaya.

Hasbestein
sumber