Algoritma Prim dan Algoritma Kruskal

Algoritma Prim dan Algoritma Kruskal
Komang Anggada Sugiarta (135150200111154)
Jefri Hendra Prasetyo (135150201111186)
Panji Tiara Kusuma (135150200111033)
Kukuh Wiliam M (135150200111001)
Taufan Nugraha (135150201111149)
Zainoddin (135150201111217)
Teknik Informatika, Program Teknologi Informasi Dan Ilmu Komputer
Universitas Brawijaya Malang, Jl. Veteran No 8, Malang
k.anggada@yahoo.co.id

Abstrak
Pada permasalahan menentukan pohon
merentang minimum dapat diselesaikan dengan
beberapa metode. Namun, ada dua cara yang paling
efektif untuk menyelsesaikan masalah menentukan
pohon merentang minimum, yaitu dengan
algoritma Prim dan algoritma Kruskal. Algoritma
Prim adalah suatu langkah-langkah untuk membuat
pohon (tree) dengan cara memilih atau mengambil
sisi dari graf yang memiliki bobot minimum dan

bersisian dengan simpul di dalam pohon tetapi sisi
tersebut tidak membentuk sirkuit di dalam pohon.
Algoritma Kruskal adalah suatu langkah untuk
membuat pohon (tree) dengan cara mengurutkan
sisi dari graf berdasarkan urutan bobot dari yang
terkecil hingga terbesar tetapi tidak membentuk
sirkuit.
1. PENDAHULUAN
Teori graf dan pohon merupakan cabang
dari matematika diskrit yang dapatkan dengan
banyak pemodelan masalah dalam kehidupan
sehari-hari. Salah satu pembahasannya yaitu pohon
merentang minimum (minimum spanning tree).
Salah satu contoh penyelesaian masalh dengan
pemodelan pohon merentang minimum adalah
penentuan biaya kabel listrik minimum untuk
menyalurkan listrik ke semua desa.
Dalam permasalahan pohon merentang
minimum dapat diselesaikan dengan beberapa cara.
Namun cara yang paling digunakan adalah

algoritma Prim dan algoritma Kruskal. Kedua
algoritma ini terbukti dapat menyelesaikan pohon
merentang minimum. Namun dalam penggunaanya,
pengguna sering merasa sulit untuk memilih
algoritma mana yang lebih tepat. Oleh karena itu,
akan membahas tentang kedua algoritma tersebut.
2. MATERI
2.1 Teori Graf

Graf dapat didefinikan sebagai pasangan
himpunan (V,E), atau dapat dinotasikan dengan
G=(V,E), dimana V adalah himpunan tidak kosong
dari simpul-simpul (vertek) dan E adalah himpunan
dari sisi (edge) yang menghubungkan sepasang
simpul.
Beberapa terminologi dasar yang harus diketahui:
a. Graf Berarah (Directed Graph/Digraph)
Graf berarah adalah graf yang setiap sisinya diberi
orientasi arah. Dalam hal ini sisi yang ditulis (v1,v2)
berbeda dengan sisi (v2,v1)

b. Graf Berbobot (Weight Graf)
Graf berbobot adalah graf yang setiap sisinya diberi
sebuah harga.
c. Graf Lengkap (Complete Graph)
Graf lengkap adalah graf sederhana, tidak
mengandung gelang (sisi yang kedua simpulnya
sama) maupun sisi ganda (dua sisi yang memiliki
simpul asal dan simpul tujuan yang sama), serta
setiap sisinya mempunyai sisi ke simpul lain.
d. Bertetangga (Adjacent)
Dua buah simpul pada graf tak berarah dikatakan
bertentangga bila keduanya terhubung dengan
sebuah sisi. Dapat dikatakan, jika ada v1 dan v2 yang
bertetangga, maka harus ada sisi (v1,v2)
e. Bersisian (Incident)
Untuk sembarang sisi e = (v1,v2), sisi e dikatakan
bersisian dengan simpul v1 dan simpul v2.
f. Simpul Terpencil (Isolated Vertex)
Simpul terpencil adalah simpul yang tidak
mempunyai sisi yang bersisian dengannya. Dengan

kata lain, simpul ini ialah simpul yang tidak
satupun bertetangga dengan simpul-simpul lain.
g. Graf Kosong (Empty Graf)
Graf kosong yaitu graf yang himpunan sisinya
merupakan himpunan kosong.
h. Lintasan (Path)
Lintasan yang panjangnya n dari simpul awal v 0 ke
simpul akhir vn di dalam graf G ialah barisan
berselang-seling simpul-simpul dan sisi-sisi yang
berbentuk v0, e1, v1, e2, …, vn-1, en, vn sedemikian
sehingga e1=(v0,v1), e2=(v1,v2), …, en=(vn-1,vn)
adalah sisi-sisi dari graf G.

