Алгоритм Floyd: используется для решения кратчайшего пути мульти-источника, и вычисляет кратчайшее расстояние между всеми узлами и оставшимися узлами.
Идея этого алгоритма: сначала инициализируйте матрицу расстояния, а затем постепенно обновлять значение точки матрицы, начиная с первой точки. d [i] [J] представляет расстояние от точки I до точки j. Когда k обновляется, оцените размеры D [i] [k]+d [k] [j] и d [i] [j]. Если первое невелико, обновите это значение, в противном случае оно не изменится.
Приведите пример:
Конкретный алгоритм реализации Floyd в следующем [Java] Просмотр простой копии
пакет com.flyang; открытый класс floyd {int [] [] matrix; char [] узлы; Приватный окончательный int inf = integer.max_value; public floyd (char [] узлы, int [] [] matrix) {this.nodes = узлы; this.matrix = matrix; } public void floyd () {int [] [] distance = new int [nodes.length] [nodes.length]; // Инициализировать матрицу расстояния для (int i = 0; i <nodes.length; i ++) {for (int j = 0; j <nodes.length; j ++) {distance [i] [j] = matrix [i] [j]; }} // Обновление цикла значения матрицы для (int k = 0; k <nodes.length; k ++) {for (int i = 0; i <nodes.length; i ++) {for (int j = 0; j <узлы. Inf: дистанция [i] [k] + расстояние [k] [j]; if (distance [i] [j]> temp) {distance [i] [j] = temp; }}}}} // Распечатать результат самой короткой системы пути Флойда.out.printf ("floyd: /n"); for (int i = 0; i <nodes.length; i ++) {for (int j = 0; j <nodes.length; j ++) System.out.printf ("%12d", расстояние [i] [j]); System.out.printf ("/n"); }}} После реализации проводится тест на точки и веса рисунка выше:
пакет com.flyang; открытый класс main {public static void main (string [] args) {int 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, 0},}; int [] dist = new int [nodes.length]; Floyd floyd = new Floyd (узлы, матрица); floyd.floyd (); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.