Algoritma Floyd: Digunakan untuk memecahkan jalur multi-sumber terpendek, dan menghitung jarak terpendek antara semua node dan node yang tersisa.
Gagasan algoritma ini adalah: pertama menginisialisasi matriks jarak, dan kemudian secara bertahap memperbarui nilai titik matriks mulai dari titik pertama. d [i] [j] mewakili jarak dari titik I ke titik j. Ketika K memperbarui, menilai ukuran d [i] [k]+d [k] [j] dan d [i] [j]. Jika yang pertama kecil, perbarui nilai ini, jika tidak, itu tidak akan berubah.
Berikan contoh:
Algoritma Implementasi Floyd spesifik adalah sebagai berikut [Java] Lihat Salinan Plain
Paket COM.Blyang; kelas publik Floyd {int [] [] matriks; node char []; private final int inf = integer.max_value; node publik floyd (char [], int [] [] matriks) {this.nodes = node; this.matrix = matriks; } public void floyd () {int [] [] jarak = int int [node.length] [node.length]; // inisialisasi matriks jarak untuk (int i = 0; i <nodes.length; i ++) {for (int j = 0; j <nodes.length; j ++) {jarak [i] [j] = matriks [i] [j]; }} // Loop Perbarui nilai matriks untuk (int k = 0; k <nodes.length; k ++) {for (int i = 0; i <nodes.length; i ++) {for (int j = 0; j <node.length; j ++) {int temp = (jarak [i] [k] == Inf (j ++) {int temp = (jarak [i] [k] == Inf (j ++) {int temp = (jarak [i] [k] == Inf | Inf: jarak [i] [k] + jarak [k] [j]; if (jarak [i] [j]> temp) {jarak [i] [j] = temp; }}}}} // Cetak hasil sistem path terpendek Floyd.out.printf ("Floyd: /n"); untuk (int i = 0; i <nodes.length; i ++) {for (int j = 0; j <nodes.length; j ++) system.out.printf ("%12d", jarak [i] [j]); System.out.printf ("/n"); }}} Setelah implementasi, tes diberikan untuk titik dan bobot gambar di atas:
Paket COM.Blyang; kelas publik utama {public static void main (string [] args) {int inf = integer.max_value; char [] node = {'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*/{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, int [] dist = int new [node.length]; Floyd Floyd = baru Floyd (node, matriks); floyd.floyd (); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.