Gerichteter Graph
Ein gerichteter Graph oder Digraph (von englisch directed graph) besteht aus
- einer Menge Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle V} von Knoten (englisch vertex/vertices, oft auch Ecken genannt) und
- einer Menge geordneter Knotenpaare Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle E \subseteq V \times V} von Kanten.[1]
Die Kanten Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle (v,w) \in E} eines gerichteten Graphen sind gerichtete Kanten (englisch directed edge/edges, manchmal auch Bögen). Diese werden häufig als Pfeile dargestellt und können nur in einer Richtung durchlaufen werden. Im Gegensatz dazu sind die Kanten eines ungerichteten Graphen ungeordnete Knotenpaare Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \{v,w\}} . Gerichtete Graphen werden dazu benutzt, Objekte und die dazwischenliegenden Verbindungen, beispielsweise von endlichen Automaten, darzustellen.
Grundbegriffe
Ein gerichteter Graph ohne Mehrfachkanten und Schleifen wird einfacher Digraph[2] (auch schlichter Digraph) genannt.
Man sagt, dass eine gerichtete Kante Fehler beim Parsen (Konvertierungsfehler. Der Server („https://wikimedia.org/api/rest_“) hat berichtet: „Cannot get mml. Server problem.“): {\displaystyle e=(x,y)} von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x} nach Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle y} geht. Dabei ist Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x} der Fuß (oder Startknoten) und Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle y} der Kopf (oder Endknoten) von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle e} . Weiterhin gilt Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle y} als der direkte Nachfolger von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x} und als der direkte Vorgänger von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle y} . Falls in einem Graphen von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x} nach Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle y} ein Pfad führt, gilt Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle y} als ein Nachfolger von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x} und Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x} als ein Vorgänger von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle y} . Die Kante Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle (y, x)} heißt umgedrehte oder invertierte Kante von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle (x, y)} .
Ein gerichteter Graph heißt symmetrisch, falls zu jeder Kante auch die entsprechende invertierte Kante enthält. Ein ungerichteter Graph lässt sich einfach in einen symmetrischen gerichteten Graphen umwandeln, indem man jede Kante Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \{x, y\}} durch die zwei gerichteten Kanten Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle (x, y)} und Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle (y, x)} ersetzt.
Um eine Orientierung eines einfachen ungerichteten Graphen zu erhalten, muss jeder Kante eine Richtung zugewiesen werden. Jeder auf diese Art konstruierte gerichtete Graph wird orientierter Graph genannt. Ein einfach gerichteter Graph darf, im Gegensatz zum orientierten Graphen, zwischen zwei Knoten Kanten in beide Richtungen enthalten.[1][3][4]
Ein gewichteter Digraph ist ein Digraph, dessen Kanten Gewichte zugeordnet werden, wodurch man einen kantengewichteten Graphen erhält. Ein Digraph mit gewichteten Kanten wird in der Graphentheorie als Netzwerk bezeichnet.[5]
Die Adjazenzmatrix eines Digraphen (mit Schleifen und Mehrfachkanten) ist eine ganzzahlige Matrix, deren Zeilen und Spalten den Knoten des Digraphen entsprechen. Ein Eintrag Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle a_{ij}} außerhalb der Hauptdiagonalen gibt die Anzahl der Kanten vom Knoten Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle i} zum Knoten Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle j} an, und der Eintrag der Hauptdiagonalen Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle a_{ii}} entspricht der Anzahl der Schleifen im Knoten . Die Adjazenzmatrix eines Digraphen ist bis auf Vertauschung von Zeilen und Spalten eindeutig.
Ein Digraph lässt sich auch durch eine Inzidenzmatrix repräsentieren.
Zusammenhängende gerichtete Graphen
Ein gerichteter Graph Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle G} heißt schwach zusammenhängend (oder nur zusammenhängend),[6] falls der unterliegende Graph von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle G} , den man mittels Ersetzung aller gerichteter Kanten durch ungerichtete erhält, ein zusammenhängender Graph ist. Ein gerichteter Graph heißt stark zusammenhängend oder stark, wenn je zwei seiner Knoten gegenseitig erreichbar sind. Ein maximaler stark zusammenhängender Untergraph von Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle G} ist eine starke Komponente.
Eingangs- und Ausgangsgrad
Die Anzahl der direkten Vorgänger eines Knotens wird Eingangsgrad (auch Innengrad) und die Anzahl der direkten Nachfolger Ausgangsgrad (oder Außengrad) genannt.
Der Eingangsgrad eines Knotens Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle v} in einem Graphen Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle G} wird mit Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle d_G^-(v)} und der Außengrad mit Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle d_G^+(v)} bezeichnet. Ein Knoten mit Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle d_G^-(v)=0} wird Quelle und ein Knoten mit Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle d_G^+(v)=0} wird Senke genannt. Eine Senke heißt universelle Senke, falls sie eingehende Kanten von jedem anderen Knoten hat, falls also ihr Eingangsgrad gleich Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle |V|-1} ist.
Für gerichtete Graphen ist die Summe aller Eingangsgrade gleich der Summe aller Ausgangsgrade, und beide gleich der Summe der gerichteten Kanten:
- Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \sum_{v \in V} d_G^+(v) = \sum_{v \in V} d_G^-(v) = |E|\, .}
Falls für alle Knoten Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle v \in V} die Gleichung Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle d_G^+(v) = d_G^-(v)} gilt, wird der Graph balancierter Digraph genannt.[7][8]
Darstellung von gerichteten Graphen
Außer der naiven Darstellung eines gerichteten Graphen durch Angabe der Knoten- und Kantenmenge gibt es noch weitere Darstellungsmöglichkeiten, das sogenannte Kanten bzw. Knotenfeld.
Kantenfeld
Ein Kantenfeld ist eine Darstellungsart für gerichtete Graphen nach folgendem Schema:
- Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle |V|, |E|, E_1,\ldots, E_{|E|}} ,
wobei Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle |V|} die Anzahl der Knoten, Fehler beim Parsen (Konvertierungsfehler. Der Server („https://wikimedia.org/api/rest_“) hat berichtet: „Cannot get mml. Server problem.“): {\displaystyle |E|} die Anzahl der Kanten und Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle E_1, \ldots, E_{|E|}} die Kanten mit Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle E_i = (v, w) \in E } sind.
Knotenfeld
Ein Knotenfeld ist eine Darstellungsart für gerichtete Graphen mit folgendem Aufbau:
- Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle |V|, |E|, \text{ag}(V_1), \text{Ziel}_1, \ldots, \text{Ziel}_{\text{ag}(V_1)}, \ldots, \text{ag}(V_{|V|}), \text{Ziel}_1, \ldots, \text{Ziel}_{\text{ag}(V_{|V|})}} ,
wobei Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle |V|} die Anzahl der Knoten, Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle |E|} die Anzahl der Kanten und Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \operatorname{ag}(V)} der Ausgangsgrad des Knotens Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle V} sind.
Beispiel
Betrachtet man als Beispiel den rechts stehenden gerichteten Graph, so ist das Kantenfeld Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle 4,6,(1,2),(1,4),(2,4),(3,1),(3,2),(4,3)} und das Knotenfeld Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle 4,6,\mathbf{2},2,4,\mathbf{1},4,\mathbf{2},1,2,\mathbf{1},3} . Die fett gedruckten Zahlen geben den Ausgangsgrad an.
Klassen von gerichteten Graphen
Symmetrisch gerichtete Graphen sind gerichtete Graphen, bei denen alle Kanten bidirektional sind, d. h. für jede Kante, die zum Graphen gehört, gehört auch die entsprechende umgekehrte Kante dazu.
Einfache gerichtete Graphen sind gerichtete Graphen ohne Schleifen und ohne Mehrfachkante.
Vollständige gerichtete Graphen sind einfache gerichtete Graphen, bei denen jedes Knotenpaar durch ein symmetrisches Paar gerichteter Kanten verbunden ist. Dies entspricht einem ungerichteten vollständigen Graphen, dessen Kanten durch Paare von gerichteten Kanten ersetzt werden. Daraus folgt, dass ein vollständiger gerichteter Graph symmetrisch ist.
Orientierte Graphen sind gerichtete Graphen ohne bidirektionale Kanten. Daraus folgt, dass ein gerichteter Graph genau dann ein orientierter Graph ist, wenn er keinen 2-Zyklus hat.
Turniergraphen sind orientierte Graphen, die durch Auswahl einer Richtung für jede Kante in ungerichteten vollständigen Graphen erhalten werden.
Ein gerichteter azyklischer Graph oder azyklischer Digraph ist ein gerichteter Graph, der keinen gerichteten Kreis enthält. Spezialfälle gerichteter azyklischer Graphen sind Mehrfachbäume (je zwei gerichtete Pfade des Graphen, die vom selben Startknoten ausgehen, dürfen sich nicht im selben Endknoten treffen), orientierte Bäume oder Polybäume (Orientierung eines ungerichteten azyklischen Graphen) und Wurzelbäume (orientierte Bäume, bei denen alle Kanten des unterliegenden ungerichteten Baumes vom Wurzelknoten wegführen).
Gewichtete gerichtete Graphen oder gerichtete Netzwerke sind einfache gerichtete Graphen mit Gewichten, die ihren Kanten zugewiesen sind, ähnlich wie gewichtete Graphen, die auch als ungerichtete Netzwerke oder gewichtete Netzwerke bezeichnet werden.
Flussnetzwerke sind gewichtete gerichtete Graphen mit zwei speziellen Knoten, der Quelle und der Senke.
Kontrollflussgraphen sind gerichtete Graphen, die in der Informatik zur Darstellung der Pfade verwendet werden, die während der Ausführung eines Computerprogramms durchlaufen werden können.
Signalflussgraphen sind gewichtete gerichtete Graphen, in denen Knoten Systemvariablen darstellen und Kanten funktionale Verbindungen zwischen Knotenpaaren darstellen.
Zustandsübergangsdiagramme sind gerichtete Multigraphen, die endliche Automaten darstellen.
Kommutative Diagramme sind gerichtete Graphen, die in der Kategorientheorie verwendet werden, wobei die Knoten mathematische Objekte und die Kanten mathematische Funktionen darstellen, mit der Eigenschaft, dass alle gerichteten Pfade mit demselben Start- und Endknoten durch Komposition zum gleichen Ergebnis führen.
Kombinatorik
Die Anzahl der einfachen gerichteten Graphen mit Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle n} Knoten steigt rasant mit der Anzahl der Knoten und ist gleich Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle 4^{\tfrac{n \cdot (n - 1)}{2}}} . Sie steigt also exponentiell zur Anzahl Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \tfrac{n \cdot (n - 1)}{2}} der Kanten des vollständigen Graphen Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle K_n} . Wenn die Knoten nicht nummeriert sind, isomorphe Graphen also nicht mitgezählt werden, ist diese Anzahl etwa proportional zu Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \tfrac{1}{n!} \cdot 4^{\tfrac{n \cdot (n - 1)}{2}}} , weil für die meisten Isomorphieklassen alle Graphen, die sich durch Permutation der nummerierten Knoten ergeben, verschieden sind. Die folgende Tabelle zeigt die mit Hilfe eines Computers bestimmten Anzahlen für Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\displaystyle n \leq 8} :[9][10][11]
Anzahl der gerichteten Graphen ohne nummerierte Knoten | |||
---|---|---|---|
n | alle | zusammenhängend | stark zusammenhängend |
1 | 1 | 1 | 1 |
2 | 3 | 2 | 1 |
3 | 16 | 13 | 5 |
4 | 218 | 199 | 83 |
5 | 9608 | 9364 | 5048 |
6 | 1540944 | 1530843 | 1047008 |
7 | 882033440 | 880471142 | 705422362 |
8 | 1793359192848 | 1792473955306 | 1580348371788 |
Programmierung
Das folgende Beispiel in der Programmiersprache C++ zeigt die Implementierung eines gerichteten Graphen mit Adjazenzlisten. Der gerichtete Graph wird als Klasse DirectedGraph deklariert. Bei der Ausführung des Programms wird die Methode main verwendet.[12]
#include <iostream>
using namespace std;
// Deklariert den Datentyp für die Knoten des Graphen
struct Node
{
int index;
string value;
Node* next;
};
// Deklariert den Datentyp für die Kanten des Graphen
struct Edge
{
int startIndex;
int endIndex;
};
// Deklariert die Klasse für den gerichteten Graphen
class DirectedGraph
{
public:
Node** headNode;
// Diese Methode fügt einen neuen Knoten in die Adjazenzliste des Graphen ein und gibt ihn als Rückgabewert zurück
Node* insertNewNode(int index, string value, Node* node)
{
Node* newNode = new Node; // Erzeugt einen neuen Knoten vom Typ Node
newNode->index = index; // Setzt den Index
newNode->value = value; // Setzt den Wert
newNode->next = node; // Setzt einen Zeiger auf den Nachfolger
return newNode;
}
// Konstruktor, der den gerichteten Graphen mit den gegebenen Knoten und Kanten erzeugt
DirectedGraph(Node nodes[], Edge edges[], int numberOfEdges, int numberOfNodes)
{
headNode = new Node*[numberOfNodes](); // Initialisiert ein Array von Zeigern für die Knoten
for (int i = 0; i < numberOfEdges; i++) // for-Schleife, die alle Kanten des Graphen durchläuft
{
int startIndex = edges[i].startIndex; // Index des Startknotens der Kante
int endIndex = edges[i].endIndex; // Index des Endknotens der Kante
string value = nodes[endIndex].value; // Wert des Endknotens der Kante
Node* newNode = insertNewNode(endIndex, value, headNode[startIndex]); // Aufruf der Methode insertNewNode, um einen neuen Knoten einzufügen
headNode[startIndex] = newNode; // Setzt den Zeiger auf den neuen Knoten
}
}
};
// Gibt alle benachbarten Knoten von node auf der Konsole aus
void writeAdjacencyList(Node* node, int i)
{
cout << "Knoten " << (i + 1) << ": ";
while (node != nullptr)
{
cout << "(" << node->index << ", " << node->value << ") ";
node = node->next;
}
cout << endl;
}
// Hauptmethode, die das Programm ausführt
int main()
{
// Deklariert und initialisiert Arrays für die Knoten und Kanten
Node nodes[] = { {0,"A"},{1,"B"},{2,"C"},{3,"D"},{4,"E"} };
Edge edges[] = { {0,1},{0,2},{1,4},{2,3},{3,1},{4,3} };
int numberOfNodes = sizeof(nodes); // Ermittelt die Anzahl der Knoten
int numberOfEdges = sizeof(edges) / sizeof(edges[0]); // Ermittelt die Anzahl der Kanten
DirectedGraph directedGraph(nodes, edges, numberOfEdges, numberOfNodes); // Erzeugt den gerichteten Graphen mit den gegebenen Knoten und Kanten
for (int i = 0; i < numberOfNodes; i++) // for-Schleife, die alle Knoten des Graphen durchläuft
{
Node* headNode = directedGraph.headNode[i];
writeAdjacencyList(headNode, i); // Gibt die Adjazenzliste für den Knoten headNode aus
}
}
Siehe auch
Literatur
- Jørgen Bang-Jensen, Gregory Gutin: Digraphs: Theory, Algorithms and Applications. Springer, 2000, ISBN 1-85233-268-9 (englisch, rhul.ac.uk).
- John Adrian Bondy, U. S. R. Murty: Graph Theory with Applications. North-Holland, 1976, ISBN 0-444-19451-7.
- Reinhard Diestel: Graph Theory. 3. Auflage. Springer, 2005, ISBN 3-540-26182-6 (diestel-graph-theory.com).
- Frank Harary, Robert Z. Norman, Dorwin Cartwright: Structural Models: An Introduction to the Theory of Directed Graphs. Wiley, New York 1965 (englisch).
Einzelnachweise
- ↑ a b Reinhard Diestel: Graphentheorie. 4. Auflage. Springer, Berlin u. a. 2010, ISBN 978-3-642-14911-5, S. 28–30 (englisch, 4. elektronische Ausgabe 2010 – Erstausgabe: 1996).
- ↑ Volker Turau: Algorithmische Graphentheorie. 3. Auflage. Oldenbourg Wissenschaftsverlag, München 2009, ISBN 978-3-486-59057-9, S. 20–24.
- ↑ Eric W. Weisstein: Oriented Graph. In: MathWorld (englisch).
- ↑ Eric W. Weisstein: Graph Orientation. In: MathWorld (englisch).
- ↑ Reinhard Diestel: Graphentheorie. 4. Auflage. Springer, Berlin u. a. 2010, ISBN 978-3-642-14911-5, S. 145–168 (englisch, 4. elektronische Ausgabe 2010 – Erstausgabe: 1996).
- ↑ Bang-Jensen, Gutin: Digraphs: Theory, Algorithms and Applications, 2. Auflage, 2009, S. 20.
- ↑ Bhavanari Satyanarayana, Kuncham Syam Prasad: Discrete Mathematics and Graph Theory. PHI Learning Pvt. Ltd., 2009, ISBN 978-81-203-3842-5, S. 460.
- ↑ Richard A. Brualdi: Combinatorial matrix classes. In: Encyclopedia of mathematics and its applications. Band 108. Cambridge University Press, 2006, ISBN 978-0-521-86565-4, S. 51.
- ↑ Folge A000088 in OEIS
- ↑ Folge A003085 in OEIS
- ↑ Folge A035512 in OEIS
- ↑ Software Testing Help: Graph Implementation In C++ Using Adjacency List