Arten von Diagrammen in der Datenstruktur mit Beispielen

โšก Intelligente Zusammenfassung

Graphen in der Datenstruktur sind nichtlineare Sammlungen von Knoten und Kanten, die anhand ihrer Struktur in Familien wie gerichtete, ungerichtete, gewichtete, zyklische, azyklische, vollstรคndige, zusammenhรคngende, bipartite, Euler- und Hamilton-Graphen eingeteilt werden.

  • ๐Ÿ“ Definition: Ein Graph G = (V, E) ist eine nichtlineare Struktur, wobei V die Knotenmenge und E die Kantenmenge ist, die Paare von Knoten verbindet.
  • โžก๏ธ Richtung: Gerichtete Graphen verwenden Kanten mit Pfeilen und einem festen Start- und Zielpunkt, wรคhrend ungerichtete Graphen eine bidirektionale Bewegung entlang jeder Kante ermรถglichen.
  • ๏ธ Gewicht: Gewichtete Graphen ordnen jeder Kante einen numerischen Kostenwert zu, wรคhrend ungewichtete Graphen alle Kanten als Verbindungen mit gleichen Kosten behandeln.
  • ๐Ÿ” Fahrrรคder: Zyklische Graphen enthalten einen oder mehrere Zyklen; ein gerichteter azyklischer Graph (DAG) verbietet Zyklen und ermรถglicht die Ablaufplanung und topologische Sortierung.
  • ๐Ÿ”— Vollstรคndigkeit: Vollstรคndige Graphen verbinden jedes Knotenpaar, zusammenhรคngende Graphen erlauben einen Pfad zwischen je zwei Knoten, und Nullgraphen haben null Kanten.
  • ๐Ÿงฉ Sondertypen: Bipartite, Euler-, Hamilton-, Multi-, Cycle- und Trivialgraphen legen jeweils eine spezifische Regel fรผr die Anordnung von Knoten und Kanten fest.

Arten von Diagrammen in der Datenstruktur

Ein Graph ist eine nichtlineare Datenstruktur, die aus Knoten und Kanten besteht. Die Knoten enthalten die Informationen oder Daten, und die Kanten fungieren als Verbindung zwischen zwei Knoten.

Es gibt verschiedene Arten von Graphen, je nach Position der Knoten und Kanten. Hier sind einige wichtige Graphtypen:

Gerichteter Graph

Die Kanten eines gerichteten Graphen enthalten Pfeile, die die Richtung angeben. Der Pfeil bestimmt, wohin die Kante zeigt oder wohin sie endet. Hier ist ein Beispiel fรผr einen gerichteten Graphen.

Gerichteter Graph

Gerichteter Graph

  • Wir kรถnnen von Knoten A nach D gehen.
  • Wir kรถnnen jedoch nicht von Knoten D zu Knoten A gelangen, da die Kante von A nach D zeigt.
  • Da der Graph keine Gewichtungen hat, kostet die Fahrt von Scheitelpunkt A nach D genauso viel wie die Fahrt von D nach F.

Ungerichteter Graph

Ein ungerichteter Graph enthรคlt Kanten ohne Zeiger. Das bedeutet, dass man zwischen zwei Knoten in beide Richtungen reisen kann. Hier ist ein einfaches Beispiel fรผr einen ungerichteten Graphen.

Ungerichteter Graph

Ungerichteter Graph

In der obigen Grafik:

  • Wir kรถnnen von A nach B gelangen.
  • Wir kรถnnen auch von B nach A wechseln.
  • Kanten enthalten keine Richtungen.

Es handelt sich um ein Beispiel fรผr einen ungerichteten Graphen mit einer endlichen Anzahl von Knoten und Kanten ohne Gewichte.

Gewichtetes Diagramm

Ein Graph, dessen Kanten Gewichte oder Kosten aufweisen, wird als gewichteter Graph bezeichnet. Der numerische Wert reprรคsentiert im Allgemeinen die Kosten fรผr die Bewegung von einem Knoten zu einem anderen. Sowohl gerichtete als auch ungerichtete Graphen kรถnnen Kantengewichte haben. Hier ist ein Beispiel fรผr einen gewichteten Graphen (gerichtet).

