18
MAKALAH RISET OPERASI DETERMINISTIK PENENTUAN MINIMUM SPANNING TREE MENGGUNAKAN ALGORITMA KRUSKAL Anggota Kelompok 5 Nama NIM 1. Hartono M0110032 2. Marisa Ramdhayanti M0110054 3. Rachmat Okta A. M0113038 FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SEBELAS MARET SURAKARTA 2015 i

Makalah Rod

Embed Size (px)

DESCRIPTION

Spanning tree

Citation preview

  • MAKALAH RISET OPERASI DETERMINISTIK

    PENENTUAN MINIMUM SPANNING TREE

    MENGGUNAKAN ALGORITMA KRUSKAL

    Anggota Kelompok 5

    Nama NIM

    1. Hartono M0110032

    2. Marisa Ramdhayanti M0110054

    3. Rachmat Okta A. M0113038

    FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

    UNIVERSITAS SEBELAS MARET

    SURAKARTA

    2015

    i

  • 11. PENDAHULUAN

    Sebuah network terdiri dari sekelompok vertex yang dihubungkan dengan

    edge. Suatu edge dapat dialiri arus atau diberikan bobot dalam jumlah tertentu.

    Notasi untuk menggambarkan sebuah network G adalah G = (N;A), dimana N

    adalah himpunan vertex dan A adalah himpunan edge. Sebagai contoh, dalam

    jaringan transportasi, kota mewakili vertex dan jalan raya mewakili edge, dengan

    lalu lintas mewakili arus edge.

    Arus dalam sebuah edge pada umumnya dibatasi oleh kapasitasnya yang

    dapat terbatas atau tidak terbatas. Sebuah edge dikatakan terarah atau terori-

    entasi jika edge tersebut memungkinkan arus positif dalam satu arah dan arus

    nol dalam arah yang berlawanan. Sehingga network yang terarah adalah jaringan

    dengan semua edge terarah.

    Network terhubung adalah sebuah jaringan dimana setiap dua vertex di-

    hubungkan dengan jalur. Jalur merupakan urutan edge tertentu yang meng-

    hubungkan dua vertex tanpa bergantung pada orientasi edge tersebut secara

    individual. Jalur akan membentuk sebuah loop atau siklus jika jalur tersebut

    menghubungkan suatu vertex dengan dirinya sendiri. Sebuah loop yang terarah

    adalah sebuah loop dimana semua edge memiliki arah atau orientasi yang sama.

    Tree merupakan salah satu konsep dalam graf yang dapat diterapkan ter-

    hadap network. Sebuah network terhubung yang hanya melibatkan sebagian dari

    vertex disebut tree (pohon). sedangkan network terhubung yang mencakup se-

    mua vertex dalam jaringan tersebut tanpa loop disebut spanning tree (pohon

    perentangan). Pada beberapa situasi, diinginkan spanning tree yang mengha-

    silkan jumlah terkecil dari edge penghubung. Berdasarkan hal tersebut, maka

    digunakan minimum spanning tree yang mengatasi hubungan paling esien dian-

    tara semua vertex dalam network.

    2. PEMBAHASAN

    Berikut ini akan diberikan beberapa denisi yang berkaitan dengan

    minimum spanning tree.

  • 2Denisi 2.1. Suatu graf G adalah kumpulan obyek-obyek yang terdiri dari kum-

    pulan vertex yang berpasangan antara satu vertex dengan vertex lainnya yang

    dihubungkan dengan sebuah edge. Himpunan vertex dan himpunan edge dalam

    graf disimbolkan dengan V (G) dan E(G).[1]

    Gambar 1. Graf G

    Graf G pada Gambar 1 merupakan graf dengan himpunan vertex-vertex

    V (G) = fv1; v2; v3; v4; v5; v6; v7g dan himpunan edge E(G) = fv1v4; v1v6; v2v3; v2v4;v2v7; v3v5; v4v5; v4v6; v5v7; v6v7g.

    Denisi 2.2. Andaikan G adalah graf. Graf H adalah subgraf dari G jika

    V (H) V (G) dan E(H) E(G).[1]

    GrafH memuat vertex V (H) = fv1; v2; v3; v4g dan edge E(H) = fv1v4; v2v3;v2v4g.

    Denisi 2.3. Directed graf (Digraf) D adalah graf yang memiliki arah pada setiap

    edge.

    Denisi 2.4. Path adalah barisan bergantian vertex dan edge dengan tidak meng-

    ulang vertex.[2]

    Gambar 3 merupakan contoh dari digraf D dan contoh dari path yang ter-

    muat dalam Gambar 1 adalah v1; v4; v2; v7.

    Gambar 2. Graf H

  • 3Gambar 3. Digraf D

    Denisi 2.5. Graf disebut connected jika terdapat path yang menghubungkan

    setiap pasang vertex yang berbeda dari suatu graf, sedangkan graf yang tidak con-

    nected disebut disconnected.[1]

    Salah satu contoh dari graf connected dapat dilihat dalam Gambar 1, se-

    dangkan contoh graf disconnected disajikan dalam Gambar 4.

    Gambar 4. Graf disconnected

    Denisi 2.6. Tree adalah graf connected tak berarah yang tidak memuat cycle.

    Gambar 5 adalah salah satu contoh dari suatu tree.

    Gambar 5. Tree T

    Denisi 2.7. Spanning tree dari suatu graf G adalah subgraf G yang memuat

    semua vertex dalam G dan merupakan tree.[4]

    Denisi 2.8. Minimum spanning tree adalah spanning tree yang mempunyai jum-

    lahan bobot terkecil dari setiap edge-nya.[4]

    Syarat graf yang dapat dicari minimum spanning tree-nya yaitu

  • 4(1) Graf connected

    (2) Edge memiliki bobot

    (3) Graf tidak berarah

    Menurut Johnsonbaugh [3], untuk membentuk suatu spanning tree T digu-

    nakan algoritma Depth-First Search (DFS). Adapun algoritma Depth-First Search

    (DFS) adalah sebagai berikut.

    Input : graf G connected dengan vertex-vertex diurutkan v1; v2; : : : ; vn.

    Output : spanning tree T .

    (1) [Inisialisasi] Misalkan w := v1 dan T adalah graf yang memuat vertex v1

    dan sebut vertex v1 sebagai akar.

    (2) [Penambahan edge] Pilih edge (w; vk), dengan nilai k yang minimum, di-

    mana penambahan edge (w; vk) pada T tidak menghasilkan sebuah cycle.

    Jika tidak ada edge yang memenuhi, lanjut ke langkah 3. Jika ada edge

    yang memenuhi maka tambahkan edge (w; vk) pada T . Kemudian pilih

    w := vk dan ulangi langkah 2.

    (3) [Apakah sudah selesai?] Jika w := v1 maka STOP. (T adalah Spanning

    Tree).

    (4) [Backtrack ] Misal vertex x adalah parent dari vertex w pada T . Pilih

    w := x dan kembali ke langkah 2.

    Algoritma Kruskal digunakan untuk mencari minimum spanning tree de-

    ngan cara memilih edge yang minimum secara berturut-turut dalam graf con-

    nected berbobot dan tidak menghasilkan cycle ketika ditambahkan. Kemudian

    berhenti setelah n1 edge dipilih. Langkah-langkah untuk menentukanminimumspanning tree dalam graf connected berbobot menurut Chartrand dan Oellermann

    adalah

    (1) [Menentukan himpunan S yang terdiri dari edge suatu minimum spanning

    tree]

    S ;(2) [Menambah himpunan S]

    misal e adalah edge dengan bobot minimum dimana e =2 S dan S [ fegadalah asiklik dan S S [ feg

  • 5(3) [Menentukan apakah minimum spanning tree telah terbentuk]

    jika jSj = n 1, maka output S, jika tidak, kembali ke langkah 2.Contoh Soal:

    (1) Diberikan graf G pada Gambar 6, tentukan spanning tree menggunakan

    algoritma Depth-First Search (DFS)!

    Gambar 6. Graf G

    Urutan vertex-vertex dalam grafG adalah a; b; c; d; e; f; g; h; i; j; k; l;m; n; o; p; q,

    dan r. Langkah-langkah mencari spanning tree menggunakan algoritma

    Depth-First Search (DFS) adalah sebagai berikut.

    (a) Misalkan w := a

    maka a ditetapkan sebagai akar. Tambahkan edge (w; b) yaitu (a; b)

    pada graf T seperti dalam Gambar 7.

    Gambar 7. Graf T pada iterasi awal

    (b) Pilih w := b

    Vertex b adjacent dengan vertex c dan k. Karena vertex c adalah

    vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-

    bahkan edge (b; c) ke dalam graf T seperti dalam Gambar 8.

  • 6Gambar 8. Graf T pada iterasi 2

    (c) Pilih w := c

    Vertex c adjacent dengan vertex d dan l. Karena vertex d adalah

    vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-

    bahkan edge (c; d) ke dalam graf T seperti dalam Gambar 9.

    Gambar 9. Graf T pada iterasi 3

    (d) Pilih w := d

    Vertex d adjacent dengan vertex e dan n. Karena vertex e adalah

    vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-

    bahkan edge (d; e) ke dalam graf T seperti dalam Gambar 10.

    Gambar 10. Graf T pada iterasi 4

    (e) Pilih w := e

    Vertex e adjacent dengan vertex f maka tambahkan edge (e; f) ke

    dalam graf T seperti dalam Gambar 11.

  • 7Gambar 11. Graf T pada iterasi 5

    (f) Pilih w := f

    Vertex f adjacent dengan vertex g dan p. Karena vertex g ada-

    lah vertex yang lebih awal dalam urutan vertex dalam graf G maka

    tambahkan edge (f; g) ke dalam graf T seperti dalam Gambar 12.

    Gambar 12. Graf T pada iterasi 6

    (g) Pilih w := g

    Vertex g adjacent dengan vertex h maka tambahkan edge (g; h) ke

    dalam graf T seperti dalam Gambar 13.

    (h) Pilih w := h

    Vertex h adjacent dengan vertex i dan q. Karena vertex i adalah

    vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-

    bahkan edge (h; i) ke dalam graf T seperti dalam Gambar 14.

  • 8Gambar 13. Graf T pada iterasi 7

    Gambar 14. Graf T pada iterasi 8

    (i) Pilih w := i

    Vertex i adjacent dengan vertex j maka tambahkan edge (i; j) ke

    dalam graf T seperti dalam Gambar 15.

    (j) Pilih w := j

    Vertex j adjacent dengan vertex k dan r. Karena vertex k adalah

    vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-

    bahkan edge (j; k) ke dalam graf T seperti dalam Gambar 16.

    (k) Pilih w := k

    Vertex k adjacent dengan vertex b dan l. Dipilih vertex l, karena jika

  • 9Gambar 15. Graf T pada iterasi 9

    Gambar 16. Graf T pada iterasi 10

    dipilih vertex b maka pada T akan menghasilkan cycle. Tambahkan

    edge (k; l) ke dalam graf T seperti dalam Gambar 17.

    (l) Pilih w := l

    Vertex l adjacent dengan vertex c dan m. Dipilih vertex m, karena

    jika dipilih vertex c maka pada T akan menghasilkan cycle. Tam-

    bahkan edge (l;m) ke dalam graf T seperti dalam Gambar 18.

    (m) Pilih w := m

    Vertex m adjacent dengan vertex n dan r. Karena vertex n ada-

    lah vertex yang lebih awal dalam urutan vertex dalam graf G maka

    tambahkan edge (m;n) ke dalam graf T seperti dalam Gambar 19.

  • 10

    Gambar 17. Graf T pada iterasi 11

    Gambar 18. Graf T pada iterasi 12

    Gambar 19. Graf T pada iterasi 13

  • 11

    (n) Pilih w := n

    Vertex n adjacent dengan vertex m dan o. Dipilih vertex o, karena

    jika dipilih vertex d maka pada T akan menghasilkan cycle. Tam-

    bahkan edge (n; o) ke dalam graf T seperti dalam Gambar 20.

    Gambar 20. Graf T pada iterasi 14

    (o) Pilih w := o

    Vertex o adjacent dengan vertex o maka tambahkan edge (o; p) ke

    dalam graf T seperti dalam Gambar 21.

    Gambar 21. Graf T pada iterasi 15

    (p) Pilih w := p

    Vertex p adjacent dengan vertex f dan q. Dipilih vertex q, karena jika

  • 12

    dipilih vertex f maka pada T akan menghasilkan cycle. Tambahkan

    edge (p; q) ke dalam graf T seperti dalam Gambar 22.

    Gambar 22. Graf T pada iterasi 16

    (q) Pilih w := q

    Vertex q adjacent dengan vertex p dan r. Dipilih vertex r, karena jika

    dipilih vertex h maka pada T akan menghasilkan cycle. Tambahkan

    edge (q; r) ke dalam graf T seperti dalam Gambar 23.

    Gambar 23. Graf T pada iterasi 17

    (r) Pilih w := r

    Karena sudah tidak ada edge yang bisa ditambahkan dan w 6= a,maka dilakukan backtrack hingga vertex a. Kemudian pilih w := a.

  • 13

    (s) Pilih w := a

    Karena sudah tidak ada edge yang bisa ditambahkan dan w:= a

    maka STOP, sehingga diperoleh spanning tree T yang ditunjukkan

    pada Gambar 24.

    Gambar 24. Spanning tree dari graf G

    (2) Sebuah pipa akan dibangun untuk menghubungkan enam kota. Biaya

    (dalam ratusan juta dolar) untuk membangun setiap pipa tergantung pa-

    da jarak yang ditampilkan dalam graf connected berbobot pada Gambar

    25.

    Gambar 25. Graf connected berbobot G

    Tentukan sistem jaringan pipa untuk menghubungkan semua kota dengan

    total biaya yang minimum!

    Penyelesaian menggunakan algoritma Kruskal:

    Langkah awal, mengurutkan edge dari bobot terkecil sampai dengan ter-

    besar seperti dalam Tabel 1.

  • 14

    Tabel 1. Urutan bobot edge dari terkecil ke terbesar pada graf connected berbobot G

    Edge Bobot Edge Bobot Edge Bobot

    v3v2 0.8 v1v3 1.6 v3v5 2.2

    v6v5 1.1 v3v6 1.7 v1v5 2.5

    v5v4 1.2 v2v6 1.8 v3v4 2.9

    v1v2 1.5 v1v4 1.9

    Selanjutnya membentuk graf T , dimana S adalah himpunan edge dari

    T dengan S=fg seperti pada Gambar 26.

    Gambar 26. Inisialisasi graf T algoritma Kruskal

    Setelah terbentuk graf T , pilih edge vivj dengan bobot terkecil dan tidak

    membentuk cycle di T . Kemudian menambahkan edge vivj tersebut ke

    dalam T , sampai dengan T memuat n 1 edge.(a) Iterasi 1

    Dari Gambar 26, diperoleh n=6 dan S=fg. Pilih edge v3v2 karenamemiliki bobot 0.8 dan tidak membentuk cycle di T . Kemudian

    menambahkan edge v3v2 tersebut ke dalam T seperti pada Gambar

    27.

    (b) Iterasi 2

    Dari Gambar 27, diperoleh n=6 dan S=fv3v2g. Pilih edge v5v6 karenamemiliki bobot 1.1 dan tidak membentuk cycle di T . Kemudian

    menambahkan v5v6 tersebut ke dalam T seperti pada Gambar 28.

    (c) Iterasi 3

  • 15

    Gambar 27. Graf T pada iterasi 1 algoritma Kruskal

    Gambar 28. Graf T pada iterasi 2 algoritma Kruskal

    Dari Gambar 28, diperoleh n=6 dan S=fv3v2; v5v6g. Pilih edge v4v5karena memiliki bobot 1.2 dan tidak membentuk cycle di T . Kemu-

    dian menambahkan v4v5 tersebut ke dalam T seperti pada Gambar

    29.

    Gambar 29. Graf T pada iterasi 3 algoritma Kruskal

    (d) Iterasi 4

  • 16

    Dari Gambar 29, diperoleh n=6 dan S=fv3v2; v5v6; v4v5g. Pilih edgev1v2 karena memiliki bobot 1.5 dan tidak membentuk cycle di T . Ke-

    mudian menambahkan v1v2 tersebut ke dalam T seperti pada Gambar

    30.

    Gambar 30. Graf T pada iterasi 4 algoritma Kruskal

    (e) Iterasi 5

    Dari Gambar 30, diperoleh n=6 dan S=fv3v2; v5v6; v4v5; v1v2g. Pilihedge v1v3 karena memiliki bobot 1.6 tetapi akan membentuk cycle di

    T sehingga edge v1v3 tidak ditambahkan dalam T . Selanjutnya pilih

    edge v3v6 karena memiliki bobot 1.7 dan tidak membentuk cycle di

    T . Kemudian menambahkan v3v6 tersebut ke dalam T seperti pada

    Gambar 31.

    Gambar 31. Graf T pada iterasi 5 algoritma Kruskal

    (f) Iterasi 6

    Dari Gambar 31, diperoleh n=6 dan S=fv3v2; v5v6; v4v5; v1v2; v3v6g,maka iterasi berhenti. Diperolehminimum spanning tree seperti pada

    Gambar 32 dengan bobot minimum 6.3.

  • 17

    Gambar 32. Minimum spanning tree dari graf connected berbobot G

    3. Kesimpulan

    Berdasarkan pembahasan diperoleh kesimpulan sebagai berikut.

    (1) Minimum spanning tree adalah spanning tree yang mempunyai jumlahan

    bobot terkecil dari setiap edge-nya.

    (2) Cara untuk menentukan minimum spanning tree dengan algoritma Krus-

    kal adalah

    (a) [Menentukan himpunan S yang terdiri dari edge suatu minimum

    spanning tree]

    S ;(b) [Menambah himpunan S]

    misal e adalah edge dengan bobotminimum dimana e =2 S dan S[fegadalah asiklik dan S S [ feg

    (c) [Menentukan apakah minimum spanning tree telah terbentuk]

    jika jSj = n 1, maka output S, jika tidak, kembali ke langkah 2.

    DAFTAR PUSTAKA

    1. Chartrand, G., Introductory of Graph Theory, Dover Publications Inc., New York, 1977.

    2. Chartrand, G. and O. R. Oellermann, Applied and Algorithmic Graph Theory, McGraw-Hill,

    United States of America, 1976.

    3. Johnsonbaugh, R., Discrete Mathematics, Pearson Education Inc., London, 2005.

    4. Susanna, S., Discrete Mathematics with Applications, 3th Edition, Thomson Learning, Uni-

    ted States of America, 2004.