Bagan otoritas yang disebut berarti bahwa setiap tepi dalam bagan akan memiliki satu atau kelompok nilai yang sesuai. Biasanya, nilai ini hanyalah angka
Misalnya: Dalam jaringan transportasi, bobot di samping dapat mewakili jarak atau biaya transportasi (jelas keduanya adalah angka). Namun, bobot di tepi mungkin juga sesuatu yang lain, seperti string atau bahkan paket data yang lebih kompleks, yang mengumpulkan lebih banyak data
Gagasan inti dari algoritma Kruskar adalah: dalam grafik koneksi tertimbang, tepi terkecil terus ditemukan di set tepi. Jika tepi memenuhi persyaratan untuk mendapatkan pohon spanning minimum, itu dibangun sampai pohon spanning minimum akhirnya diperoleh.
Langkah Eksekusi Algoritma Kruskar:
Langkah 1: Dalam grafik koneksi tertimbang, urutkan bobot tepi;
Langkah 2: Tentukan apakah Anda perlu memilih tepi ini (saat ini, tepi dalam gambar telah diurutkan dari berat kecil hingga besar). Dasar penilaian adalah apakah dua simpul tepi terhubung. Jika mereka terhubung, lanjutkan ke yang berikutnya; Jika mereka tidak terhubung, maka pilih untuk menghubungkannya.
Langkah 3: Loop Langkah kedua sampai semua simpul dalam grafik berada dalam komponen terhubung yang sama, yang berarti pohon spanning minimum diperoleh.
Mengenai implementasi grafik izin, lihat contoh berikut:
Grafik:
paket kruskal; grafik kelas publik {final int max = 100;/** vertex node*/kelas publik vexnode {int adjvex; int data;} vexnode [] vexnodes; int [] thevexs; // vertex set [] [] edge = new int [max] [max] [// set edge/* vertex int [] [] edge = new int [max] [max] [max]; // set edge edge/* 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];}}}/** grafik output* public void cetakan [i] [j]; graph.thevexs.length; {System.out.printf ("%4d", Graph.edges [i] [j]);}} System.out.println ("/n");}}}Algoritma:
Paket Kruskal; kelas publik Kruskal {Public Class Edge {int start; int end; int bobot;} public void sortEdge (edge [] e, int e) {edge temp; int j; for (int i = 0; i <e; i ++) {temp = e [i]; j = i-1; who (j>; i ++ E [j]; j-;} e [j+1] = temp;}} public kruskal (grafik grafik) {int i, j, u1, v1, sn1, sn2, k; int [] vset = int baru [100]; edge [] e = edge baru [100]; k = 0; untuk (i = 0; i <grafik. (j = 0; j <= i; j ++) {e [k] = edge baru (); if (grafik. (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=vset[v1];if (sn1!=sn2) {System.out.printf ("(%d,%d), berat:%d", u1, v1, e [j] .weight); System.out.println ("/n"); k ++; untuk (i = 0; i <graph.thevexs.length; i ++) {if (vset [i] == Sn2) {vset [i] = sn1;}}} j ++;}}}Kelas Tes:
paket kruskal; tes kelas publik {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}; grafik grafik = grafik baru (); grafik. kruskal = kruskal baru (grafik);}}Meringkaskan
Di atas adalah seluruh konten artikel ini tentang contoh kode bahasa Java untuk mengimplementasikan algoritma Cruzkal berdasarkan grafik resmi yang tidak terarah. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan pesan kapan saja. Editor akan mencoba yang terbaik untuk menjawab Anda.