Является ли алгоритм Томаса самым быстрым способом решения симметричной диагонально доминирующей разреженной трехдиагональной линейной системы

13

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

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

Джеймс
источник

Ответы:

12

Я считаю, что сравнивать итерационный метод (многосеточный) с прямым / точным методом (Томас) с точки зрения точного количества операций не имеет смысла. IIRC, число операций Томаса для8N любого трехдиагональной системы. Единственное время, которое я могу себе представить, можно предположить, что многосеточное избиение является тривиальным случаем наличия линейного решения, и даже тогда стоимость оценки остатка на каждом уровне будет сопоставима со стоимостью Томаса.

полезность многосеточных заключается в томчто это вообще для разреженных матриц, а не ограничивается трехдиагональные системами.O(N)

Аврелий
источник
Благодарю. Я понимаю, что итерационные методы не являются точными. Я должен был указать очень маленький допуск (скажем, 10 ^ -15) и просто относился к нему как к «точному» для целей сравнения.
Джеймс
@ user2697246 хорошо, вы спросили о "доказуемо" быстрее всего. Точная скорость сходимости для многосетки (или любой итерационной схемы) всегда будет зависеть от самого решения и исходной догадки - линейное решение будет эффективно решено ровно за один шаг, тогда как для чего-то более колебательного потребуется больше операций. У Томаса есть точный фиксированный счетчик операций для всех случаев. С практической точки зрения, вы никогда не будете бить Томаса за (последовательное) решение трехдиагональной системы для нетривиального случая.
Аврелий
@ Aurelius Может ли алгоритм Томаса быть распараллеленным? Если нет, то это одно из главных преимуществ multigrid!
Ник Алджер
3
O(NlogN)N
Одна поправка, алгоритм Томаса требует 8N операций, а не 9N. Кроме того, что вы подразумеваете под "многосеткой ... имеющей линейное решение"? Все рассматриваемые здесь системы являются линейными.
Дуг Липински
11

Короткий ответ: алгоритм Томаса будет быстрее любой итерационной схемы почти во всех случаях. Исключением может быть применение одной итерации очень простой итерационной схемы, такой как Гаусс-Зейдель, но вряд ли это даст приемлемое решение. Кроме того, это игнорирует проблемы параллельной обработки.

O(n)O(n) операций, где n - число неизвестных на этом многосеточном уровне.

5N3N3N22N2

Дуг Липински
источник
«Многосетка является особенно плохим выбором в случае трехдиагональной матрицы, потому что, хотя многосетка - это O (n), константа довольно велика». Я тоже так думаю, но поиск в Google поднял строку в книге по многосеткам Троттенбурга, утверждая, что константа составляет 0,1-0,2, заявленная без доказательств. Я не думаю, что я верю этому.
Аврелий
1
@ Aurelius Интересно. Это явно невозможно в общем случае, поскольку в трехдиагональной матрице имеется 3N записей. Если стоимость составляет ~ 0,1 * N, это означает, что вы даже не работаете с большинством записей.
Дуг Липински
Да, мы на одной странице; простая оценка 3-точечного трафарета требует 3N операций. Я просто просматривал, так что, возможно, я полностью неверно истолковал это утверждение, но вы можете увидеть его сами в выдержке из книг Google.
Аврелий
4
Полная цитата (стр. 21) гласит: «Эффективность в практическом смысле означает, что константы пропорциональности в этом выражении O (N) малы или умеренны. Это действительно так для многосетки: если спроектировано правильно, h-независимые факторы сходимости могут должно быть сделано очень маленьким (в диапазоне 0,1-0,2 или даже меньше), и число операций на одно неизвестное за шаг итерации также мало ». 0,1-0,2 относится к остаточному сокращению для каждого цикла многосетки. Константа на O (N) будет порядка 1,5-2,0x умножения матрицы на цикл (всего десяток или два цикла).
Годрик Провидец
Ах, спасибо @GodricSeer, это имеет больше смысла.
Аврелий
0

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

Hasbestein
источник