i. Siklus (Cycle) atau Sirkuit (Circuit)
Lintasan yang berawal dan berakhir pada simpul
yang sama disebut siklus atau sirkuit.
j. Terhubung (Connected)
Graf disebut graf terhubung jika untuk setiap
pasang simpul v1 dan v2 di dalam himpunan V
terdapat lintasan dari v1 ke v2, yang juga berarrti

ada lintasan dari v2 ke v1 (untuk graf berarah).
k. Upagraf (Subgraf) dan Komplemen Upagraf
Misalkan G = {V,E} sebuah graf, G 1 = {V1,E1}
dikatakan upagraf dari G jika V1 ⊆ V dan E1 ⊆ E.
Komplemen dari upagraf G1 terhadap G adalah graf
G2 = {V2,E2} sedemikian sehingga E2 = E – E1 dan
V2 adalah himpunan simpul yang anggota-anggota
E2 bersisian dengannya.
l. Upagraf Merentang (Spanning Subgraf)
Upagraf G1 = {V1,E1} dari G = {V,E} dikatakan
upagraf merentang jika V1=V, G1 mengandung
semua simpul G.F
2.2 Teori Pohon
Pohon (tree) adalah graf yang mempunyai
sebanyak n vertek (titik), n-1 edge (garis) dan tidak
mempunyai sirkuit (cycle free) serta merupakan
graph yang terhubung. Sedangkan graf adalah
himpunan vertek dan edge, dimana vertek bukan
himpunan kosong dan edge ialah himpunan garis
yang menghubungkan simpul. Jadi pohon

merupakan suatu graf yang tidak memiliki garis
yang titik awal dan titik akhirnya sama (sirkuit)
Teori Pohon Merentang
Jika G adalah graf tidak berarah yang
bukan merupakan pohon dan memiliki sirkuit.
Maka sebuah pohon dapat dikatakan sebagai
spanning tree, jika pohon tersebut adalah sub-graf
yang G yang memenuhi semua titik G. Jadi pohon
merentang adalah pohon yang terbentuk dari subgraf dari G yang memenuhi semua titik G dan
tidak membentuk sirkuit.

1.

Ambil sisi dari graf yang berbobot
minimum, kemuadian masukkan ke dalam
pohon.
2. Pilihlah sisi yang mempunyai bobot
minimum dan bersisian dengan pohon.
Namun sisi tersebut tidak membentuk
sirkuit di dalam pohon. Masukkan sisi

tersebut ke dalam pohon.
3. Ulangi langkah 2 sampai pohon merentang
minimum terbentuk, pohon merentang
minimum terbentuk setelah mengalami
penggulangan sebanyak n-2 kali. (n adalah
jumlah simpul graf).
Penulisan algoritma Prim dalam bentuk
pseudocode:
procedure Prim (input G: graf, output T: pohon)
{ Membentuk pohon merentang minimum T dari
graf terhubung G.
Masukan: graf-berbobot tehubung G=(V,E), yang
mana /v/=n
Keluaran: pohon merentang minimum T=(V,E) }
Deklarasi
e:sisi
Algoritma
T
sisi e yang mempunyai bobot minimum di
dalam E

E
E –{e} { e sudah dipilih, jadi buang e dari
E}
for i
1 to n-2 do
e
sisi yang mempunyai bobot terkecil di dalam
E dan bersisian dengan simpul di T
T
T U {e} { masukkan e ke dalam T yang sudah
terbentuk }
E
E – {e} { e sudah dipilih, jadi buang e dari
E}
endfor
Contoh soal dan penyelesaian :
Carilah pohon merentang minimum pada graf yang
ditunjukkan dibawah ini !

2.3 Teori Pohon Merentang Minimum

Minimal spanning tree adalah pohon
merentang yang mempunyai jumlah bobot atau
label yang paling minimal. Artinya pohon
merentang minimal ialah pohon merentang yang
dibuat dengan bobot paling kecil.

10

C
5

13

12

15

D
11


2.4 Teori Algoritma Prim
Algoritma Prim adalah suatu langkahlangkah untuk membuat pohon (tree) dengan cara
memilih atau mengambil sisi dari graf yang
memiliki bobot minimum dan bersisian dengan
simpul di dalam pohon tetapi sisi tersebut tidak
membentuk sirkuit di dalam pohon.
Langkah-langkah algoritma Prim:

20
B

A

21

F

E
16


