Wie kann man Variablen neu anordnen, um eine gebänderte Matrix mit minimaler Bandbreite zu erzeugen?


15

Ich versuche, eine 2D-Poisson-Gleichung durch endliche Differenzen zu lösen. Dabei erhalte ich eine spärliche Matrix mit nur Variablen in jeder Gleichung. Wenn die Variablen beispielsweise wären, würde die Diskretisierung ergeben:5U

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

Ich weiß, dass ich dieses System durch eine iterative Methode lösen kann, aber mir kam der Gedanke, dass ich, wenn ich die Variablen entsprechend anordnete, möglicherweise eine gebänderte Matrix erhalten kann, die durch eine direkte Methode (dh Gaußsche Elimination w) gelöst werden kann / o schwenken). Ist das möglich? Gibt es Strategien, um dies für andere, vielleicht weniger strukturierte, dünn besetzte Systeme zu tun?


2
So etwas wie Cuthill-McKee also?
JM

Interessant ... Ich habe noch nie von dem Cuthill-McKee-Algorithmus gehört! :)
Paul

1
Es gibt auch einen Reverse Cuthill-McKee.
Geoff Oxberry

1
Ich hoffe , dass es aus den Antworten klar ist, aber Sie nicht wollen eine gebänderte Löser für dieses Problem verwenden, noch eine Ordnung , dass mindernd Bandbreite wählen. Vielleicht kann die Frage oder die gewählte Antwort bearbeitet werden, um dies zu verdeutlichen, sonst fürchte ich, dass dieser Mythos fortbesteht. Ich gab einen visuellen Vergleich und verglich das Ausfüllen von scicomp.stackexchange.com/a/880/119 .
Jed Brown

@JedBrown: Eigentlich arbeite ich nicht ganz mit einem Poisson-Problem an sich ... Mein Problem hat eine ähnliche Struktur wie das Poisson-Problem ... Die Angaben der Variablen (i und j) sind genau gleich und Die Matrix ist diagonal dominant, wobei die Einträge außerhalb der Diagonale (innerhalb derselben Zeile) genau zur Summe der diagonalen Einträge addiert werden.
Paul

Antworten:


13

Dies ist ein gut untersuchtes Problem auf dem Gebiet der dünnbesetzten direkten Löser. Ich empfehle dringend, Joseph Lius Überblick über die multifrontale Methode zu lesen , um eine bessere Vorstellung davon zu bekommen, wie sich Nachbestellungen und Superknoten auf die Füll- und Lösungszeit auswirken.

Verschachtelte Dissektion ist eine äußerst häufige Methode zum Generieren der Neuanordnung und besteht im Wesentlichen aus rekursiver Graphpartitionierung. Metis ist der de - facto - Standard für Graphpartitionierung, und Sie können über einige der Ideen dahinter lesen hier . Ein weiteres häufig verwendetes Paket ist SCOTCH , und Chaco ist ebenfalls wichtig, da die Autoren eine mehrstufige Graphpartitionierung eingeführt haben , die auch die Grundidee hinter MeTiS ist .

George und Liu zeigten in ihrem klassischen Buch , dass 2d dünnen Direkt Lösungen erfordern nur Arbeit und O ( n log n ) Speicher, während 3d dünnt Direkt erfordert O ( n 2 ) Arbeit und O ( n 4 / 3 ) Speicher.O(n3/2)O(nlogn)O(n2)O(n4/3)


Haben Sie ein Zitat für die Referenz von George und Liu?
Paul

Hinzugefügt; Ich wollte gerade aus dem Auto steigen, als ich es zum ersten Mal einreichte. Ich weiß, dass es irgendwo eine frei verfügbare Version des Buches online gibt (jeder weiß, wo es ist), aber ich konnte es nicht finden.
Jack Poulson

Ich habe den Link so aktualisiert, dass er auf das PDF des Buches anstatt auf die Rezension verweist.
Jed Brown

@JedBrown Das war eine tolle Referenz! Vielen Dank! :)
Paul