Gerichteter Graph mit Gewicht

Gerichteter Graph mit Gewicht

  • Von A nach B gibt es einen Vorteil, und das Gewicht betrรคgt 5, was bedeutet, dass der รœbergang von A nach B uns 5 kostet.
  • A zeigt auf B, aber in diesem Graphen hat B keine direkte Kante รผber A. Daher kรถnnen wir nicht von B nach A reisen.
  • Um von A nach F zu gelangen, gibt es mehrere Wege. Diese Wege sind ADF und ABF. Der Weg ADF kostet (10+11) oder 21.
  • Hier kostet der Pfad ABF (5+15) oder 20. Hierbei addieren wir das Gewicht jeder Kante im Pfad.

Hier ist ein Beispiel fรผr einen ungerichteten Graphen mit Gewichten:

Ungerichteter Graph mit Gewicht

Ungerichteter Graph mit Gewicht

Hier hat die Kante Gewicht, aber keine Richtung. Das bedeutet also, dass die Fahrt von Scheitelpunkt A nach D 10 kostet und umgekehrt.

Bidirektionaler Graph

Bidirektionale und ungerichtete Graphen haben eine gemeinsame Eigenschaft. Und zwar:

  • Im Allgemeinen kann ein ungerichteter Graph eine Kante zwischen zwei Knoten aufweisen.

Beispielsweise:

Bidirektionaler Graph

  • Hier kostet der Umzug von A nach D oder von D nach A 10.
  • In einem bidirektionalen Graphen kรถnnen wir zwei Kanten zwischen zwei Eckpunkten haben.

Ein Beispiel:

Bidirektionaler Graph

Bidirektionaler Graph

Die Reise von A nach D kostet uns 17, die Reise von D nach A hingegen 12. Daher kรถnnen wir in einem ungerichteten Graphen nicht zwei unterschiedliche Gewichte zuweisen.

Unendliche Grafik

Der Graph enthรคlt unendlich viele Kanten und Knoten. Ist ein Graph unendlich und gleichzeitig zusammenhรคngend, so besitzt er ebenfalls unendlich viele Kanten. Die erweiterten Kanten bedeuten, dass weitere Kanten mit diesen Knoten verbunden sein kรถnnen. Hier ist ein Beispiel fรผr einen unendlichen Graphen:

Unendliche Grafik

Unendliche Grafik

Nulldiagramm

Ein Nullgraph enthรคlt nur Knoten, aber keine Kanten. Gegeben sei ein Graph G = (V, E), wobei V die Anzahl der Knoten und E die Anzahl der Kanten ist. Er ist genau dann ein Nullgraph, wenn die Anzahl der Kanten E null ist. Hier ist ein Beispiel fรผr einen Nullgraphen:

Nulldiagramm

Nulldiagramm

Trivialer Graph

Eine Graphdatenstruktur gilt als trivial, wenn sie nur einen Knoten ohne Kanten enthรคlt. Hier ist ein Beispiel fรผr einen trivialen Graphen:

Trivialer Graph

Multi-Graph

Ein Graph wird als Multigraph bezeichnet, wenn zwischen zwei Knoten mehrere Kanten existieren oder ein Knoten eine Schleife enthรคlt. Der Begriff โ€žSchleifeโ€œ in der Graphendatenstruktur bezeichnet eine Kante, die auf denselben Knoten verweist. Ein Multigraph kann gerichtet oder ungerichtet sein. Hier ist ein Beispiel fรผr einen Multigraph:

Multi-Graph

Es gibt zwei Kanten von B nach A. AuรŸerdem enthรคlt Knoten E eine Schleife. Der obige Graph ist ein gerichteter Graph ohne Kantengewichte.

Vollstรคndige Grafik

