Anda di halaman 1dari 7

Laporan Matematika Diskrit II

“ALGORITMA KRUSKAL”

Disusun Oleh
Nama : I Gede Martayasa
NIM : 1908561014
Kelas : A

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS MATEMATIKA DAN ILMU PENEGTAHUAN ALAM
UNIVERSITAS UDAYANA
2020
BAB I
PENDAHULUAN
A. Algoritma Kruskal
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.
Langkah – langkah algoritma Kruskal :
1. Lakukan pengurutan terhadap setiap sisi di graf mulai dari sisi yang memiliki bobot
terkecil.
2. Pilih sisi yang mempunyai bobot minimum yang tidak membentuk sirkuit pada
pohon, kemudian tambahkan sisi tersebut ke dalam pohon.
3. Ulangi langkah kedua sebanyak n – 1 kali (n adalah jumlah simpul graf).
Dalam pembuatan graf algoritma kruskal lintasannya tidak boleh membentuk circle.
Kelebihan dan kekurangan algoritma Kruskal :
 KELEBIHAN
sangat cocok digunakan saat graf memiliki sisi berjumlah sedikit namun memiliki sangat
banyak simpul, karena orientasi kerja algoritma ini adalah berdasarkan urutan bobot sisi
bukan simpul.
 KEKURANGAN
kurang cocok digunakan saat graf dimana setiap simpul terhubungkan dengan semua
simpul yang lain. Karena algoritma ini menitik beratkan pada pencarian sisi yang
diurutkan.
BAB II
ISI
Contoh :

No edge Vertex terhubung bobot


E1 (0,2) 1
E2 (3,5) 2
E3 (0,1) 3
E4 (1,4) 3
E5 (2,5) 4
E6 (1,2) 5
E7 (2,3) 5
E8 (0,3) 6
E9 (2,4) 6
E10 (4,5) 6
Hasil :

Program Kruskal dalam Bahasa C :


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(){

int vertex, i, j, awal, kecil=999, v=0;

printf("Masukkan jumlah vertex : ");


scanf("%d", &vertex);

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++;
}

printf("Total : %d\n", bobot);

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.

Anda mungkin juga menyukai