Repräsentation von Graphen

Wie könnte man Graphen repräsentieren?

(1A) Gruppe A: Betrachte den Graphen rechts. Wie könnte man diesen Graphen in einer Tabelle darstellen? Notiere deine Ideen und probiere sie aus!

(1B) Gruppe B: Betrachte den Graphen rechts. Wie könnte man diesen Graphen in einer Liste darstellen? Notiere deine Ideen und probiere sie aus!

Adjazenz - Was ist das?

Bei ungerichteten Graphen sind alle verbundenen Knoten adjazent (siehe Abbildung rechts). Bei einem gerichteten Graphen hingegen nur die, die durch …

(2) In der Abbildung siehst du die Mitgliedsstaaten der EU. Manche der Staaten sind aufgrund gemeinsamer Grenzen adjazent. Erstelle einen Graphen einen Graphen der dieses Nachbarschaftsverhältnis wiedergibt.

Quelle: Stefan Eling: https://www.hanisauland.de/wissen/spezial/politik/europaeische-union/europaeische-union-kapitel-1.html (10.10.2022).

Zwei mögliche Repräsentationen

(3A) Wenn du in der Gruppe A bist, bearbeite bitte diese Seite: Adjazenzmatrix

(3B) Wenn du in der Gruppe B bist, bearbeite bitte diese Seite: Adjazenzliste

Übungen für beide Gruppen

Es folgen verschiedene Aufgaben. Um deine Lösungen zu überprüfen, kannst du folgendes Tool verwenden: https://graphonline.ru/de/

Kurzanleitung

Graph → Matrix: Graph über Knoten hinzufügen und Knoten verbinden erstellen. Unter Graph>Adjazenzmatrix die Matrix anzeigen lassen.

Listen → Graph: https://graphonline.ru/de/create_graph_by_edge_list (Anleitung angegeben).

Matrix → Graph: Matrix eingeben unter Graph>Adjazenzmatrix oder https://graphonline.ru/de/create_graph_by_matrix.

Graph → Listen: Leider nicht möglich! Selber denken! :)

(4) gerichtet/ungerichtet

(5) gewichtet/ungewichtet

(6) Kante/Knoten entfernen/einfügen

(7) vollständiger Graph/Multigraph

(8) Isomrophie

Effizienz- und Laufzeitanalyse

Die verschiedenen Repräsentationen der Graphen haben Vor- und Nachteile. Man kann z.B. den benötigten Speicherplatz und die Laufzeit für Zugriffsoperationen auf den Graphen bewerten. Dabei muss man Anwendungen unterscheiden, bei denen relativ dünne Graphen auftreten, und Anwendungen, bei denen der Graph (nahezu) vollständig ist. Repräsentiert der Graph z.B. eine Karte mit Straßen und Kreuzungen, gehen von jedem Knoten (= Kreuzung) nur wenige Kanten (= Straßen) ab. Mehr als 4-5 Straßen gehen üblicherweise nicht von einer Kreuzung aus. Diese Zahl ändert sich auch nicht, wenn die Anzahl der Knoten steigt. Der Graph ist also sehr dünn. Betrachtet man einen vollständigen Graphen, steigt bei einer Erhöhung der der Knotenzahl damit auch die Zahl der Kanten pro Knoten.

Effizienzanalyse (Speicherplatz)

Angenommen es geht um einen ungerichteten und gewichteten Graphen. Dann muss folgendes gespeichert werden:

Adjazenzliste: Zwei Zahlen (Nummer des Nachbarknoten, Entfernung) werden gespeichert.

Adjazenzmatrix: Eine Zahl (Entfernung) wird in jeder Zelle gespeichert (0 für keine Kante).

(x) Ermittle anhand der Tabelle den Speicherbedarf für einen dünnen Graphen mit vier Kanten pro Knoten und einen vollständigen. Die Berechnung für fünf und mehr Knoten hilft dir dabei. Entscheide begründet welche Repräsentationsform im Sinne des Speicherbedarfs effizienter ist.

Anzahl der Knoten	dünner Graph (4 Kanten pro Knoten)	vollständiger Graph
Adjazenzlisten	Adjazenzmatrix	Adjazenzlisten	Adjazenzmatrix
5	5*4*2 = 40 Zahlen	5*5 = 25 Zahlen	5*4*2 = 40 Zahlen	25 Zahlen
6
7
8
9
n

Tipp

Knoten * Kanten * ?

Laufzeitanalyse

Wir betrachten wieder eine ungerichteten, gewichteten Graphen. Die Laufzeit einzelner Operationen hängt von der Art der Implementierung ab.

Adjazenzliste: Ein Array enthält für jeden Knoten eine einfach verkettete Liste der Kanten.

Adjazenzmatrix: Zweidimensionales Array.

(x) Ermittle anhand der Tabelle die Laufzeiten für verschiedene Operationen auf einem dünnen Graphen mit vier Kanten pro Knoten und einem vollständigen. Entscheide begründet welche Repräsentationsform im Sinne der Laufzeit effizienter ist.

Operation	dünner Graph (4 Kanten pro Knoten)	vollständiger Graph
Adjazenzlisten	Adjazenzmatrix	Adjazenzlisten	Adjazenzmatrix
Länge einer Kante?	O(1)	O(1)	O(n)	O(1)
Ausgangsgrad eines Knotens?
Einfügen Kante
Einfügen Knoten
Löschen Kante
Löschen Knoten

(Quelle: Verändert nach: ZPG Informatik, Schaller 2020)

Reflexionsfragen

(x) Diskutiere die Vor- und Nachteile beider Repräsentationsformen. Erstelle dazu eine Tabelle wie diese:

Adjazenzmatrix	Adjazenzlisten
Vorteile	- …	- …
Nachteile	- …	- …

Implementation

[n/a: No match]