Ein Graph heiรŸt vollstรคndig, wenn jeder Knoten mit allen anderen Knoten durch gerichtete oder ungerichtete Kanten verbunden ist. Angenommen, es gibt insgesamt V Knoten und jeder Knoten hat genau V-1 Kanten. Dann wird dieser Graph als vollstรคndiger Graph bezeichnet. In einem solchen Graphen ist jeder Knoten mit allen anderen Knoten durch Kanten verbunden. Hier ist ein Beispiel fรผr einen vollstรคndigen Graphen mit fรผnf Knoten:

Vollstรคndige Grafik

Auf dem Bild ist zu erkennen, dass die Gesamtzahl der Knoten fรผnf betrรคgt und jeder Knoten genau vier Kanten hat.

Verbundenes Diagramm

Ein Graph heiรŸt zusammenhรคngend, wenn man von einem Knoten aus zu jedem anderen Knoten gelangen kann. Dazu muss zwischen jedem Knotenpaar mindestens eine Kante existieren. Hier ist ein Beispiel fรผr einen zusammenhรคngenden Graphen:

Verbundenes Diagramm

Hier folgt eine Erlรคuterung des oben dargestellten verbundenen Graphen:

  • Angenommen, es gibt keine Kante zwischen C und F, dann kรถnnen wir nicht von A nach G gelangen. Die Kante C nach F ermรถglicht es uns jedoch, von einem gegebenen Knoten zu jedem beliebigen Knoten zu gelangen.
  • Ein vollstรคndiger Graph ist ein verbundener Graph, da wir von einem Knoten zu jedem anderen Knoten im gegebenen Graphen wechseln kรถnnen.

Zyklischer Graph

Ein Graph wird als zyklisch bezeichnet, wenn er einen oder mehrere Zyklen enthรคlt. Hier ist ein Beispiel fรผr einen zyklischen Graphen:

Zyklischer Graph

Hier bilden die Knoten A, B und C einen Zyklus. Ein Graph kann mehrere Zyklen enthalten.

Gerichteter azyklischer Graph (DAG)

Ein Graph wird als gerichteter azyklischer Graph (DAG) bezeichnet, wenn er keine Zyklen enthรคlt. DAGs sind wichtig bei der... Topologische Sortierung oder um die Ausfรผhrungsreihenfolge zu ermitteln. DAGs sind auch wichtig fรผr die Erstellung von Scheduling-Systemen oder die Analyse von Ressourcenabhรคngigkeiten usw. Der obige Graph enthรคlt jedoch keinen Zyklus. Hier ist ein einfaches Beispiel fรผr einen gerichteten azyklischen Graphen (DAG):

Gerichteter azyklischer Graph (DAG)

Zyklusdiagramm

Ein Zyklusgraph ist nicht dasselbe wie ein zyklischer Graph. In einem Zyklusgraphen ist jeder Knoten mit genau zwei Kanten verbunden, was bedeutet, dass jeder Knoten genau zwei Grade hat. Hier ist ein Beispiel fรผr einen Zyklusgraphen:

Zyklusdiagramm

Zweiteiliger Graph

Diese Arten von Graphs Bipartite Graphen sind spezielle Graphen, bei denen die Knoten zwei Mengen zugeordnet sind. Ein bipartiter Graph muss folgender Regel genรผgen:

  • Die beiden Mengen von Knotenpunkten sollten verschieden sein, das heiรŸt, alle Knotenpunkte mรผssen in zwei Gruppen oder Mengen aufgeteilt werden.
  • Gleichartige Knoten sollten keine Kanten bilden.

Zweiteiliger Graph

Euler-Diagramm

Eine Graph-Datenstruktur wird als Euler-Graph bezeichnet, wenn alle Knoten einen geraden Grad aufweisen. Der Grad eines Knotens bezeichnet die Anzahl der Kanten, die zu einem bestimmten Knoten fรผhren oder von diesem ausgehen. Hier ist ein Beispiel fรผr einen Euler-Graphen:

Euler-Diagramm

Alle Knoten haben einen geraden Grad. Die Knoten A, D, E und H haben den Grad zwei. Knoten C hat den Grad vier, was ebenfalls gerade ist.

Hamilton-Diagramm