Penyelesaian dengan algoritma Prim :

Sisi
Lang
kah

Bobot

Hutan merentang

1.

CD

5

C
D

5

2

DE

C 11

D

5

11

E
3

CF

C

11

D

5

12

11

E

F
4

B
13

DB

C

12

5
12

11

D

E
A

F
5
10

B
13

E

AB

C

13

5
12

11

F

Perhatikan bahwa algoritma Prim tidak
menentukan sisi mana yang di pilih jika terdapat
C buah sisi yang berbobot sama. Saatu
lebih dari satu
caa untuk mengatasi hal ini dengn mengurutkan sisi
– sisi ituDberdasarkan
5
bobotnya dari kecil ke besar.
Kemudian pohon merentang minimum yang
dihasilkan tidak selalu unik. Graf sederhana
terhubung dan berbobot dapat memiliki lebih dari
satu buah pohon merentang yang berbeda tetapi
jumlah bobot minimumnya sama.
2.5 Teori Algoritma Kruskal

Algoritma Kruskal adalah suatu langkah
untuk membuat pohon (tree) dengan cara
mengurutkan sisi dari graf berdasarkan urutan
bobot dari yang terkecil hingga terbesar tetapi tidak
membentuk sirkuit.
Langkah-langkah algoritma Kruskal:
1. Lakukan pengurutan terhadap setiap sisi di
graf mulai dari sisi dari bobot terkecil
hingga bobot terbesar.
2. Pilih sisi yang mempunyai bobot
minimum yang tidak membentuk sirkuit
pada pohon, kemudian tambahkan sisi
tersebut ke dalam pohon.
3. Ulangi langkah kedua sampai pohon
minimum merentang terbentuk, pohon
merentang minimum terbentuk setelah
mengalami penggulangan sebanyak n-1
kali. (n adalah jumlah simpul graf).
Penulisan algoritma Kruskal dalam bentuk
pseudocode:
procedure Kruskal ( input G: graf, output T:
pohon )
{ Membentuk pohon merentang minimum T dari
graf terhubung G.
Masukan: graf-berbobot tehubung G=(V,E), yang
mana /v/=n
Keluaran: pohon merentang minimum T=(V,E) }
Deklarasi
i, p, q, u, v : integer
Algoritma
( Asumsi: sisi-sisi dari graf sudah diurut menaik
berdasarkan bobotnya )
T
{}
while jumlah sisi T < n - 1 do
e
sisi di dalam E
E
E – {e} { e sudah dipilih, jadi buang e dari
E}
if e tidak membentuk siklus di T then
T
T U {e} { masukkan e ke dalam T yang
sudah terbentuk }
endif

endwhile
Lang
kah
1.

Sisi

Bobot

CD

5

Hutan merentang

2

DE

C 11

D

5

11

E
3

CF

C

11

D

5

12

11

E

F
4

B
13

DB

C

12

5
12

11

D

E
A

F
5
10

B
13

E

AB

C

13

5
12

11

F

Pertama sisi-sisi graf diurutkan dari bobot yang
terkecil hingga bobot yang terbesar kemudian sisisisi tersebut akan terhubung dan membentuk pohon
merentang minimum dengan syarat tidak boleh
terdapat sirkuit dalam pohon.
3. KESIMPULAN
Kesimpulan yang dapat diambil dari studi dan
perbandingan dua algoritma pencarian pohon
merentang minimum adalah:
1. Algoritma Prim dan Algoritma Kruskal
dapat menyelesaikan masalah pencarian
pohon merentang minimum dengan tepat
dan akurat.
2.
Algoritma
Kruskal
lebih
efisien
dibandingkan algoritma Prim saat graf
yang diberikan memiliki banyak simpul
dengan sisi yang sedikit.
3. Algoritma Prim lebih efisien dibandingkan
algoritma Kruskal saat graf yang diberikan
memiliki banyak sisi dengan simpul yang
sedikit (graf lengkap).

REFERENSI
Munir, Rinaldi. (2005). Matematika Diskrit. Edisi
revisi kelima. Bandung:Informatika Bandung.
Rosen, Kenneth. (2012). Discrete Mathematics and
Its Applications. Edisi ketujuh. New York:The
McGraw-Hill Companies.
Wikipedia. (2013, 29 November). Kruskal’s
algorithm. Diperoleh 28 Desember 2013, dari
http://en.wikipedia.org/wiki/Kruskal
%27s_algorithm.
Wikipedia. (2013, 5 April). Algoritma Prim.
Diperoleh
28
Desember
2013,
dari
http://id.wikipedia.org/wiki/Algoritma_Prim.