Floyd-Algorithmus: Wird verwendet, um den kürzesten Pfad der Multi-Source zu lösen und den kürzesten Abstand zwischen allen Knoten und den verbleibenden Knoten zu berechnen.
Die Idee dieses Algorithmus lautet: Initialisieren Sie zunächst die Entfernungsmatrix und aktualisieren Sie dann den Matrixpunktwert nach und nach ab dem ersten Punkt. D [i] [j] repräsentiert den Abstand von Punkt I nach Punkt j. Wenn sich das K aktualisiert, beurteilen Sie die Größen von d [i] [k]+d [k] [j] und d [i] [j]. Wenn ersterer klein ist, aktualisieren Sie diesen Wert, andernfalls ändert er sich nicht.
Geben Sie ein Beispiel:
Der spezifische Floyd -Implementierungsalgorithmus lautet wie folgt.
Paket com.blyang; öffentliche Klasse Floyd {int [] [] Matrix; char [] Knoten; private final int inf = garteger.max_value; public floyd (char [] nodes, int [] [] matrix) {this.nodes = node; this.matrix = matrix; } public void floyd () {int [] [] distanz = new int [nodes.length] [nodes.length]; // Initialisieren Sie die Abstandsmatrix für (int i = 0; i <node.length; i ++) {für (int j = 0; j <node.length; j ++) {distanz [i] [j] = matrix [i] [j]; }} // Schleife Aktualisieren Sie den Wert der Matrix für (int k = 0; k <odes.length; k ++) {for (int i = 0; i <odes.length; i ++) {für (int j = 0; j <nodes.Length; INF: Abstand [i] [k] + Abstand [k] [j]; if (distanz [i] [j]> temp) {distanz [i] [j] = temp; }}}}} // Das Ergebnis von Floyds kürzestem Path -System.out.printf ("Floyd: /n") ausdrucken; für (int i = 0; i <nodes.length; i ++) {für (int j = 0; j <nodes.length; j ++) system.out.printf ("%12d", Distanz [i] [j]); System.out.printf ("/n"); }}} Nach der Implementierung wird ein Test für die Punkte und Gewichte der obigen Abbildung angegeben:
Paket com.blyang; public class main {public static void main (String [] args) {inf = integer.max_value; char [] nodes = {'0', '1', '2', '3'}; int matrix [] [] = {/*a*//*b*//*c*//*d*//*a*/{0, 1, 2, 1},/*b*/{inf, 0, inf, inf},/*c*/{Inf, 3, 0, 1},/*d*/{Inf, 1, 1, 1, 0}; int [] dist = new int [nodes.length]; Floyd Floyd = New Floyd (Knoten, Matrix); floyd.floyd (); }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.