Чи алгоритм Томаса найшвидший спосіб вирішити симетричну діагонально домінуючу розріджену тридіагональну лінійну систему


13

Мені цікаво, чи алгоритм Томаса - це найшвидший спосіб (доказово?) Вирішити симетричну діагонально домінуючу розріджену тридіагональну систему з точки зору алгоритмічної складності (не шукаючи пакетів реалізації, таких як LAPACK тощо). Я знаю, що і алгоритм Томаса, і багаторешітка є складністю, але, можливо, постійний коефіцієнт для мультисетки менший? Мені не здається, що багаторешітка може бути швидшою, але я не позитивний.O(n)

Примітка: я розглядаю випадок, коли матриць дуже великий. Прийнятні або прямі, або ітераційні методи.

Відповіді:


12

8N

O(N)


Спасибі. Я розумію, що ітераційні методи не є точними. Я повинен був вказати дуже невелику толерантність (скажімо, 10 ^ -15) і просто вважав це "точним" для цілей порівняння.
Джеймс

@ user2697246 добре, ви запитали про "доказливо" найшвидший. Точна швидкість конвергенції для мультирешітки (або будь-якої ітеративної схеми) завжди буде залежати від самого рішення і від початкової здогадки - лінійне рішення буде ефективно вирішено точно за один крок, тоді як щось більш коливальне забирає більше операцій. Томас має точний, фіксований підрахунок операцій для всіх випадків. Практично кажучи, ви ніколи не збираєтесь бити Томаса за (серійне) вирішення тридіагональної системи для нетривіального випадку.
Аврелій

@Aurelius Чи можна алгоритм Томаса паралелізувати? Якщо ні, то це одна з головних переваг мультирешітки!
Нік Алгер

3
O(NlogN)N

Одне виправлення, алгоритм Томаса вимагає 8N операцій, а не 9N. Також, що ви маєте на увазі під "мультисети ... мають лінійне рішення"? Всі розглянуті тут системи є лінійними.
Дуг Ліпінський

11

Коротка відповідь полягає в тому, що алгоритм Томаса буде швидшим, ніж будь-яка ітеративна схема майже для всіх випадків. Винятком може бути застосування однієї ітерації дуже простої ітеративної схеми, такої як Гаусс-Сейдель, але це навряд чи дасть прийнятне рішення. Крім того, це ігнорування проблем з паралельною обробкою.

O(n)O(n)

5N3N3N22N2


"Багаторешітка є особливо поганим вибором у випадку тридіагональної матриці, оскільки, хоча багаторешітка є O (n), константа є досить великою." Я думаю, що це теж, але Гуглінг підніс рядок у книзі "Мультисетка" Троттенбурга, вимагаючи постійну 0,1-0,2, заявлену без доказів. Я не думаю, що я вірю в це.
Аврелій

1
@Aurelius Цікаво. Це явно неможливо в загальному випадку, оскільки в тридіагональній матриці є записи 3N. Якщо вартість становить ~ 0,1 * N, це означає, що ви навіть ніколи не працюєте з більшістю записів.
Doug Lipinski

Так, ми на одній сторінці; просто оцінка 3-бального трафарету вимагає 3N операцій. Я просто скумував, тому, можливо, я повністю помилково витлумачив твердження, але ви самі це можете побачити в уривку книг Google.
Аврелій

4
Повна цитата (стор. 21): "Ефективність у практичному розумінні означає, що константи пропорційності у цьому викладі O (N) невеликі або помірні. Це дійсно так для мультирешітки: якщо добре спроектовано, h-незалежні коефіцієнти конвергенції можуть має бути дуже малим (в діапазоні 0,1-0,2 або навіть менше), а кількість операцій за невідоме значення на етапі ітерації також невелике ". 0,1-0,2 позначається залишковим зменшенням для кожного циклу багаторешітки. Константа на O (N) була б у порядку 1,5-2,0x, матриця множиться за цикл (із загальним десяток або два цикли).
Годрік Провид

А, дякую @GodricSeer, це має більше сенсу.
Аврелій

0

Оптимізатор може векторизувати багатожиткові петлі навіть на одній ядрі. Тож хоча кількість операцій може допомогти, ми не повинні забувати, що навіть у серійному світі процесори мають векторний паралелізм, а отже, час на вирішення може бути не таким, як ми прогнозуємо з аналізу витрат.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.