소위 권한 차트는 차트의 각 모서리에 해당 하나 또는 값 그룹이 있음을 의미합니다. 일반적 으로이 값은 숫자 일뿐입니다
예를 들어, 운송 네트워크에서 측면의 무게는 거리 또는 운송 비용을 나타낼 수 있습니다 (분명히 둘 다 숫자). 그러나 가장자리의 무게는 문자열이나 더 복잡한 데이터 패킷과 같은 다른 것일 수 있으며 더 많은 데이터를 수집합니다.
Kruskar 알고리즘의 핵심 아이디어는 다음과 같습니다. 가중치 연결 그래프에서 가장 작은 가장자리는 가장자리 세트에서 지속적으로 발견됩니다. 가장자리가 최소 스패닝 트리를 얻기위한 조건을 충족하면 최소 스패닝 트리가 최종적으로 얻을 때까지 구성됩니다.
Kruskar 알고리즘의 실행 단계 :
1 단계 : 가중치 연결 그래프에서 가장자리의 가중치를 정렬하십시오.
2 단계 :이 가장자리를 선택 해야하는지 여부를 결정하십시오 (이 시점에서 그림의 가장자리는 소형에서 큰 무게로 정렬되었습니다). 판단의 기초는 가장자리의 두 정점이 연결되어 있는지 여부입니다. 그들이 연결되어 있다면 다음을 계속하십시오. 연결되지 않은 경우 연결하도록 선택하십시오.
3 단계 : 그래프의 모든 정점이 동일한 연결된 구성 요소에있을 때까지 두 번째 단계를 고정합니다. 즉, 최소 스패닝 트리가 얻어진다.
권한 그래프의 구현과 관련하여 다음 예를 참조하십시오.
그래프:
패키지 kruskal; public class 그래프 {final int max = 100;/** vertex node*/public class vexnode {int adjvex; int data;} vexnode [] vexnodes; int [] the -vexs; // vertex set int [] [] eDges = new int [max] [max]; // int set/*] a, int [] vexs) {vexs = vexs; for (int i = 0; i <vexs.length; i ++) {for (int j = 0; j <vexs.length; graph.the-vexs.length; i ++) {for (int j = 0; j <Graph.TheVexs.length; {System.out.printf ( "%4d", Graph.edges [i] [j]);}} system.out.println ( "/n");}}}연산:
패키지 kruskal; public class kruskal {public class edge {int start; int end; int weight;} public void sortedge (edge [] e, int e) {edge temp; int j; for (int i = 0; i <e; i ++) {temp = e [i]; j = i-1; while (j> = 0 && temp. e [j]; j-;} e [j+1] = temp;}} public kruskal (그래프 그래프) {int i, j, u1, v1, sn1, sn2, k; int [] vset = new int [100]; 가장자리 [] e = new Edge [100]; k = 0; for (i = 0; i <Graph. (j = 0; (i = 0; i <Graph.TheVexs.length; i ++) {vSet [i] = i;} k = 1; j = 0; while (k <Graph.theVexs.length) {u1 = e [j] .start; v1 = e [j] .end; sn1 = vset [u1]; sn2 = vs [v1]; if (sn1! = sn2). {System.out.printf ( "(%d,%d), 무게 :%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}}}}}; Graph = new Graph (); Graph.creategraph (그래프); Kruskal = New Kruskal (그래프);}}요약
위의 내용은 변형되지 않은 공인 그래프를 기반으로 Cruzkal 알고리즘을 구현하기위한 Java 언어의 코드 예제에 대한이 기사의 전체 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 언제든지 메시지를 남겨주세요. 편집자는 최선을 다해 답변 할 것입니다.