Dünnbesetzte Matrix
# Dünnbesetzte Matrix

In der numerischen Mathematik bezeichnet man als dünnbesetzte oder schwachbesetzte Matrix (englisch sparse matrix) eine Matrix, bei der so viele Einträge aus Nullen bestehen, dass man nach Möglichkeiten sucht, dies insbesondere hinsichtlich Algorithmen sowie Speicherung auszunutzen. Bei quadratischen Matrizen mit insgesamt $n^{2}$ Einträgen sind dies viele Matrizen mit $O(n)$ oder auch noch $O(n\cdot \log n)$ Einträgen ungleich Null. Das Gegenstück zu einer dünnbesetzten Matrix wird vollbesetzte Matrix genannt. Der Begriff wurde von James Hardy Wilkinson eingeführt, der ihn erstmals 1971 niederschrieb. Analog dazu wird ein Vektor, der zu einem Großteil aus Nullen besteht, als dünnbesetzter Vektor (englisch sparse vector) bezeichnet. Häufig sind die Zeilen- oder Spaltenvektoren einer dünnbesetzten Matrix dünnbesetzte Vektoren, es gibt aber auch dünnbesetzte Matrizen, bei denen manche Zeilen oder Spalten vollbesetzt sind.

## Verwendung

Die Diskretisierung von partiellen Differentialgleichungen führt meistens auf dünnbesetzte Matrizen, etwa auf Bandmatrizen, ebenfalls die Darstellung von vielen typischen Graphen (bei beschränktem Knotengrad, Planarität o. Ä.) über ihre Adjazenzmatrix. Zu beachten ist, dass die Inverse einer dünnbesetzten Matrix im Regelfall vollbesetzt ist, ebenso wie die LR-Zerlegung. Eine Ausnahme bilden dabei die Bandmatrizen, bei denen eine solche Zerlegung ebenfalls dünnbesetzt sein kann.

Dünnbesetzte Matrizen haben die Eigenschaft, dass sie effizient abgespeichert werden können, indem man nur Position und Wert der Nicht-Null-Einträge abspeichert. Die Position der Nichtnulleinträge wird auch als Besetzungsstruktur oder Sparsity Pattern bezeichnet. Die Auswertung eines dünnbesetzten Matrix-Vektor-Produkts kann ebenfalls effizient erfolgen, indem die Nullen in der Berechnung des Produkts nicht berücksichtigt werden.

Dieses findet insbesondere Verwendung bei Krylow-Unterraum-Verfahren zur näherungsweisen Lösung von linearen Gleichungssystemen, die nur Skalar- und Matrix-Vektor-Produkte zur Durchführung benötigen. Da die Berechnung der vollbesetzten LR-Zerlegung $O(n^{3})$ Operationen benötigt, das Matrix-Vektor-Produkt einer Matrix mit $O(n)$ Einträgen aber nur $O(n)$, sind diese Verfahren, falls sie nach nur wenigen Iterationen konvergieren, extrem effizient. Zur Effizienzsteigerung werden dort so genannte Vorkonditionierer eingesetzt. Für dünnbesetzte Matrizen ist hier die unvollständige LU-Zerlegung ein verbreitetes Verfahren, das eine fehlerbehaftete LR-Zerlegung berechnet, die aber eine ähnliche Besetzungsstruktur hat wie die originale Matrix und damit nicht wesentlich mehr Speicher braucht.

CRS (Compressed Row Storage) und CCS (Compressed Column Storage) sind zwei Möglichkeiten, eine dünnbesetzte Matrix platzsparend zu speichern.

