Так называемая диаграмма авторитета означает, что каждое преимущество в диаграмме будет иметь соответствующую или группу значений. Обычно это значение - всего лишь число
Например: в транспортной сети веса на стороне может представлять расстояние или стоимость транспорта (очевидно, оба являются цифрами). Тем не менее, вес на краю также может быть чем -то другим, например, строка или даже более сложный пакет данных, который собирает больше данных
Основная идея алгоритма Крускара состоит в том, что на графике взвешенного соединения наименьший край постоянно находится в наборе краев. Если край соответствует условиям получения минимального охвативного дерева, оно построено до тех пор, пока наконец не будет получено минимальное охватное дерево.
Шаги выполнения алгоритма Крускара:
Шаг 1: На графике взвешенного соединения сортируйте вес края;
Шаг 2: Определите, нужно ли вам выбрать этот край (в настоящее время края на рисунке были отсортированы от малого до большого веса). Основа для суждения заключается в том, связаны ли две вершины края. Если они подключены, перейдите к следующему; Если они не подключены, тогда решите подключить их.
Шаг 3: Цикл второй шаг, пока все вершины на графике не окажутся в одном и том же подключенном компоненте, что означает, что не будет получено минимальное дерево охватки.
Относительно реализации графа разрешений см. В следующем примере:
График:
Package kruskal; открытый класс график {final int max = 100;/** vertex node*/public class vexnode {int adjedx; int data;} vexnode [] vexnodes; int [] theVex; // vertex set int [] edges = new int [max] [max]; // rode set/********************************** A, int [] vexs) {theVexs = vexs; for (int i = 0; i <vexs.length; i ++) {for (int j = 0; j <vexs.length; j ++) {graph.edges [i] [j] = a [i] [j];}}/** Выходной график graph (i graph) {i <i grape)}}/***/************************************************************************* graph.thevexs.length; {System.out.printf ("%4d", graph.edges [i] [j]);}} system.out.println ("/n");}}}алгоритм:
Пакет Kruskal; открытый класс Kruskal {public Class Edge {int start; int end; int weight;} public void sortedge (edge [] e, int e) {edge temp; int j; для (int i = 0; i <e; i ++) {temp = e [i]; j = i-1; while (j> = 0 && temp.weewse <e [j]. Включен) {j+1 = 1 = 1. E [j]; j-;} e [j+1] = temp;}} public kruskal (график графика) {int i, j, u1, v1, sn1, sn2, k; int [] vset = new int [100]; Edge [] e = new Edge [100]; k = 0; для (i = 0; i <graph.thevexs.length; {E [k] = new Edge (); if (graph.edges [i] [j]> 0) {e [k] .start = i; e [k] .end = j; e [k] .ween = graph.edges [i] [j]; k ++;}}} sortededed (e, k); для (i = 0; {vset [i] = i;} k = 1; j = 0; while (k <graph.thevexs.length) {u1 = e [j] .start; v1 = e [j] .end; sn1 = vset [u1]; sn2 = vset [v1]; if (sn1! %d ", u1, v1, e [j] .weight); system.out.println ("/n "); k ++; for (i = 0; i <graph.thevexs.length; i ++) {if (vset [i] == sn2) {vset [i] = sn1;}} j ++;Тестовый класс:
пакет kruskal; public class test {public static void main (string [] args) {int [] vexs = {0,1,2,3,4}; int [] [] a = {{0,1,3,4,7}, {1,0,2, -1, -1}, {3,2,0,5,8}, {4, -1,5,0,6}, {7, -1,8,6,0}}; график графика (); kruskal = new Kruskal (Graph);}}Суммировать
Выше приведено все содержание этой статьи о примере кода Java Language для реализации алгоритма Cruzkal, основанного на неправых авторизованных графиках. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте сообщение в любое время. Редактор постарается ответить вам.