Index | Knoten |
0 | |
1 | |
2 | |
3 |
Implementation durch Adjazenzmatrizen
Unbewertete Kanten:
Bewertete Kanten:
Platzbedarf .
Direkter Zugriff auf Kante in konstanter Zeit möglich.
Kein effizientes Verarbeiten der Nachbarn eines Knotens.
Sinnvoll bei dicht besetzten Graphen, d.h. Graphen mit quadrisch vielen Kanten.
Sinnvoll bei Algorithmen, die wahlfreien Zugriff auf eine
Kante benötigen.
Implementation durch Adjazenzlisten
Wenn die Knoten des Graphen über ihren Index identifiziert werden, bietet sich zusätzlich zum Namens-Array ein Array von Integer-Listen an. Die an Position beginnende Liste enthält die Nachbarn von , genauer gesagt, sie enthält die Indizes der Nachbarn von .
Für bewertete Graphen muss ein Listeneintrag innerhalb der -ten Liste neben der Knoten-Nummer j auch die Kosten der Kante enthalten. Für den gerichteten Graphen auf Seite ergibt sich:
Eine objektorientierte Codierung würde die Knoten als Objekte modellieren, welche ihren Namen als String speichern und ihre Nachbarn als Kantenliste. Die Einträge der Kantenliste bestehen jeweils aus den Kosten der Kante und einem Verweis auf den Knoten. Über ein assoziatives Array (implementiert als Hash-Map) gelangt man vom Namen eines Knotens zu seinem Objekt. Für den gerichteten Graphen auf Seite ergibt sich:
Platzbedarf =
Kein effizienter Zugriff auf Kante möglich.
Sinnvoll bei dünn besetzten Graphen, d.h. Graphen mit nur linear vielen Kanten.
Sinnvoll bei Algorithmen, die, gegeben ein Knoten , dessen
Nachbarn verarbeiten müssen.