1
@Alexander Jeder schreibt George und Liu die 3D-Bindung zu, obwohl ich nicht weiß, ob sie im Buch ausdrücklich darauf hinweisen. Dies geht jedoch aus der Theorie hervor. Der minimale Scheitel Separator für einen Raster ist n 2 / 3 = m × m . Die dichte Matrix mit dem Superknoten zugeordnet ist , ( n 2 / 3 ) 2 = n 4 / 3 - Einträge und erfordert ( n 2 / 3 ) 3 = n 2n=m×m×mn2/3=m×m(n2/3)2=n4/3(n2/3)3=n2Operationen zu faktorisieren. Der logarithmische Term im 2D-Fall ist subtiler und wird in Kapitel 8 über verschachtelte Dissektion behandelt, bei der die Untergrenze erreicht wird.
Jed Brown

5

Cuthill-McKee ist der De-facto- Standard für das, was Sie tun möchten. Wenn Sie mit dieser Methode spielen möchten, gibt es eine einfach zu verwendende Implementierung des Algorithmus (und seiner Umkehrung) in der Boost Graph Library (BGL), und die Dokumentation enthält Beispiele zu seiner Verwendung.


eigentlich Cuhill-McKee umkehren; es gibt normalerweise weniger Füllung. Eine verschachtelte Dissektionsreihenfolge ist jedoch einer Sortierung mit geringer Bandbreite weit überlegen.
Arnold Neumaier

4

Apropos multifrontal Methoden, Tim Davis , der für LU - Faktorisierung (auf multifrontal Methoden arbeitet UMFPACK ) eine Anzahl von Routinen , die Matrizen werden neu anordnen Fill-in zu minimieren. Sie finden sie hier als Teil von SuiteSparse . SuiteSparse verwendet MeTiS.

Eine andere Sache, die Sie beachten sollten: In einigen Fällen können Sie Variablen geschickt so anordnen, dass Sie überlappende oder nahezu überlappende Muster erhalten, was Ihnen die Mühe (und die CPU-Zeit) erspart, diese Algorithmen aufzurufen. Diese clevere Neuordnung erfordert jedoch Ihre Einsicht und ist bei weitem nicht so allgemein wie die graphentheoretischen Neuordnungsalgorithmen, die die Menschen hier in ihren Antworten erwähnt haben.


Gern geschehen, Paul. Wenn es Ihnen gefällt, stimmen Sie ab.
Geoff Oxberry

3

Es gibt einen Algorithmus namens ADI (Alternating Direction Implicit) in angewandten Mathematikkreisen und einen Split-Operator in Physikkreisen, der im Grunde das tut, was Sie beschreiben. Es ist eine iterative Methode und folgt dieser grundlegenden Prozedur:

  1. yx

  2. xy

  3. Wiederholen Sie 1 und 2, bis der Fehler so klein ist, wie Sie es möchten.

Ich kenne die formale Komplexität dieses Algorithmus nicht, aber ich habe festgestellt, dass er jedes Mal, wenn ich ihn verwende, in weniger Iterationen konvergiert als Dinge wie Jacobi und Gauss-Seidel.


2
Wenn Sie sich für die Operator-Aufteilung entscheiden, sollten Sie darauf achten, dass die Operator-Aufteilung in einigen Fällen zu Fehlern bei stationären Lösungen führt. (Einer meiner Labkollegen hat eine Möglichkeit entwickelt, diese Schwierigkeit zu überwinden, aber ich glaube nicht, dass er sie bereits veröffentlicht hat.) Außerdem ist bekannt, dass die Aufteilung von Operatoren zu numerischen Fehlern führt. Es gibt gut etablierte Methoden, um diese Fehler a posteriori abzuschätzen . Don Estep hat in diesem Bereich hervorragende Arbeit geleistet.
Geoff Oxberry

@GeoffOxberry Es hört sich so an, als würden Sie sich auf eine andere Aufteilung beziehen. Sie können ADI in einem vollständig impliziten Schema verwenden, das keinen Aufteilungsfehler aufweist, da es das System tatsächlich löst. Es gibt auch IMEX-Methoden, die Teilungsfehler streng kontrollieren.
Jed Brown

xy

Ich habe noch nie von Godunov und Strangs Trennung gehört. Ich neige dazu, meinen Operator mit der Baker-Campbell-Hausdorf-Formel aufzuteilen. Ist das das selbe
Dan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.