Як впорядкувати змінні для отримання смугової матриці мінімальної пропускної здатності?


15

Я намагаюся вирішити 2D рівняння Пуассона за допомогою кінцевих різниць. У процесі я отримую розріджену матрицю із лише змінними в кожному рівнянні. Наприклад, якби змінні були U , то дискретизація отримала б:5U

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

Я знаю, що я можу розв’язати цю систему ітераційним методом, але мені спало на думку, що якби я замовив змінні належним чином, я міг би отримати змонтовану матрицю, яку можна було б вирішити прямим методом (тобто усунення Гаусса w / o поворотні). Чи можливо це? Чи є якісь стратегії для цього для інших, можливо, менш структурованих розріджених систем?


2
Щось на кшталт Катілл-Маккі?
JM

Цікаво ... Я ніколи раніше не чув про алгоритм Cuthill-McKee! :)
Пол

1
Також є і Реверс Кутілл-Маккі.
Джефф Оксберрі

1
Сподіваюся, це зрозуміло з відповідей, але ви не хочете використовувати смуговий вирішувач для цієї проблеми, а також не обираєте замовлення, що мінімізує пропускну здатність. Можливо, питання чи обрана відповідь можуть бути відредаговані, щоб зробити це зрозумілим, інакше я боюся, що цей міф буде увічнений. Я дав візуальне порівняння та порівняв заповнення scicomp.stackexchange.com/a/880/119 .
Джед Браун

@JedBrown: Насправді я не зовсім працюю з проблемою Пуассона, сама по собі ... Моя проблема має схожу структуру з проблемою Пуассона ... Показники змінних (я і j) точно такі ж, і матриця є діагонально домінуючою, а позадіагональні записи (в одному рядку) додають точно до суми діагонального запису.
Павло

Відповіді:


13

Це добре вивчена проблема в галузі рідко-прямих розв'язувачів. Я настійно рекомендую ознайомитись з оглядом Джозефа Лю на мультифронтальному методі , щоб отримати краще уявлення про те, як ефективність перепорядкувань та надвузлів впливає на час заповнення та час вирішення.

Вкладене розсічення є надзвичайно поширеним способом генерування переупорядкування, і по суті складається з рекурсивного розподілу графіків. MeTiS - це фактично стандарт для розділення графіків, і про деякі ідеї, що стоять за ним, ви можете прочитати тут . Інший часто використовуваний пакет - SCOTCH , і Chaco також важливий, оскільки його автори запровадили багаторівневий розподіл графіків , що також є основоположною ідеєю MeTiS .

Джордж і Лю показали в своїй класичній книзі , що 2d розріджених прямих рішення вимагають тільки робота і висновок ( п увійти п ) пам'ять, в той час як 3d розріджених прямим вимагає висновок ( п 2 ) робота і Про ( п 4 / 3 ) пам'ять.O(n3/2)O(nlogn)O(n2)O(n4/3)


Чи є у вас цитування посилань на Джорджа та Лю?
Пол

Додано; Я збирався вийти з машини, коли вперше подав її. Я знаю, що десь існує вільно доступна версія книги онлайн (Джед знає, де вона знаходиться), але я не зміг її знайти.
Джек Поульсон

Я оновив посилання, щоб вказати на PDF книги замість огляду книги.
Джед Браун

@JedBrown Це була чудова довідка! Дуже дякую! :)
Пол

1
@ Александр Кожен приписує 3D-зображення, пов'язані з Джорджем та Лю, хоча я не знаю, чи прямо в книзі вони це вказують. Однак з теорії це очевидно. Мінімальна вершина сепаратор для сітки п 2 / 3 = м × м . Щільна матриця , пов'язана з цією supernode має ( п 2 / 3 ) 2 = п 4 / 3 записи і вимагає ( п 2 / 3 ) 3 = п 2n=m×m×mn2/3=m×m(n2/3)2=n4/3(n2/3)3=n2операції на фактор. Логарифмічний термін у двовимірному випадку є більш тонким і його розглядають у Розділі 8, присвяченому розсіченню, який досягає нижньої межі.
Джед Браун

5

Cuthill-McKee - це фактичний стандарт для того, що ви хочете зробити. Якщо ви хотіли грати з цим методом, у бібліотеці Boost Graph (BGL) є проста у використанні реалізація алгоритму (та його зворотного ), а документація містить приклади, як його використовувати.


фактично зворотний Cuhill-McKee; зазвичай це дає менше заповнення. Але вкладене впорядкування розсічення значно перевершує порядок низької пропускної здатності.
Арнольд Ноймаєр

4

Говорячи про мультифронтальні методи, Тім Девіс , який працює над мультифронтальними методами для факторизації LU ( UMFPACK ), має ряд підпрограм, які дозволять змінити матриці для мінімізації заповнення. Ви можете їх знайти тут, як частину SuiteSparse . SuiteSparse використовує MeTiS.

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


Вас вітає, Пол. Якщо вам це подобається, проголосуйте.
Джефф Оксберрі

3

У застосованих математичних колах є алгоритм під назвою ADI (чергування напрямків прямих напрямів) та розділений оператор у фізичних колах, який в основному робить те, що ви описуєте. Це ітеративний метод, і він дотримується цієї основної процедури:

  1. yx

  2. xy

  3. Повторюйте 1 і 2, поки помилка не стане настільки малою, якою ви хочете.

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


2
Якщо ви вирішили пройти маршрут розбиття оператора, ви хочете бути обережними - це те, що, як відомо, розщеплення оператора в деяких випадках призводить до помилок у стаціонарних рішеннях. (Один з моїх лаборантів розробив спосіб подолати цю складність, але я не вірю, що він ще його опублікував.) Також, як відомо, розщеплення операторів викликає числові помилки. Існують чітко встановлені способи оцінити ці помилки після них ; Дон Естеп провів чудову роботу в цій галузі.
Джефф Оксберрі

@GeoffOxberry Це здається, що ви посилаєтесь на інше розщеплення. Ви можете використовувати ADI у повністю неявній схемі, яка не має помилки розщеплення, оскільки вона фактично вирішує систему. Існують також методи IMEX, які жорстко контролюють помилки розділення.
Джед Браун

ху

Я ніколи не чув про розщеплення Годунова і Странга. Я схильний розділяти свого оператора за формулою Бейкер-Кемпбелл-Хаусдорф. Це те саме?
День
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.