Tiefe Priorität Traversal
Die Tiefenprioritätsquelle ähnelt dem Gehen eines Labyrinths von einer Person:
Wie in der Abbildung gezeigt, wählen Sie eine Kante vom Startpunkt aus, um zum nächsten Scheitelpunkt zu gehen. Bevor er einen Scheitelpunkt erreicht, ist es gekennzeichnet, dass dieser Scheitelpunkt angekommen ist.
Wenn ein markierter Scheitelpunkt kommt, fällt auf den vorherigen Scheitelpunkt zurück und wählen Sie dann einen Scheitelpunkt aus, der nicht erreicht wurde.
Ziehen Sie sich weiter zurück, wenn es keinen Durchgang zur Kreuzung gibt, zu der sich zurückgezogen wurde.
Sehen Sie sich für die angeschlossene Komponente das Konzept an: Der extrem verbundene Untergragen des ungerichteten Graphen G wird als verbundene Komponente von G bezeichnet. Es gibt nur eine angeschlossene Komponente eines angeschlossenen Graphen, dh es selbst, und der nicht verbundene, verabschiedete Graphen verfügt über mehrere angeschlossene Komponenten.
Schauen wir uns die spezifischen Beispiele an:
Paket com.datastructure.graph; // Die Unicom -Komponente der nicht autorisierten Graph -Komponenten finden {private Graph; // Array zum Speichern der privaten Booleschen Eingabe [] besucht; // Speichern Sie den Status privat int componentCount; // Anzahl der vernetzten Komponenten. Graph) {this.graph = graph; componentCount = 0; // Die Anfangszahl der verbundenen Komponenten ist 0 besucht = neu boolean [graph.v ()]; node is marked as -1}for (int i = 0; i < graph.V(); i++) {// The depth priority traversal of the unvisited node if (!visited[i]) {dfs(i);componentCount++;// After dfs on a node to the end, a connected component ends, the number +1}}} private void dfs(int i) {besucht [i] = true; // Knoten I wurde zugegriffen. is connected (int v, int w) {return mark [v] == mark [w]; // zu beurteilen, ob die beiden Knoten anhand der Markierungen der verbundenen Komponenten verbunden sind, zu denen die beiden Knoten zu} public int getComponentCount () {return conpentCount; // die Nummer der angeschlossenen Komponenten in der Grafik -Klasse}} // // öffentliche Klassenkomponenten {////////////////////////////////////////., // Referenz des Diagramms // private boolean [] besucht; // ob auf den Knoten während des DFS -Prozesss zugegriffen wird // private int ccount; // Die Anzahl der China -Unicom -Komponenten aufzeichnen // private int [] id; // Die entsprechende China -Unicom -Komponentenmarke für jeden Knoten //// // Tiefenprioritätsquelle des Graphen // private void DFS (int v) {///////s besucht [v] = true; // Der Zugriffsstatus des Knotens V ist auf true // id [v] = ccount festgelegt; // Die entsprechende China Unicom -Marke des Knotens V ist auf CCOUNT //// // durch den Adjazenzpunkt des Knotens V I // für (int i: g.adjacentnode (v)) eingestellt. dfs (i); //} //} /// // Konstruktor, um die verbundenen Komponenten des ungerechten Graphen // öffentliche Komponenten (Graph Graph) {//// // Algorithmus -Initialisierung // g = G = GRAFTE; ///// // Besuchte den Zugriffstatus des Knotens im Array -Speicher -Graph G /////////////////////////. Verbundene Komponenten, zu denen der Knoten in den Array -Speichergraphen g // id = new int [gv ()]; //// // // Die Anzahl der angeschlossenen Komponenten auf 0 // ccount = 0; //// // alle besuchten Arrays auf False einstellen; Setzen Sie alle ID -Arrays auf -1 // für (int i = 0; i <gv (); i ++) {// besucht [i] = false; // id [i] = -1; //} /// // finde die Unicom -Komponente des Graphs // für (int i = 0; i <gv (); // // Depth priority traversal// dfs(i);// ccount++;// }// }/// Return the number of Unicom components of the graph// int count() {// return ccount;// }//// // Query whether point v and point w are connected (w whether the marks of the communicating components of node v and w are the same // boolean isconnected (int v, int w) {// Assert v> = 0 && v <gv (); // Assert W> = 0 && w <gv (); // return id [v] == id [w]; //} //}Die Anzahl der Passkomponenten beträgt 3
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die Implementierung von Java -Programmierungen von Beispielen für die Tiefe Prioritätsquellen- und Konnektivitätskomponenten -Code. Ich hoffe, es wird für alle hilfreich sein. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Folgen Sie Wulin.com und Sie werden mehr gewinnen.