Cuthill -Mckee -Algorithmus


Im Numerische lineare Algebra, das Cuthill -Mckee -Algorithmus (CM), benannt nach Elizabeth Cuthill und James McKee,[1] ist ein Algorithmus zudurchführung a spärliche Matrix das hat a symmetrisch Sparsity -Muster in a Bandmatrix Form mit einer kleinen Form Bandbreite. Das Reverse Cuthill -Mckee -Algorithmus (RCM) Aufgrund von Alan George und Joseph Liu ist der gleiche Algorithmus, aber mit den resultierenden Indexnummern umgekehrt.[2] In der Praxis führt dies im Allgemeinen zu weniger ergänze als die CM -Bestellung, wenn Gaußsche Eliminierung angewendet wird.[3]
Der Cuthill McKee -Algorithmus ist eine Variante des Standards Breite-First-Suche Algorithmus, das in Graph -Algorithmen verwendet wird. Es beginnt mit einem peripheren Knoten und erzeugt dann Ebenen zum bis alle Knoten erschöpft sind. Der Satz wird aus set erstellt durch Auflistung aller Scheitelpunkte neben allen Knoten in . Diese Knoten werden gemäß den Vorgängern und dem Abschluss geordnet.
Algorithmus
Bei einem symmetrischen Matrix wir visualisieren die Matrix als die Adjazenzmatrix von a Graph. Der Cuthill -Mckee -Algorithmus ist dann eine Wiedergutmachung der Eckpunkte der Grafik, um die Bandbreite der Adjazenzmatrix zu verringern.
Der Algorithmus erzeugt eine bestellte n-tupel von Scheitelpunkten, die die neue Ordnung der Eckpunkte ist.
Zuerst wählen wir a peripherer Scheitelpunkt (der Scheitelpunkt mit dem niedrigsten Grad) und set .
Dann für Wir iterieren die folgenden Schritte während
- Konstruieren Sie den Adjazenzsatz von (mit das i-TH -Komponente von ) und die Eckpunkte ausschließen, in denen wir bereits haben
- Sortieren Aufstieg durch den minimalen Vorgänger (der bereits besuchte Nachbar mit der frühesten Position in R) und als Tiebreak aufsteigend von Scheitelpunktgrad.[4]
- Anhängen zum Ergebnissatz .
Mit anderen Worten, nummerieren Sie die Eckpunkte nach einem bestimmten Strukturstruktur (berechnet von Breite-First-Suche) wobei die Scheitelpunkte in jeder Ebene in der Reihenfolge der Nummerierung des Vorgängers vom niedrigsten bis zum höchsten besucht werden. Wenn die Vorgänger gleich sind, werden die Scheitelpunkte nach Grad unterschieden (wieder von niedrigsten bis höchsten).
Siehe auch
Verweise
- ^ E. Cuthill und J. McKee. Reduzierung der Bandbreite spärlicher symmetrischer Matrizen In Proc. 24. Nat. Conf. ACM, Seiten 157–172, 1969.
- ^ "Ciprian Zavoianu - Weblog: Tutorial: Bandbreite Reduktion - Der Cuthill -Mckee -Algorithmus".
- ^ J. A. George und J. W-H. Liu, Computerlösung von großen spärlichen positiven Systemen, Prentice-Hall, 1981
- ^ Der Reverse Cuthill-Mckee-Algorithmus in verteiltem Memory [1], Folie 8, 2016
- Cuthill -Mckee -Dokumentation für die Steigern Sie C ++ - Bibliotheken.
- Eine detaillierte Beschreibung des Cuthill -Mckee -Algorithmus.
- symrcm MATLAB -Implementierung von RCM.
- reverse_cuthill_mckee RCM -Routine von Scipy geschrieben in Cython.