java graph tutorial how implement graph data structure
Dieses umfassende Java Graph Tutorial erklärt die Graphdatenstruktur im Detail. Es enthält Informationen zum Erstellen, Implementieren, Darstellen und Durchlaufen von Diagrammen in Java:
Eine Graphendatenstruktur repräsentiert hauptsächlich ein Netzwerk, das verschiedene Punkte verbindet. Diese Punkte werden als Scheitelpunkte bezeichnet, und die Verknüpfungen, die diese Scheitelpunkte verbinden, werden als 'Kanten' bezeichnet. Ein Graph g ist also definiert als eine Menge von Eckpunkten V und Kanten E, die diese Eckpunkte verbinden.
Diagramme werden meistens verwendet, um verschiedene Netzwerke wie Computernetzwerke, soziale Netzwerke usw. darzustellen. Sie können auch verwendet werden, um verschiedene Abhängigkeiten in Software oder Architekturen darzustellen. Diese Abhängigkeitsdiagramme sind sehr nützlich bei der Analyse der Software und manchmal auch beim Debuggen.
=> Überprüfen Sie ALLE Java-Tutorials hier.
Was du lernen wirst:
- Java Graph Datenstruktur
- Wie erstelle ich ein Diagramm?
- Graph-Implementierung in Java
- Java Graph Library
- Fazit
Java Graph Datenstruktur
Unten ist ein Graph mit fünf Eckpunkten {A, B, C, D, E} und Kanten angegeben, die durch {{AB}, {AC}, {AD}, {BD}, {CE}, {ED}} gegeben sind. Da die Kanten keine Richtungen anzeigen, wird dieses Diagramm als 'ungerichtetes Diagramm' bezeichnet.
![Ungerichtete Grafik](http://myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-2.png)
Abgesehen von dem oben gezeigten ungerichteten Diagramm gibt es in Java mehrere Varianten des Diagramms.
Lassen Sie uns diese Varianten im Detail diskutieren.
Verschiedene Varianten des Graphen
Im Folgenden sind einige Varianten des Diagramms aufgeführt.
# 1) Gerichtete Grafik
Ein gerichteter Graph oder Digraph ist eine Graphdatenstruktur, in der die Kanten eine bestimmte Richtung haben. Sie stammen von einem Scheitelpunkt und gipfeln in einem anderen Scheitelpunkt.
Das folgende Diagramm zeigt das Beispiel eines gerichteten Graphen.
![gerichteter Graph](http://myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-3.png)
Im obigen Diagramm gibt es eine Kante von Scheitelpunkt A zu Scheitelpunkt B. Beachten Sie jedoch, dass A bis B nicht mit B bis A identisch sind, wie in einem ungerichteten Diagramm, es sei denn, es ist eine Kante von B bis A angegeben.
Ein gerichteter Graph ist zyklisch, wenn es mindestens einen Pfad gibt, dessen erster und letzter Scheitelpunkt gleich sind. Im obigen Diagramm bildet ein Pfad A-> B-> C-> D-> E-> A einen gerichteten Zyklus oder einen zyklischen Graphen.
Umgekehrt ist ein gerichteter azyklischer Graph ein Graph, in dem es keinen gerichteten Zyklus gibt, d. H. Es gibt keinen Pfad, der einen Zyklus bildet.
# 2) Gewichteter Graph
In einem gewichteten Diagramm ein Gewichtist jeder Kante des Diagramms zugeordnet. Das Gewicht gibt normalerweise den Abstand zwischen den beiden Eckpunkten an. Das folgende Diagramm zeigt das gewichtete Diagramm. Da keine Richtungen angezeigt werden, ist dies das ungerichtete Diagramm.
![gewichteter Graph](http://myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-4.png)
Beachten Sie, dass ein gewichtetes Diagramm gerichtet oder ungerichtet sein kann.
Was ist der Netzwerkschlüssel für WLAN
Wie erstelle ich ein Diagramm?
Java bietet keine vollständige Implementierung der Diagrammdatenstruktur. Wir können das Diagramm jedoch programmgesteuert mithilfe von Sammlungen in Java darstellen. Wir können einen Graphen auch mit dynamischen Arrays wie Vektoren implementieren.
Normalerweise implementieren wir Diagramme in Java mithilfe der HashMap-Sammlung. HashMap-Elemente liegen in Form von Schlüssel-Wert-Paaren vor. Wir können die Diagramm-Adjazenzliste in einer HashMap darstellen.
Eine gebräuchlichste Methode zum Erstellen eines Diagramms ist die Verwendung einer der Darstellungen von Diagrammen wie der Adjazenzmatrix oder der Adjazenzliste. Wir werden diese Darstellungen als nächstes diskutieren und dann das Diagramm in Java unter Verwendung der Adjazenzliste implementieren, für die wir ArrayList verwenden werden.
Diagrammdarstellung in Java
Diagrammdarstellung bezeichnet den Ansatz oder die Technik, mit der Diagrammdaten im Speicher des Computers gespeichert werden.
Wir haben zwei Hauptdarstellungen von Graphen, wie unten gezeigt.
Adjazenzmatrix
Die Adjazenzmatrix ist eine lineare Darstellung von Graphen. Diese Matrix speichert die Zuordnung von Eckpunkten und Kanten des Diagramms. In der Adjazenzmatrix stehen Eckpunkte des Diagramms für Zeilen und Spalten. Dies bedeutet, wenn der Graph N Eckpunkte hat, hat die Adjazenzmatrix die Größe NxN.
Wenn V eine Menge von Eckpunkten des Graphen ist, dann schneidet M.ijIn der Adjazenzliste = 1 bedeutet, dass zwischen den Eckpunkten i und j eine Kante vorhanden ist.
Um dieses Konzept besser zu verstehen, erstellen wir eine Adjazenzmatrix für einen ungerichteten Graphen.
Wie aus dem obigen Diagramm ersichtlich, sehen wir, dass für den Scheitelpunkt A die Schnittpunkte AB und AE auf 1 gesetzt sind, da es eine Kante von A nach B und A nach E gibt. In ähnlicher Weise wird der Schnittpunkt BA auf 1 gesetzt, da dies ein ungerichteter ist Graph und AB = BA. In ähnlicher Weise haben wir alle anderen Schnittpunkte, für die es eine Kante gibt, auf 1 gesetzt.
Wenn der Graph gerichtet ist, ist der Schnittpunkt M.ijwird nur dann auf 1 gesetzt, wenn eine klare Kante von Vi nach Vj vorhanden ist.
Dies ist in der folgenden Abbildung dargestellt.
Wie aus dem obigen Diagramm ersichtlich ist, gibt es eine Kante von A nach B. Der Schnittpunkt AB wird also auf 1 gesetzt, der Schnittpunkt BA jedoch auf 0. Dies liegt daran, dass keine von B nach A gerichtete Kante vorhanden ist.
Betrachten Sie die Eckpunkte E und D. Wir sehen, dass es Kanten von E nach D sowie von D nach E gibt. Daher haben wir beide Schnittpunkte in der Adjazenzmatrix auf 1 gesetzt.
Nun kommen wir zu gewichteten Graphen. Wie wir für den gewichteten Graphen wissen, ist jeder Kante eine Ganzzahl zugeordnet, die auch als Gewicht bezeichnet wird. Wir stellen dieses Gewicht in der Adjazenzmatrix für die vorhandene Kante dar. Dieses Gewicht wird immer dann angegeben, wenn eine Kante von einem Scheitelpunkt zum anderen anstelle von „1“ vorhanden ist.
Diese Darstellung ist unten dargestellt.
Adjazenzliste
Anstatt einen Graphen als eine Adjazenzmatrix darzustellen, die sequentieller Natur ist, können wir auch eine verknüpfte Darstellung verwenden. Diese verknüpfte Darstellung wird als Adjazenzliste bezeichnet. Eine Adjazenzliste ist nichts anderes als eine verknüpfte Liste, und jeder Knoten in der Liste repräsentiert einen Scheitelpunkt.
Das Vorhandensein einer Kante zwischen zwei Scheitelpunkten wird durch einen Zeiger vom ersten zum zweiten Scheitelpunkt angezeigt. Diese Adjazenzliste wird für jeden Scheitelpunkt im Diagramm verwaltet.
Wenn wir alle benachbarten Knoten für einen bestimmten Knoten durchlaufen haben, speichern wir NULL im nächsten Zeigerfeld des letzten Knotens der Adjazenzliste.
Jetzt werden wir die obigen Diagramme verwenden, die wir zur Darstellung der Adjazenzmatrix verwendet haben, um die Adjazenzliste zu demonstrieren.
Die obige Abbildung zeigt die Adjazenzliste für das ungerichtete Diagramm. Wir sehen, dass jeder Scheitelpunkt oder Knoten seine Adjazenzliste hat.
Im Fall des ungerichteten Graphen beträgt die Gesamtlänge der Adjazenzlisten normalerweise die doppelte Anzahl von Kanten. In der obigen Grafik beträgt die Gesamtzahl der Kanten 6 und die Summe oder Summe der Länge aller Adjazenzlisten 12.
Nun erstellen wir eine Adjazenzliste für das gerichtete Diagramm.
Wie aus der obigen Abbildung ersichtlich, entspricht die Gesamtlänge der Adjazenzlisten des Diagramms im gerichteten Diagramm der Anzahl der Kanten im Diagramm. In der obigen Grafik gibt es 9 Kanten und die Summe der Längen der Adjazenzlisten für diese Grafik = 9.
Betrachten wir nun den folgenden gewichteten gerichteten Graphen. Beachten Sie, dass jeder Kante des gewichteten Diagramms eine Gewichtung zugeordnet ist. Wenn wir diesen Graphen mit der Adjazenzliste darstellen, müssen wir jedem Listenknoten ein neues Feld hinzufügen, das die Gewichtung der Kante angibt.
Die Adjazenzliste für das gewichtete Diagramm ist unten dargestellt.
Das obige Diagramm zeigt das gewichtete Diagramm und seine Adjazenzliste. Beachten Sie, dass in der Adjazenzliste ein neues Leerzeichen vorhanden ist, das die Gewichtung jedes Knotens angibt.
Graph-Implementierung in Java
Das folgende Programm zeigt die Implementierung eines Diagramms in Java. Hier haben wir die Adjazenzliste verwendet, um das Diagramm darzustellen.
import java.util.*; //class to store edges of the weighted graph class Edge { int src, dest, weight; Edge(int src, int dest, int weight) { this.src = src; this.dest = dest; this.weight = weight; } } // Graph class class Graph { // node of adjacency list static class Node { int value, weight; Node(int value, int weight) { this.value = value; this.weight = weight; } }; // define adjacency list List adj_list = new ArrayList(); //Graph Constructor public Graph(List edges) { // adjacency list memory allocation for (int i = 0; i Ausgabe:
![Ausgabe](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-11.png)
Graph Traversal Java
Um eine sinnvolle Aktion wie das Suchen nach Daten durchzuführen, müssen wir das Diagramm so durchlaufen, dass jeder Scheitelpunkt und jede Kante des Diagramms mindestens einmal besucht wird. Dies geschieht mit Diagrammalgorithmen, die nichts anderes als eine Reihe von Anweisungen sind, die uns beim Durchlaufen des Diagramms helfen.
Es werden zwei Algorithmen unterstützt, um das Diagramm in Java zu durchlaufen .
- Tiefendurchquerung
- Breite zuerst durchqueren
Tiefendurchquerung
Die Tiefensuche (DFS) ist eine Technik, mit der ein Baum oder ein Diagramm durchlaufen wird. Die DFS-Technik beginnt mit einem Wurzelknoten und durchläuft dann die benachbarten Knoten des Wurzelknotens, indem sie tiefer in das Diagramm eintaucht. Bei der DFS-Technik werden die Knoten in der Tiefe durchlaufen, bis keine Kinder mehr zu erkunden sind.
Sobald wir den Blattknoten erreicht haben (keine untergeordneten Knoten mehr), zieht sich die DFS zurück und beginnt mit anderen Knoten und führt auf ähnliche Weise eine Durchquerung durch. Die DFS-Technik verwendet eine Stapeldatenstruktur, um die Knoten zu speichern, die durchlaufen werden.
Es folgt der Algorithmus für die DFS-Technik.
Algorithmus
Schritt 1: Beginnen Sie mit dem Wurzelknoten und fügen Sie ihn in den Stapel ein
Schritt 2: Nehmen Sie das Objekt vom Stapel und fügen Sie es in die Liste 'Besucht' ein
Schritt 3: Fügen Sie für Knoten, die als 'besucht' (oder in der Liste 'besucht') markiert sind, die benachbarten Knoten dieses Knotens, die noch nicht als besucht markiert sind, zum Stapel hinzu.
Schritt 4: Wiederholen Sie die Schritte 2 und 3, bis der Stapel leer ist.
Illustration der DFS-Technik
Nun werden wir die DFS-Technik anhand eines geeigneten Beispiels eines Diagramms veranschaulichen.
Unten ist ein Beispieldiagramm angegeben. Wir pflegen einen Stapel zum Speichern der erkundeten Knoten und eine Liste zum Speichern der besuchten Knoten.
![DFS-Technik](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-12.png)
Wir beginnen mit A, markieren es als besucht und fügen es der besuchten Liste hinzu. Dann werden wir alle benachbarten Knoten von A betrachten und diese Knoten wie unten gezeigt auf den Stapel schieben.
![ein Knoten aus dem Stapel](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-13.png)
Als nächstes nehmen wir einen Knoten aus dem Stapel, d. H. B, und markieren ihn als besucht. Wir fügen es dann der Liste 'Besucht' hinzu. Dies ist unten dargestellt.
![benachbarte Knoten](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-14.png)
Nun betrachten wir die benachbarten Knoten von B, die A und C sind. Davon ist A bereits besucht. Also ignorieren wir es. Als nächstes nehmen wir C vom Stapel. Markiere C als besucht. Der benachbarte Knoten von C, d. H. E, wird dem Stapel hinzugefügt.
![nächster Knoten](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-15.png)
Als nächstes nehmen wir den nächsten Knoten E vom Stapel und markieren ihn als besucht. Der benachbarte Knoten von Knoten E ist C, der bereits besucht wurde. Also ignorieren wir es.
![D bleibt im Stapel](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-16.png)
Jetzt bleibt nur noch Knoten D im Stapel. Also markieren wir es als besucht. Sein benachbarter Knoten ist A, der bereits besucht ist. Wir fügen es also nicht dem Stapel hinzu.
![Tiefenüberquerung](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-17.png)
Zu diesem Zeitpunkt ist der Stapel leer. Dies bedeutet, dass wir die Tiefendurchquerung für den angegebenen Graphen abgeschlossen haben.
Die besuchte Liste gibt die endgültige Abfolge der Durchquerung unter Verwendung der Tiefentechnik an. Die endgültige DFS-Sequenz für das obige Diagramm lautet A-> B-> C-> E-> D.
DFS-Implementierung
import java.io.*; import java.util.*; //DFS Technique for undirected graph class Graph { private int Vertices; // No. of vertices // adjacency list declaration private LinkedList adj_list(); // graph Constructor: to initialize adjacency lists as per no of vertices Graph(int v) { Vertices = v; adj_list = new LinkedList(v); for (int i=0; i Ausgabe:
![Ausgabe](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-18.png)
Anwendungen der DFS
# 1) Erkennen Sie einen Zyklus in einem Diagramm: DFS erleichtert das Erkennen eines Zyklus in einem Diagramm, wenn wir zu einer Kante zurückkehren können.
# 2) Wegfindung: Wie wir bereits in der DFS-Abbildung gesehen haben, können wir bei zwei beliebigen Eckpunkten den Pfad zwischen diesen beiden Eckpunkten finden.
# 3) Minimum Spannbaum und kürzester Weg: Wenn wir die DFS-Technik für das nicht gewichtete Diagramm ausführen, erhalten wir den minimalen Spannbaum und den kurzgeschlossenen Pfad.
# 4) Topologische Sortierung: Die topologische Sortierung wird verwendet, wenn wir die Jobs planen müssen. Wir haben Abhängigkeiten zwischen verschiedenen Jobs. Wir können auch die topologische Sortierung verwenden, um Abhängigkeiten zwischen Linkern, Befehlsplanern, Datenserialisierung usw. aufzulösen.
Breite zuerst durchqueren
Die BFS-Technik (Breadth First) verwendet eine Warteschlange zum Speichern der Knoten des Diagramms. Im Gegensatz zur DFS-Technik durchlaufen wir in BFS den Graphen in der Breite. Dies bedeutet, dass wir den Graphenpegel weise durchlaufen. Wenn wir alle Eckpunkte oder Knoten auf einer Ebene untersuchen, fahren wir mit der nächsten Ebene fort.
Nachstehend ist ein Algorithmus für die Breitentraversaltechnik angegeben .
Algorithmus
Sehen wir uns den Algorithmus für die BFS-Technik an.
Gegeben ist ein Graph G, für den wir die BFS-Technik durchführen müssen.
- Schritt 1: Beginnen Sie mit dem Stammknoten und fügen Sie ihn in die Warteschlange ein.
- Schritt 2: Wiederholen Sie die Schritte 3 und 4 für alle Knoten im Diagramm.
- Schritt 3: Entfernen Sie den Stammknoten aus der Warteschlange und fügen Sie ihn der Liste 'Besucht' hinzu.
- Schritt 4: Fügen Sie nun alle benachbarten Knoten des Wurzelknotens zur Warteschlange hinzu und wiederholen Sie die Schritte 2 bis 4 für jeden Knoten. (END OF LOOP)
- Schritt 6: AUSFAHRT
Illustration von BFS
Lassen Sie uns die BFS-Technik anhand eines unten gezeigten Beispieldiagramms veranschaulichen. Beachten Sie, dass wir eine Liste mit dem Namen 'Besucht' und eine Warteschlange geführt haben. Wir verwenden aus Gründen der Übersichtlichkeit dasselbe Diagramm, das wir im DFS-Beispiel verwendet haben.
![Abbildung von BFS](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-19.png)
Zuerst beginnen wir mit root, d. H. Knoten A, und fügen ihn der besuchten Liste hinzu. Alle benachbarten Knoten des Knotens A, d. H. B, C und D, werden der Warteschlange hinzugefügt.
![Besuchte Liste und Markierung](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-20.png)
Als nächstes entfernen wir den Knoten B aus der Warteschlange. Wir fügen es der Liste 'Besucht' hinzu und markieren es als besucht. Als nächstes untersuchen wir die benachbarten Knoten von B in der Warteschlange (C befindet sich bereits in der Warteschlange). Ein anderer benachbarter Knoten A ist bereits besucht, daher ignorieren wir ihn.
![Besuchte Liste und Markierung](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-21.png)
Als nächstes entfernen wir Knoten C aus der Warteschlange und markieren ihn als besucht. Wir fügen C zur besuchten Liste hinzu und sein benachbarter Knoten E wird zur Warteschlange hinzugefügt.
![die Warteschlange und Markierung](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-22.png)
Als nächstes löschen wir D aus der Warteschlange und markieren es als besucht. Der benachbarte Knoten A von Knoten D ist bereits besucht, daher ignorieren wir ihn.
![Ds benachbarter Knoten A.](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-23.png)
Jetzt befindet sich nur noch Knoten E in der Warteschlange. Wir markieren es als besucht und fügen es der besuchten Liste hinzu. Der benachbarte Knoten von E ist C, der bereits besucht ist. Also ignoriere es.
![Ergebnis der BFS-Durchquerung](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-24.png)
Zu diesem Zeitpunkt ist die Warteschlange leer und die besuchte Liste enthält die Sequenz, die wir als Ergebnis der BFS-Durchquerung erhalten haben. Die Sequenz ist A-> B-> C-> D-> E.
Was ist Rauchprüfung und Sanitätsprüfung
BFS-Implementierung
Das folgende Java-Programm zeigt die Implementierung der BFS-Technik.
import java.io.*; import java.util.*; //undirected graph represented using adjacency list. class Graph { private int Vertices; // No. of vertices private LinkedList adj_list(); //Adjacency Lists // graph Constructor:number of vertices in graph are passed Graph(int v) { Vertices = v; adj_list = new LinkedList(v); for (int i=0; i Ausgabe:
![Ausgabe](//myservername.com/img/other/63/java-graph-tutorial-how-implement-graph-data-structure-25.png)
Anwendungen von BFS Traversal
# 1) Müllabfuhr: Einer der Algorithmen, die von der Garbage Collection-Technik zum Kopieren der Garbage Collection verwendet werden, ist der „Cheney-Algorithmus“. Dieser Algorithmus verwendet eine Traversal-Technik mit der Breite zuerst.
# 2) Rundfunk in Netzwerken: Das Senden von Paketen von einem Punkt zu einem anderen in einem Netzwerk erfolgt mithilfe der BFS-Technik.
# 3) GPS-Navigation: Wir können die BFS-Technik verwenden, um benachbarte Knoten zu finden, während wir mit GPS navigieren.
# 4) Social-Networking-Websites: Die BFS-Technik wird auch in Websites sozialer Netzwerke verwendet, um das Netzwerk von Personen zu finden, die eine bestimmte Person umgeben.
# 5) Kürzester Pfad und minimaler Spannbaum in ungewichtetem Diagramm: In dem ungewichteten Diagramm kann die BFS-Technik verwendet werden, um einen minimalen Spannbaum und den kürzesten Pfad zwischen den Knoten zu finden.
Java Graph Library
Java macht es für Programmierer nicht obligatorisch, die Grafiken immer im Programm zu implementieren. Java bietet viele fertige Bibliotheken, die direkt zur Verwendung von Diagrammen im Programm verwendet werden können. Diese Bibliotheken verfügen über alle Funktionen der Diagramm-API, die erforderlich sind, um das Diagramm und seine verschiedenen Funktionen vollständig nutzen zu können.
Im Folgenden finden Sie eine kurze Einführung in einige der Diagrammbibliotheken in Java.
# 1) Google Guava: Google Guava bietet eine umfangreiche Bibliothek, die Diagramme und Algorithmen unterstützt, einschließlich einfacher Diagramme, Netzwerke, Wertdiagramme usw.
# 2) Apache Commons: Apache Commons ist ein Apache-Projekt, das Graph-Datenstrukturkomponenten und APIs mit Algorithmen bereitstellt, die mit dieser Graph-Datenstruktur arbeiten. Diese Komponenten sind wiederverwendbar.
# 3) JGraphT: JGraphT ist eine der weit verbreiteten Java-Grafikbibliotheken. Es bietet Funktionen für die Diagrammdatenstruktur, die einfache Diagramme, gerichtete Diagramme, gewichtete Diagramme usw. sowie Algorithmen und APIs enthalten, die an der Diagrammdatenstruktur arbeiten.
# 4) SourceForge JUNG: JUNG steht für 'Java Universal Network / Graph' und ist ein Java-Framework. JUNG bietet eine erweiterbare Sprache für die Analyse, Visualisierung und Modellierung der Daten, die als Grafik dargestellt werden sollen.
JUNG bietet auch verschiedene Algorithmen und Routinen für die Zerlegung, Clusterbildung, Optimierung usw.
Häufig gestellte Fragen
F # 1) Was ist ein Graph in Java?
Antworten: Eine Graphdatenstruktur speichert hauptsächlich verbundene Daten. zum Beispiel, ein Netzwerk von Menschen oder ein Netzwerk von Städten. Eine Diagrammdatenstruktur besteht normalerweise aus Knoten oder Punkten, die als Scheitelpunkte bezeichnet werden. Jeder Scheitelpunkt ist über Links, die als Kanten bezeichnet werden, mit einem anderen Scheitelpunkt verbunden.
Q # 2) Welche Arten von Diagrammen gibt es?
Antworten: Im Folgenden sind verschiedene Arten von Diagrammen aufgeführt.
- Liniendiagramm: Ein Liniendiagramm wird verwendet, um die Änderungen einer bestimmten Eigenschaft relativ zur Zeit darzustellen.
- Balkendiagramm: Balkendiagramme vergleichen numerische Werte von Unternehmen wie die Bevölkerung in verschiedenen Städten, Alphabetisierungsprozentsätze im ganzen Land usw.
Neben diesen Haupttypen gibt es auch andere Typen wie Piktogramme, Histogramme, Flächendiagramme, Streudiagramme usw.
F # 3) Was ist ein verbundener Graph?
Antworten: Ein verbundener Graph ist ein Graph, in dem jeder Scheitelpunkt mit einem anderen Scheitelpunkt verbunden ist. Daher können wir im verbundenen Graphen von jedem anderen Scheitelpunkt zu jedem Scheitelpunkt gelangen.
Q # 4) Was sind die Anwendungen des Graphen?
Antworten: Diagramme werden in einer Vielzahl von Anwendungen verwendet. Das Diagramm kann zur Darstellung eines komplexen Netzwerks verwendet werden. Diagramme werden auch in Anwendungen für soziale Netzwerke verwendet, um das Netzwerk von Personen zu kennzeichnen, sowie für Anwendungen wie das Auffinden benachbarter Personen oder Verbindungen.
Diagramme bezeichnen den Rechenfluss in der Informatik.
Q # 5) Wie speichert man ein Diagramm?
Antwort: Es gibt drei Möglichkeiten, ein Diagramm im Speicher zu speichern:
# 1) Wir können Knoten oder Eckpunkte als Objekte und Kanten als Zeiger speichern.
#zwei) Wir können Diagramme auch als Adjazenzmatrix speichern, deren Zeilen und Spalten der Anzahl der Scheitelpunkte entsprechen. Der Schnittpunkt jeder Zeile und Spalte zeigt das Vorhandensein oder Fehlen einer Kante an. In dem nicht gewichteten Diagramm wird das Vorhandensein einer Kante mit 1 bezeichnet, während es in dem gewichteten Diagramm durch das Gewicht der Kante ersetzt wird.
#3) Der letzte Ansatz zum Speichern eines Diagramms besteht in der Verwendung einer Adjazenzliste von Kanten zwischen Diagrammscheitelpunkten oder -knoten. Jeder Knoten oder Scheitelpunkt hat seine Adjazenzliste.
Fazit
In diesem Tutorial haben wir Diagramme in Java ausführlich behandelt. Wir haben die verschiedenen Arten von Graphen, die Implementierung von Graphen und die Traversal-Techniken untersucht. Diagramme können verwendet werden, um den kürzesten Weg zwischen Knoten zu finden.
In unseren kommenden Tutorials werden wir weiterhin Diagramme untersuchen, indem wir einige Möglichkeiten diskutieren, den kürzesten Weg zu finden.
=> Sehen Sie sich hier die einfache Java-Schulungsreihe an.
Literatur-Empfehlungen
- Java Reflection Tutorial mit Beispielen
- So implementieren Sie den Dijkstra-Algorithmus in Java
- Java SWING Tutorial: Container-, Komponenten- und Ereignisbehandlung
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- TreeMap in Java - Tutorial mit Java TreeMap-Beispielen
- Zugriffsmodifikatoren in Java - Tutorial mit Beispielen
- Java String mit String Buffer und String Builder Tutorial
- Java String enthält () Method Tutorial mit Beispielen