Graphen: Adjazenzliste

Beginner Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

Ein Graph besteht aus Knoten und Kanten. Eine knotenweise Nachbarschaftsdarstellung speichert für jeden Knoten die Liste seiner Nachbarn. Sparse Graphen brauchen damit $O(n + m)$ Speicher.

Eine n x n-Matrix ist $O(n^{2})$ und schnell bei dichten Graphen und Kantenabfragen in $O(1)$.

In Java: Map> oder List>.

Diagram

Gitter als Graph: Number of Islands [1].

Wo gebraucht

Soziale Netze, Microservice-Abhängigkeiten, Strassenkarten, Knowledge Graphs, Build-Dependency-Graphen. Adjazenzlisten dominieren bei sparse Graphen im Speicher.

Vertiefung

Bei der Nachbarlisten-Darstellung speichert jeder Knoten eine Sammlung direkt erreichbarer Ziele. Der Speicherbedarf ist proportional zur Zahl der Knoten plus Kanten und eignet sich daher besonders für dünn besetzte Graphen.

Das Aufzählen aller Nachbarn kostet proportional zum Grad des Knotens. Die Prüfung einer bestimmten Kante kann dagegen linear im Grad sein, sofern die Nachbarsammlung keine zusätzliche Hash- oder Suchstruktur besitzt.

Bei ungerichteten Graphen wird eine logische Kante häufig in beiden Richtungen gespeichert. Schleifen und parallele Kanten benötigen eine bewusste Modellentscheidung, weil sie Gradberechnung und Algorithmen beeinflussen.

Schwierigkeitsstufen

  1. Nachbarsammlungen aus einer Kantenmenge aufbauen.
  2. Speicher- und Abfragekosten nach Knotengrad analysieren.
  3. Doppelspeicherung ungerichteter Kanten korrekt berücksichtigen.

Fallstricke

Die Zahl gespeicherter Einträge ist bei ungerichteten Kanten meist doppelt so gross wie die logische Kantenzahl. Eine fehlende Zielmenge für isolierte Knoten lässt diese aus dem Graphmodell verschwinden.


Sources

University approvals: 0
Tasks
Question 1

Warum wächst der Speicher einer Adjazenzmatrix bei dünnen Graphen schneller als der einer Liste?

Question 2

Wovon hängen die Kosten zum Aufzählen aller Nachbarn eines Knotens ab?

Question 3

Füge eine ungerichtete Kante in eine Adjazenzliste ein.

Hint

Eine innere Nachbarliste erhältst du mit graph.get(vertex). Neue Nachbarn werden über deren Methode add(value) eingetragen.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Beginner
  • Completed: 0 users
Creator
Best
Best
BestBuddy