Algoritmo Floyd: Usado para resolver o caminho mais curto de várias fontes e calcula a distância mais curta entre todos os nós e os nós restantes.
A idéia desse algoritmo é: primeiro inicialize a matriz de distância e, em seguida, atualize gradualmente o valor do ponto da matriz a partir do primeiro ponto. d [i] [j] representa a distância do ponto I ao ponto j. Quando o k atualizar, julgue os tamanhos de D [i] [k]+d [k] [j] e d [i] [j]. Se o primeiro for pequeno, atualize esse valor, caso contrário, ele não mudará.
Dê um exemplo:
O algoritmo específico de implementação do Floyd é o seguinte [java] Ver cópia simples
pacote com.blyang; classe pública floyd {int [] [] matriz; CHAR [] nós; private final int inf = Integer.max_value; public floyd (char [] nós, int [] [] matriz) {this.nodes = nós; this.matrix = matriz; } public void floyd () {int [] [] distance = new int [nós.length] [nós.length]; // inicialize a matriz de distância para (int i = 0; i <modes.length; i ++) {for (int j = 0; j <modes.length; j ++) {distance [i] [j] = matriz [i] [j]; }} // LOOP Atualize o valor da matriz para (int k = 0; k <modes.length; k ++) {for (int i = 0; i <modes.length; i ++) {for (int j = 0; j <fodos.length; j ++) {int temp = (a distância [i] [k] == == = 9h. Inf: distância [i] [k] + distância [k] [j]; if (distância [i] [j]> temp) {distância [i] [j] = temp; }}}}} // Imprima o resultado do System.out.printf de caminho mais curto do Floyd ("Floyd: /n"); for (int i = 0; i <modes.length; i ++) {for (int j = 0; j <modes.length; j ++) System.out.printf ("%12d", distância [i] [j]); System.out.printf ("/n"); }}} Após a implementação, é dado um teste para os pontos e pesos da figura acima:
pacote com.blyang; public class Main {public static void main (string [] args) {int inf = Integer.max_value; char [] nós = {'0', '1', '2', '3'}; int matrix [] [] = {/*a*//*b*//*c*//*d*//*a*/{0, 1, 2, 1},/*b*/{inf, 0, inf, inf, inf},/*c*/{inf, 3, 0, 1},/*/{}; int [] dist = new int [nós.length]; Floyd Floyd = New Floyd (nós, Matrix); floyd.floyd (); }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.