Ein Hamilton-Graph ist ein zusammenhรคngender Graph, bei dem man von einem gegebenen Knoten aus alle Knoten besuchen kann, ohne denselben Knoten erneut zu besuchen oder dieselbe Kante zu benutzen. Diese Art von zusammenhรคngendem Graph wird als โ€žHamilton-Graphโ€œ bezeichnet. Der Pfad, den man durchlรคuft, um zu รผberprรผfen, ob der gegebene Graph ein Hamilton-Graph ist oder nicht, wird als Hamiltonpfad bezeichnet. Hier ist ein einfaches Beispiel fรผr einen Hamilton-Graphen:

Hamilton-Diagramm

In diesem Bild kรถnnen wir alle Eckpunkte von jedem Knoten im obigen Diagramm aus besuchen. Einer der Wege kann sein ADCHBEEs ist auch mรถglich, einen Hamiltonkreis zu finden. Ein Hamiltonkreis beginnt und endet im selben Knoten. Der Hamiltonkreis lautet also: ADCHBEA.

Hรคufig gestellte Fragen

Ein Graph ist eine nichtlineare Datenstruktur, die aus Knoten (Vertices) und Kanten (Links) besteht. Knoten speichern Daten, und Kanten verbinden jeweils zwei Knoten. So entstehen Netzwerke, die zur Modellierung von StraรŸen, sozialen Beziehungen, Abhรคngigkeiten und vielem mehr verwendet werden.

Gerichtete Graphen verwenden Kanten mit Pfeilen, die von einem Startknoten zu einem Zielknoten zeigen und die Bewegung auf diese Richtung beschrรคnken. Ungerichtete Graphen verwenden Kanten ohne Pfeile, wodurch die Bewegung zwischen den verbundenen Knoten in beide Richtungen mรถglich ist.

Ein gerichteter azyklischer Graph (DAG) ist ein gerichteter Graph ohne Zyklen. DAGs werden hรคufig fรผr die Aufgabenplanung, Build-Systeme, die Auflรถsung von Paketabhรคngigkeiten und alle Workflows verwendet, die eine gรผltige topologische Reihenfolge erfordern.

Ein gewichteter Graph ordnet jeder Kante ein numerisches Gewicht zu, das Entfernung, Zeit oder Kosten reprรคsentiert. Kรผrzeste-Wege-Algorithmen wie der Dijkstra-Algorithmus und Netzwerk-Routing-Protokolle verwenden gewichtete Graphen, um den effizientesten Pfad zu finden.

Ein vollstรคndiger Graph besitzt zwischen je zwei Knoten eine Kante. Ein zusammenhรคngender Graph benรถtigt zwischen je zwei Knoten lediglich einen Pfad. Jeder vollstรคndige Graph ist zusammenhรคngend, aber nicht jeder zusammenhรคngende Graph ist vollstรคndig.

Bipartite Graphen teilen die Knoten in zwei disjunkte Mengen auf, wobei Kanten nur zwischen den beiden Mengen bestehen. Sie modellieren Zuordnungsprobleme wie die Zuweisung von Arbeitskrรคften zu Jobs, von Studierenden zu Kursen oder von Fahrern zu Fahrgรคsten im Fahrdienst.

Graph-Neuronale Netze wenden maschinelles Lernen auf graphenstrukturierte Daten an, beispielsweise fรผr Betrugserkennung, Wirkstoffforschung und Empfehlungssysteme. Wissensgraphen bilden die Grundlage fรผr die Beantwortung von Fragen durch KI, und Berechnungsgraphen beschreiben jeden Vorwรคrts- und Rรผckwรคrtsschritt im Deep Learning.

Ja. KI-gestรผtzte Copilot-Tools wie GitHub Copilot und ChatGPT generieren in den meisten Programmiersprachen Boilerplate-Code fรผr BFS, DFS, Dijkstra und topologische Sortierung. Entwickler mรผssen jedoch weiterhin Randfรคlle, Zyklenbehandlung und Komplexitรคt fรผr den Produktivbetrieb รผberprรผfen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: