“ALGORITMA KRUSKAL”
Disusun Oleh
Nama : I Gede Martayasa
NIM : 1908561014
Kelas : A
int main(){
int titik[vertex][vertex],uji[vertex];
for(i=1;i<=vertex;i++){
for(j=i;j<=vertex;j++){
if(i==j){
titik[i][j]=0;
}
else{
printf("\n Bobot [%d-%d] : ",i,j);
scanf("%d", &titik[i][j]);
titik[j][i] = titik[i][j];
}
}
}
//mengurutkan setiap sisi di graf mulai dari sisi dengan bobot terkecil sampai
terbesar
for(i=1;i<=vertex;i++){
for(j=i;j<=vertex;j++){
if(titik[i][j]<kecil && titik[i][j]!=0){
kecil = titik[i][j];
}
}
}
awal = kecil;
//memilih sisi dengan bobot minimum dan dimasukkan ke dalam aktif edge
int batas=0, min=0, bobot=0, a, b;
printf("\n\n");
printf("Hasil : \n");
uji[awal]=awal;
while(1){
min=999;
for(i=1;i<=vertex;i++){
if(uji[i]==i){
for(j=1;j<=vertex;j++){
if(titik[i][j]<min && titik[i][j]!=0){
min = titik[i][j];
a=i;
b=j;
}
}
}
}
titik[a][b]=0;
titik[b][a]=0;
//menguji sisi selama sisi tersebut tidak menghasilkan looping atau membentuk
circuit
int sama=0;
for(i=1;i<=vertex;i++){
if(uji[i]==b){
sama++;
}
}
if (sama==0){
printf("%d - %d : %d\n",a,b,min);
bobot+=min;
uji[b]=b;
v++;
}
if(v == vertex-1){
break;
}
batas++;
}
return 0;
}
Output program :
Masukkan jumlah vertex : 6
Bobot [1-2] : 3
Bobot [1-3] : 1
Bobot [1-4] : 6
Bobot [1-5] : 0
Bobot [1-6] : 0
Bobot [2-3] : 5
Bobot [2-4] : 0
Bobot [2-5] : 3
Bobot [2-6] : 0
Bobot [3-4] : 5
Bobot [3-5] : 6
Bobot [3-6] : 4
Bobot [4-5] : 0
Bobot [4-6] : 2
Bobot [5-6] : 6
Hasil :
1-3:1
1-2:3
2-5:3
3-6:4
6-4:2
Total : 13
BAB III
PENUTUP
KESIMPULAN
Algoritma Kruskal adalah algoritma dalam teori graph yang menemukan suatu pohon
rentang minimum untuk terhubung dalam graf berbobot . Ini berarti menemukan subset dari
tepi yang membentuk sebuah pohon yang mencakup setiap titik , di mana berat total dari
semua tepi di atas pohon diminimalkan.