MENENTUKAN ALIRAN MAKSIMUM DENGAN ALGORITMA FORD FULKERSON DAN PREFLOW PUSH

(1)

i

MENENTUKAN ALIRAN MAKSIMUM DENGAN ALGORITMA FORD-FULKERSON DAN PREFLOW-PUSH

skripsi

disajikan sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains

Program Studi Matematika

oleh Rif’ah Ulya 4111409008

JURUSAN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS NEGERI SEMARANG


(2)

(3)

iii

PERNYATAAN

Saya menyatakan bahwa skripsi ini bebas plagiat, dan apabila di kemudian hari terbukti terdapat plagiat dalam skripsi ini, maka saya bersedia menerima sanksi sesuai ketentuan peraturan perundang-undangan.

Semarang, 01 Agustus 2013

Rif’ah Ulya


(4)

iv

PENGESAHAN

Skripsi yang berjudul

Menentukan Aliran Maksimum dengan Algoritma Ford-Fulkerson dan Preflow-Push

disusun oleh Rif’ah Ulya 4111409008

telah dipertahankan di hadapan sidang Panitia Ujian Skripsi FMIPA UNNES pada tanggal 01 Agustus 2013.

Panitia:

Ketua Sekretaris

Prof. Dr. Wiyanto, M.Si. Drs. Arief Agoestanto, M.Si.

196310121988031001 196807221993031005

Ketua Penguji

Dr. Rochmad, M.Si. 195711161987011001

Anggota Penguji/ Anggota Penguji/

Pembimbing Utama Pembimbing Pendamping

Dr. Mulyono, M.Si. Drs. Amin Suyitno, M.Pd.


(5)

v

PERSEMBAHAN

Untuk keluargaku tersayang,

Ayahanda H. Sidqon, sebagai sumber kekuatan hati di setiap harapan dan cita-citaku,

Ibunda Hj. Nur Hikmah, sebagai sumber kehangatan yang selalu mendukungku,

Kakekku H.M. Syarif, sebagai sumber kekuatan doa di setiap langkahku,

Nenekku Suwaibah dan Hj. Tarwiyah, sebagai sumber nasehat di setiap langkahku,

Kakakku Lulu’ Aina’ul Mardhiyyah, S.Pd, dengan semua kedewasaan yang selalu menginspirasiku, dan

Adikku Nurul Lathifah dan Fika Nur Aini yang mengisi keceriaan dalam hidupku.


(6)

vi

MOTTO

“... niscaya Allah akan meninggikan orang-orang yang beriman di antaramu dan orang-orang yang diberi ilmu pengetahuan beberapa derajat. Dan Allah

Maha Mengetahui apa yang kamu kerjakan.” (Q.S. Al Mujaadalah: 11).


(7)

vii

PRAKATA

Puji syukur ke hadirat Tuhan Yang Maha Esa, sehingga penulis dapat menyelesaikan skripsi dengan judul “Menentukan Aliran Maksimum dengan Algoritma Ford-Fulkerson dan Preflow-Push” sebagai salah satu syarat untuk mencapai gelar kesarjanaan pada Jurusan Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Negeri Semarang.

Penulisan skripsi ini tidak lepas dari dukungan, bantuan, dan bimbingan berbagai pihak. Dalam kesempatan ini penulis mengucapkan terima kasih dan penghargaan sebesar-besarnya kepada:

1. Prof. Dr. Fathur Rokhman, M.Hum., Rektor Universitas Negeri Semarang. 2. Prof. Dr. Wiyanto, M.Si., Dekan FMIPA Universitas Negeri Semarang. 3. Drs. Arief Agoestanto, M.Si., Ketua Jurusan Matematika FMIPA Universitas

Negeri Semarang.

4. Dr. Rochmad, M.Si., Dosen Penguji Utama yang telah memberikan arahan dan saran kepada penulis selama penyusunan skripsi ini.

5. Dr. Mulyono, M.Si., dan Drs. Amin Suyitno, M.Pd., selaku Dosen Pembimbing Utama dan Dosen Pembimbing Pendamping yang telah sabar memberikan bimbingan selama penyusunan skripsi ini.

6. Seluruh Dosen Pengajar Jurusan Matematika FMIPA Unnes serta staf TU Jurusan Matematika dan FMIPA Universitas Negeri Semarang.


(8)

viii

7. Bapak H. Sidqon dan Ibu Hj. Nur Hikmah, kedua orang tuaku yang telah dengan sabar dan ikhlas mencurahkan waktu untuk mendidik, memberi kasih sayang, menasihati, dan membimbing penulis.

8. Mbak Lulu’, Dek Lathifah, dan Dek Fika, yang selalu mendukung dan membantu dalam penulisan skripsi ini.

9. Teman-temanku PP. Assabiila, Khoir, Imus, Zumi, Rina, Umi, Aini, Tami, dkk., yang telah menemaniku selama empat tahun dalam suka maupun duka. 10. Teman seperjuanganku dalam menyelesaikan skripsi, Meely dan Mas Akbar. 11. Teman-temanku Prodi Matematika angkatan 2009, Meely, Firdha, Neni,

Zumi, Rista, Anggi, Sabrina, Indah, Julia, Noni, Tya, Bram, Putri, Arum, Fresti, Tyas, Putut, Karisa, Devi, Fera, Rosita, Dian, Hanif, Maya, Bagus, Ichsan, Chakim, Dinar, Aziz, St, Azizah dan Didik, yang telah memberikan dukungannya hingga terselesaikannya skripsi ini.

12. Semua pihak yang telah membantu yang tidak dapat disebutkan satu persatu sehingga skripsi ini dapat terselesaikan dengan baik.

Akhir kata penulis berharap semoga skripsi ini bermanfaat bagi para pembaca dan dapat dipergunakan sebagai bahan referensi untuk penelitian-penelitian lain di kemudian hari.

Semarang, Agustus 2013


(9)

ix

ABSTRAK

Ulya, Rif’ah. 2013. Menentukan Aliran Maksimum dengan Algoritma Ford-Fulkerson dan Preflow-Push. Skripsi, Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Negeri Semarang. Pembimbing Utama Dr. Mulyono, M.Si dan Pembimbing Pendamping Drs. Amin Suyitno, M.Pd. Kata Kunci: Algoritma Ford-Fulkerson, Algoritma Preflow-Push, dan Aliran Maksimum.

Pada sebuah jaringan dalam masalah aliran maksimum, selalu terdapat sebuah aliran yang nilainya sama dengan kapasitas pemutus minimum (minimal cut), yang dikenal dengan sebutan “Teorema Maximal Flow–Minimal Cut.” Dalam pencarian aliran maksimum, terdapat beberapa algoritma, algoritma yang digunakan dalam menyelesaikan masalah aliran maksimum secara umum menggunakan dua pendekatan dasar, yaitu pendekatan algoritma Aughmenting Path dan pendekatan algoritma Preflow-Push.

Permasalahan pada skripsi ini adalah bagaimana konsep aliran maksimum berdasarkan teorema Maximal Flow–Minimal Cut, bagaimana menentukan aliran maksimum dengan algoritma Ford-Fulkerson, dan bagaimana menentukan aliran maksimum dengan algoritma Preflow-Push dengan alat bantu software GIDEN. Metode penelitian yang digunakan adalah metode studi pustaka.

Pada skripsi ini dibahas tentang pembuktian teorema Maximal Flow– Minimal Cut, Algoritma Ford-Fulkerson dan Preflow-Push. Konsep aliran maksimum berdasarkan teorema Maximal Flow–Minimal Cut menjelaskan bahwa nilai aliran ∗ = ( , 1) dengan ( , 1) merupakan sebuah pemutus-( , )

minimum di , maka ∗ adalah aliran maksimum di yang nilainya sama dengan kapasitas pemutus-( , ) minimum di . Algoritma Ford-Fulkerson bekerja dengan mengkonstruksi aliran baru dengan nilai yang lebih besar dari aliran yang lama, dan menggunakan teknik pelabelan Routin, pencarian aliran baru akan berhenti ketika semua titik yang terlabel telah teramati dan titik tidak terlabel. Sedangkan algoritma Preflow-Push bekerja dengan operasi dasar push dan relabel, algoritma ini berhenti ketika tidak ada lagi titik yang aktif. Pada skripsi ini, Algoritma Ford-Fulkerson dihitung secara manual, sedangkan algoritma Preflow-Push menggunakan alat bantu yaitu software GIDEN. Dari contoh penggunaan aliran maksimum diperoleh aliran maksimum = pemutus-( , ) minimum = 600. Hal ini menunjukkan bahwa hasil pencarian aliran maksimum dengan algoritma Ford-Fulkerson dan Preflow-Push adalah sama.


(10)

x

DAFTAR ISI

Halaman

PRAKATA ... vii

ABSTRAK ... ix

DAFTAR ISI ... x

DAFTAR GAMBAR ... xiii

DAFTAR LAMPIRAN ... xv

BAB 1. PENDAHULUAN 1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 3

1.3 Pembatasan Masalah ... 3

1.4 Tujuan Penelitian ... 4

1.5 Manfaat Penelitian ... 4

1.6 Sistematika Penulisan Skripsi ... 5

2. TINJAUAN PUSTAKA 2.1 Pengertian Graf ... 7

2.1.1 Incident dan Adjacent ... 8

2.1.2 Loop ... 9

2.2 Graf Bagian (Subgraf) ... 9

2.3 Jalan, Jejak, Lintasan, Sirkuit dan Siklus ... 10

2.4 Graf Terhubung dan Graf Berbobot ... 11

2.4.1 Graf Terhubung (Connected) ... 11

2.4.2 Graf Berbobot ... 12

2.5 Graf Berarah dan Derajat Titik pada Graf Berarah ... 12

2.5.1 Graf Berarah (Directed Graph) ... 12

2.5.2 Derajat Titik pada Graf Berarah ... 14

2.6 Jaringan (Network) ... 14


(11)

xi

2.8 Busur Maju dan Busur Balik ... 17

2.9 Inkremen dan Lintasan Peningkatan ... 18

2.10 Aliran Maksimum ... 19

2.11 Preflow ... 20

2.12 Excess, Kapasitas Sisa, Jaringan Sisa, dan Titik Aktif ... 20

2.12.1 Excess ... 20

2.12.2 Kapasitas Sisa dan Jaringan Sisa ... 21

2.12.3 Titik Aktif ... 21

2.13 Pelabelan Jarak (Distance Label) ... 22

2.14 Aliran Jenuh dan Tak Jenuh ... 22

2.15 Software GIDEN ... 23

3. METODE PENELITIAN 3.1 Menemukan Masalah ... 26

3.2 Merumuskan Masalah ... 26

3.3 Studi Pustaka ... 27

3.4 Analisis dan Pemecahan Masalah ... 27

3.5 Penarikan Kesimpulan ... 28

4. HASIL DAN PEMBAHASAN 4.1 Konsep Aliran pada Jaringan ... 29

4.2 Konsep Aliran Maksimum pada Jaringan ... 34

4.3 Algoritma Ford-Fulkerson ... 40

4.4 Algoritma Preflow-Push ... 42

4.5 Algoritma Preflow-Push dengan Software GIDEN ... 44

4.6 Contoh Penggunaan Aliran Maksimum ... 47

4.6.1 Penyelesaian dengan Algoritma Ford-Fulkerson ... 48

4.6.2 Penyelesaian dengan Algoritma Preflow-Push pada Software GIDEN ... 66

5 PENUTUP 5.1 Simpulan ... 68

5.2 Saran ... 70


(12)

xii


(13)

xiii

DAFTAR GAMBAR

Gambar Halaman

2.1 Graf dengan lima titik dan enam sisi ... 8

2.2 Graf graf bagian dari Graf ... 10

2.3 Graf ... 11

2.4 graf terhubung ... 11

2.5 graf berbobot ... 12

2.6 (a) Graf berarah terhubung lemah ... 13

(b) Graf berarah terhubung kuat ... 13

(b) Graf dasar ... 13

2.7 Jaringan dengan titik sumber dan titik tujuan ……… 14

2.8 Jaringan dengan dua titik antara 1 dan 2 ... 16

2.9 Jaringan dengan titik sumber dan titik tujuan ... 17

2.10 Lintasan peningkatan terhadap aliran ... 18

2.11 Software GIDEN ... 23

2.12 Tampilan menu utama pada software GIDEN ... 23

2.13 Tampilan untuk menggambar titik ... 24

2.14 Tampilan untuk menggambar garis ... 24

2.15 Tampilan graf yang sudah diberi nama pada titik dan bobot pada sisi ... 25

2.16 Tampilan menu dalam solvers ... 25

4.1 Jaringan dengan aliran bernilai 5 ... 30

4.2 Jaringan dengan aliran 1bernilai 6……….31

4.3 Jaringan dengan aliran bernilai 5 ... 33

4.4 Ilustrasi aliran pada busur maju dan busur balik ... 36

4.5 Jaringan dengan aliran bernilai 9 ... 39

4.6 Tampilan cara menggunakan algoritma Preflow-Push ... 45

4.7 Tampilan input data algoritma Preflow-Push ... 45

4.8 Tampilan untuk proses iterasi algoritma Preflow-Push ... 46


(14)

xiv

4.10 Kapasitas aliran air (liter per menit) ... 47

4.11 Jaringan dengan titik sumber dan titik tujuan ………48

4.12 Jaringan dengan 0= 0 ……….. 48

4.13 Pelabelan titik pada jaringan ………50

4.14 Jaringan dengan 1= 150 ... 51

4.15 Pelabelan titik pada jaringan ... 53

4.16 Jaringan dengan 2= 350 ... 54

4.17 Pelabelan titik pada jaringan ... 56

4.18 Jaringan dengan 3= 450 ... 57

4.19 Pelabelan titik pada jaringan ... 59

4.20 Jaringan dengan 4= 550 ... 60

4.21 Pelabelan titik pada jaringan ... 62

4.22 Jaringan dengan 5= 600 ... 63

4.23 Jaringan dengan aliran maksimum = pemutus-( , ) minimum ... 65

4.24 Tampilan hasil aliran maksimum dengan algoritma Preflow-Push pada software GIDEN ……….66


(15)

xv

DAFTAR LAMPIRAN

Lampiran Halaman

1. Pencarian himpunan pemutus-( , ) pada contoh penggunaan aliran maksimum ... 73 2. Iterasi algoritma Preflow-Push pada Software GIDEN ... 97


(16)

1

BAB I

PENDAHULUAN

1.1

Latar Belakang

Teori graf merupakan topik yang banyak mendapat perhatian, karena model-modelnya sangat berguna untuk aplikasi yang luas, seperti masalah dalam jaringan komunikasi, transportasi, ilmu komputer, dan lain sebagainya. Secara umum, graf merupakan suatu diagram yang memuat informasi tertentu jika diinterpretasikan secara tepat. Dalam kehidupan sehari-hari, graf digunakan untuk menggambarkan berbagai macam struktur yang ada. Tujuannya adalah sebagai visualisasi objek-objek agar lebih mudah dimengerti. Beberapa contoh graf yang sering dijumpai dalam kehidupan sehari-hari antara lain: struktur organisasi, bagan alir pengambilan mata kuliah, peta, rangkaian listrik, dan lain-lain (Siang, 2004: 185).

Jaringan merupakan salah satu kajian dalam teori graf. Jaringan adalah kumpulan titik dan sisi yang saling terhubung dengan arah tertentu. Di dalam jaringan terdapat beberapa model yang bisa digunakan untuk membantu memecahkan masalah-masalah, diantaranya adalah model rentang jaringan minimum, model rute terpendek, dan model aliran maksimum.

Model aliran maksimum mempunyai tujuan untuk memaksimalkan jumlah aliran yang melewati jaringan dalam sebuah sistem jaringan. Pada model masalah rute terpendek, aliran yang membangkitkan biaya tidak dibatasi oleh kapasitas apa


(17)

pun. Sebaliknya, pada model masalah aliran maksimum, aliran tersebut tidak membangkitkan biaya tetapi mempunyai batas kapasitas tertentu.

Pada sebuah jaringan dalam masalah aliran maksimum, selalu terdapat sebuah aliran yang nilainya sama dengan kapasitas pemutus minimum (minimal cut), yang dikenal dengan sebutan “Teorema Maximal Flow–Minimal Cut” (Budayasa, 2007: 235). Teorema Maximal Flow-Minimal Cut menjamin bahwa aliran maksimum pada sebuah jaringan tidak akan melebihi kapasitas pemutus minimum dalam jaringan tersebut. Dalam pencarian aliran maksimum, terdapat beberapa algoritma, menurut Ahuja et al. (1993: 166-167), algoritma yang digunakan dalam menyelesaikan masalah aliran maksimum secara umum menggunakan dua pendekatan dasar, yaitu pendekatan algoritma Aughmenting Path dan pendekatan algoritma Preflow-Push.

Algoritma yang menggunakan pendekatan Aughmenting Path diantaranya adalah algoritma Ford-Fulkerson. Algoritma Ford-Fulkerson ditemukan oleh Ford dan Fulkerson pada tahun 1956. Algoritma ini akan efektif bagi penggunanya untuk melakukan suatu proses, tindakan atau pengambilan keputusan untuk tujuan tertentu dengan mengetahui aliran maksimum yang terdapat dalam suatu jaringan. Hal yang paling rapi dari algoritma Ford-Fulkerson adalah bahwa algoritma ini selalu memberikan hasil yang benar dalam menyelesaikan sub-masalah dalam mencari Augmenting Path dalam setiap iterasinya. Pada skripsi ini, algoritma Preflow-Push digunakan hanya sebatas untuk mencocokkan hasil perhitungan manual dari algoritma Ford-Fulkerson. Dalam hal ini, algoritma Preflow-Push akan dijalankan dengan alat bantu yaitu software GIDEN. Berdasarkan alasan di


(18)

atas penulis tertarik untuk membahas skripsi dengan judul “Menentukan Aliran Maksimum dengan algoritma Ford-Fulkerson dan Preflow-Push.”

1.2

Rumusan Masalah

Dari latar belakang di atas, diperoleh rumusan masalah yang timbul dalam penyusunan skripsi ini adalah sebagai berikut.

1. Bagaimana konsep aliran maksimum berdasarkan teorema Maximal Flow-Minimal Cut?

2. Bagaimana menentukan aliran maksimum dengan algoritma Ford-Fulkerson?

3. Bagaimana menentukan aliran maksimum dengan algoritma Preflow-Push dengan bantuan software GIDEN?

1.3

Pembatasan Masalah

Dalam penyusunan skripsi ini, pembatasan permasalahan yang akan dibahas adalah sebagai berikut.

1. Konsep aliran maksimum berdasarkan teorema Maximal Flow-Minimal Cut meliputi definisi-definisi teorema, serta bukti-bukti yang terkait dengan materi tersebut.

2. Algoritma Ford-Fulkerson dan Preflow-Push digunakan dalam skripsi ini hanya untuk menentukan aliran maksimum, tidak membahas kompleksitas kedua algoritma tersebut.

3. Algoritma Ford-Fulkerson akan dihitung secara manual dengan teknik pelabelan.


(19)

4. Algoritma Preflow-Push digunakan hanya sebatas untuk mencocokkan hasil perhitungan manual dari algoritma Ford-Fulkerson. Dalam hal ini, algoritma Preflow-Push akan dijalankan dengan alat bantu yaitu software GIDEN.

5. Contoh penggunaan aliran maksimum yang digunakan adalah simulasi.

1.4

Tujuan Penelitian

Tujuan dari penelitian ini adalah sebagai berikut.

(1) Mengetahui konsep aliran maksimum berdasarkan teorema Maximal Flow- Minimal Cut.

(2) Mengetahui cara menentukan aliran maksimum dengan algoritma Ford-Fulkerson.

(3) Mengetahui cara menentukan aliran maksimum dengan menggunakan algoritma Preflow-Push dengan alat bantu software GIDEN.

1.5

Manfaat Penelitian

Manfaat yang diharapkan dari penyusunan skripsi ini adalah sebagai berikut.

1. Bagi peneliti

Dapat mengetahui tentang konsep teorema Maximal Flow-Minimal Cut, mengetahui cara menentukan aliran maksimum dengan algoritma Ford-Fulkerson dan algoritma Preflow-Push.

2. Bagi mahasiswa

Membantu mahasiswa mempelajari konsep teorema Maximal Flow-Minimal Cut serta algoritma-algoritma dalam menentukan aliran maksimum, dan


(20)

memotivasi mahasiswa untuk melanjutkan penelitian lebih mendalam sehingga dapat menerapkannya dalam kehidupan nyata.

1.6

Sistematika Penulisan Skripsi

Dalam penulisan skripsi ini secara garis besar dibagi menjadi tiga bagian pokok, yaitu bagian awal, bagian isi, dan bagian akhir.

1.6.1 Bagian Awal

Bagian awal skripsi memuat halaman sampul, halaman judul, pernyataan keaslian tulisan, halaman pengesahan, motto, prakata, abstrak, daftar isi, dan daftar gambar.

1.6.2 Bagian Isi

Bagian isi terdiri dari lima bab yaitu sebagai berikut. (1) Bab I: Pendahuluan

Dikemukakan tentang latar belakang, rumusan masalah, pembatasan masalah, tujuan, manfaat penelitian, dan sistematika penulisan.

(2) Bab II: Tinjauan Pustaka

Berisi uraian teoritis atau teori-teori yang mendasari pemecahan tentang masalah-masalah yang berhubungan dengan judul skripsi.

(3) Bab III: Metode Penelitian

Berisi metode-metode yang digunakan dalam penelitian, meliputi studi pustaka, analisis dan pemecahan masalah, dan penarikan kesimpulan.

(4) Bab IV: Hasil dan Pembahasan


(21)

(5) Bab V: Penutup

Berisi simpulan dan saran. 1.6.3 Bagian Akhir

Bagian akhir skripsi berisi tentang daftar pustaka dan lampiran-lampiran yang mendukung skripsi.


(22)

7

BAB II

TINJAUAN PUSTAKA

2.1

Pengertian Graf

Definisi 2.1

Sebuah graf = ( , ) berisikan dua himpunan yaitu himpunan berhingga tak kosong ( ) dari obyek-obyek yang disebut titik, dan himpunan berhingga (mungkin kosong) ( ) yang elemen-elemennya disebut sisi, sedemikian hingga setiap elemen dalam ( ) merupakan pasangan tak berurutan dari titik-titik di ( ). Himpunan ( ) disebut himpunan titik-titik , dan himpunan ( ) disebut himpunan sisi-sisi (Budayasa, 2007: 1-2).

Cara mempresentasikan sebuah graf yang paling umum adalah dengan diagram. Dalam diagram tersebut, titik-titik dinyatakan sebagai noktah dan tiap sisi dinyatakan sebagai kurva sederhana yang menghubungkan tiap dua titik. Misalnya, graf dengan = { 1, 2, 3, 4, 5} dan

= { 1, 2, 3, 4, 5, 6} dimana 1 = ( 1, 2), 2= ( 2, 3), 3 = ( 3, 5),

4= ( 1, 4), 5= ( 1, 4), 6= ( 5, 5), dapat dipresentasikan dalam bentuk


(23)

1

2 3 4

1

2

4 3

5

Gambar 2.1. Graf G dengan lima titik dan enam sisi.

6 5

Contoh 2.1:

2.1.1 Incident dan Adjacent Definisi 2.2

Jika sebuah titik merupakan titik ujung dari suatu sisi , maka dan disebut saling berinsidensi atau titik terkait (incident) dengan sisi . Sebagai contoh, pada Contoh 2.1 di atas, sisi 1, 4, dan 5 adalah sisi-sisi yang

terkait dengan titik 1. Dua sisi yang tidak paralel disebut bertetangga (adjacent), bila kedua sisi tersebut terkait dengan titik yang sama. Sebagai contoh, 1 dan 2 dalam Contoh 2.1 merupakan dua sisi yang bertetangga. Selain itu, dua buah titik disebut bertetangga jika kedua titik tersebut merupakan titik-titik ujung dari sisi yang sama. Dalam Contoh 2.1 3 dan 5 adalah dua titik yang saling bertetangga,

sedangkan titik 2 dan 4 merupakan dua titik yang tidak saling bertetangga (Sutarno et al., 2003: 60 – 61).


(24)

2.1.2 Loop Definisi 2.3

Dalam sebuah graf, seperti terlihat pada Contoh 2.1, dimungkinkan adanya suatu sisi yang dikaitkan dengan pasangan 5, 5 . Sisi yang dua titik ujungnya

sama disebut loop (gelang). Pada Contoh 2.1, sisi 6 merupakan sebuah loop.

Dalam sebuah graf dimungkinkan adanya lebih dari satu sisi yang dikaitkan dengan sepasang titik. Pada contoh 2.1, sisi 4 dan sisi 5 dikaitkan dengan pasangan titik 1, 4 . Pasangan sisi semacam ini disebut sisi-sisi paralel/sejajar atau sisi rangkap. Sebuah graf yang tidak memiliki loop dan tidak memiliki sisi rangkap disebut graf sederhana (Sutarno et al., 2003: 59).

2.2

Graf Bagian (Subgraf)

Definisi 2.4

graf dengan himpunan titik dan himpunan sisi . Sebuah graf dengan himpunan titik dan himpunan sisi , disebut graf bagian (subgraf) dari graf , dinotasikan ⊆ , jika ⊆ dan ⊆ . Karena konsep graf bagian dapat dianalogikan dengan konsep himpunan bagian dalam teori himpunan, maka sebuah graf bagian dapat dipandang sebagai bagian dari graf yang lain.

Sifat-sifat dari graf bagian adalah sebagai berikut. 1. Setiap graf merupakan graf bagian dari dirinya sendiri.

2. Graf bagian dari suatu graf bagian merupakan graf bagian dari . 3. Sebuah titik dalam graf merupakan graf bagian dari .


(25)

Sebuah sisi dari bersamaan dengan kedua titik ujungnya juga merupakan graf bagian dari (Sutarno et al., 2003: 87).

Contoh 2.2:

G H

Gambar 2.2. Graf H graf bagian dari Graf G.

2.3

Jalan, Jejak, Lintasan, Sirkuit, dan Siklus

Definisi 2.4

Misalkan G adalah sebuah graf. Sebuah jalan (walk) di G adalah sebuah barisan berhingga (tak kosong) = 0, 1, 1, 2, 2,…, , yang suku-sukunya

bergantian titik dan sisi, sedemikian hingga 1 dan adalah titik-titik akhir sisi , untuk 1 (Budayasa, 2007: 6). Misalkan adalah sebuah jalan dari 0

ke , atau jalan 0, . Titik 0 dan berturut-turut disebut titik awal dan titik akhir . Sedangkan titik-titik 1, 2,…, −1 disebut titik-titik internal dari ,

dan disebut panjang dari . Perhatikan bahwa panjang dari jalan adalah banyaknya sisi dalam . Jika semua sisi 1, 2, 3…, dalam jalan berbeda,

maka disebut jejak (trail). Jika semua titik 0, 1, 2,…, dalam jalan juga

berbeda, maka disebut sebuah lintasan (path).Sebuah jalan disebut tertutup, jika titik awal dan titik akhir dari identik (sama). Jejak tertutup disebut sirkuit. Sirkuit yang titik awal dan titik internalnya berlainan disebut siklus. Siklus dengan

titik dinotasikan dengan (Sutarno et al., 2003: 65).

2 1

1 3

1 2

4 1

2


(26)

Contoh 2.3:

Jalan : a 6 f 7 b 2 c 3 d 3 c

Jalan tertutup : a 1 b 2 c 10 g 12 d 12 g 9 f 6 a Jejak : a 1 b 2 c 10 g 11 e 4 d 3 c

Jejak tertutup (sirkuit) : a 6 f 5 e 4 d 12 g 8 b 1 a

Lintasan : a 1 b 2 c 10 g 9 f 5 e 4 d Siklus : a 6 f 5 e 4 d 12 g 8 b 1 a.

2.4

Graf Terhubung dan Graf Berbobot

2.4.1 Graf Terhubung (Connected) Definisi 2.5

Sebuah graf G dikatakan terhubung (connected) jika untuk setiap dua titik G yang berbeda terdapat sebuah lintasan yang menghubungkan kedua titik tersebut (Budayasa, 2007: 8).

Contoh 2.4:

Gambar 2.4. G graf terhubung.

1 2 3 4 5 a b g c d e f 1 3 2 4 5 6 7 8 9 10 11 12


(27)

2.4.2 Graf Berbobot Definisi 2.6

Graf berbobot adalah graf yang setiap sisinya diberi sebuah harga (bobot). Bobot pada tiap sisi dapat menyatakan jarak antara dua buah kota, waktu tempuh antara dua buah kota, biaya perjalanan yang ditempuh, dan sebagainya (Sutarno et al., 2003: 107).

Contoh 2.5:

2.5 Graf Berarah dan Derajat Titik pada Graf Berarah

2.5.1 Graf Berarah (Directed Graph)

Definisi 2.7

Sebuah graf berarah = ( ,Γ ) adalah suatu pasangan berurutan dari dua himpunan yaitu himpunan berhingga tak kosong yang anggota-anggotanya disebut titik, dan Γ( ) yaitu himpunan berhingga (boleh kosong) yang anggota-anggotanya disebut busur sedemikian hingga setiap busur merupakan pasangan berurutan dari dua titik di . Jika 1 dan 2 adalah dua

titik pada graf berarah dan = ( 1, 2) sebuah busur , maka e disebut busur keluar dari titik 1 dan e busur menuju 2 (Budayasa, 2007: 214). dikatakan graf berarah sederhana jika semua busur dari berbeda dan tidak terdapat loop (Setiawati, 1993).

B

A 12

15

10

8

14

9 11

Gambar 2.5. G graf berbobot.

C

D F


(28)

1 2

3 4

1 2

3 4

1

3

2

4

Definisi 2.8

Misalkan sebuah graf berarah. Graf dasar dari graf adalah graf tak berarah , sedemikian hingga = ( ) dan setiap busur ( , ) di menjadi sisi( , ) pada (Budayasa, 2007: 215). Konsep jalan, jejak, lintasan, sirkuit, dan siklus pada graf berarah serupa dengan konsep jalan, jejak, lintasan, sirkuit, dan siklus pada graf tak berarah, hanya saja istilah sisi pada graf tak berarah diganti dengan istilah busur pada graf berarah.

Ada dua macam keterhubungan pada graf berarah , yaitu terhubung lemah dan terhubung kuat. Graf berarah dikatakan terhubung lemah jika graf dasarnya terhubung, sedangkan dikatakan terhubung kuat jika untuk setiap dua titik dan di D terdapat lintasan berarah dari ke dan sebaliknya (Budayasa, 2007: 216).

Contoh 2.6:

D H G

Gambar 2.6 (a) Gambar 2.6 (b) Gambar 2.6 (c) Pada Gambar 2.6 (a) adalah graf berarah terhubung lemah. Sebaliknya, pada Gambar 2.6 (b) adalah graf berarah terhubung kuat. Pada Gambar 2.6 (c) adalah graf dasar dari graf berarah maupun .


(29)

1

2

3

4

2

5

6

2.5.2 Derajat Titik pada Graf Berarah Definisi 2.9

Misalkan sebuah graf berarah, dan ( ). Derajat keluar titik (out degree ) dilambangkan ( ) adalah banyaknya busur pada graf berarah yang keluar dati titik . Sedangkan derajat masuk titik (in degree ) dilambangkan

( ) adalah banyaknya busur yang menuju ke titik (Budayasa, 2007: 216).

2.6 Jaringan

(Network)

Definisi 2.10

Sebuah jaringan = ( ,Γ ) adalah sebuah graf berarah sederhana terhubung lemah yang setiap busurnya dikaitkan dengan bilangan real non negatif. Selanjutnya bilangan real non negatif yang dikaitkan pada busur ( , ), atau disingkat ( , ), pada jaringan disebut kapasitas busur ( , ), dan dilambangkan dengan ( , ) atau disingkat ( , ). Sebuah titik di jaringan disebut titik sumber jika = 0 dan sebuah titik di jaringan disebut titik tujuan jika = 0, sedangkan titik yang lain di jaringan N disebut titik-titik antara (Budayasa, 2007: 227-228).

Contoh 2.7:


(30)

Definisi 2.11

Misalkan sebuah jaringan dengan titik sumber dan titik tujuan . Jika adalah sebuah titik di , maka himpunan semua busur yang keluar dari titik (meninggalkan titik ) dilambangkan dengan ( ) dan himpunan semua busur yang menuju ke titik , dilambangkan ( ) (Budayasa, 2007: 229-230). Perhatikan Gambar 2.7, terdapat dua busur di yang keluar dari titik , diperoleh = { , 1 , , 2 } dan = . Perhatikan titik 1,

diperoleh 1 = { 1, 2 , 1, } dan 1 = ( , 1) dan seterusnya.

2.7 Pemutus pada Jaringan

Definisi 2.12

Misalkan sebuah jaringan dengan titik sumber dan titik tujuan . Misalkan adalah himpunan bagian tak kosong dari ( ) dan 1= − .

Jika dan 1, maka himpunan busur ( , 1) disebut sebuah pemutus-( , ) dari jaringan . Disebut demikian, karena penghapusan semua busur

( , 1) dari , memutus semua lintasan berarah dari titik ke titik pada

jaringan . Misalkan adalah himpunan titik antara pada jaringan , dan ’ adalah sebuah himpunan bagian . Jika = { }∪ ′, maka ( , 1) sebuah

pemutus-( , ) pada . Jadi banyaknya pemutus-( , ) pada jaringan sama dengan banyaknya himpunan bagian dari himpunan , yaitu 2 dengan = (Budayasa, 2007: 229).


(31)

1

2

3

4

5

6 2

Contoh 2.8:

Gambar 2.8. Jaringan dengan dua titik antara 1 dan 2.

Pada Gambar 2.8 di atas, mempunyai dua titik antara 1 dan 2, sehingga terdapat 22 = 4 pemutus-( , ) pada , yaitu:

, 1, 2, = , 1 , , 2

, 2 , 1, = , 1 , 2,

, 1 , 2, = , 2 , 1, 2 , 1, , 1, 2 , = 1, , 2, .

Setiap pemutus-( , ) pada jaringan mempunyai kapasitas. Pemutus-( , ) yang mempunyai kapasitas terkecil disebut pemutus-Pemutus-( , ) minimum. Masing-masing kapasitas dari keempat pemutus tersebut adalah:

, 1, 2, = ( , ,1 + , 2 = 3 + 4 = 7

, 2 , 1, = , 1 + 2, = 3 + 6 = 9

, 1 , 2, = ( , 2 + 1, 2 + 1, = 4 + 2 + 5 = 11

, 1, 2 , = 1, + 2, = 5 + 6 = 11

Tampak bahwa , 1, 2, = { , 1 , , 2 } dengan kapasitas 7 merupakan sebuah pemutus minimum pada jaringan .


(32)

2.8

Busur Maju dan Busur Balik

Definisi 2.13

Misalkan sebuah jaringan dan adalah graf dasar . Misalkan pada graf terdapat lintasan = ( 1, 2, 3,…, , +1,…, ). Jika ( , +1) sebuah

busur pada , maka busur tersebut dinamakan busur maju terhadap , sebaliknya jika ( +1, ) sebuah busur pada , maka busur tersebut dinamakan busur balik

terhadap . Jadi, suatu busur pada termasuk busur maju atau busur balik, sangat tergantung pada lintasan pada graf dasarnya.

Contoh 2.9:

Gambar 2.9. Jaringan dengan titik sumber dan titik tujuan .

Misalkan graf dasar dari jaringan pada Gambar 2.9, maka = ( , 2, 1, 3, 4, ) adalah sebuah lintasan ( , ) pada dan bukan lintasan

berarah pada . Sehingga, terhadap , busur-busur ( , 2), ( 1, 3), dan ( 4, )

merupakan busur-busur maju, sedangkan busur-busur ( 1, 2) dan ( 4, 3) adalah busur-busur balik. Jika diperhatikan lintasan 1= , 1, 2, 4, pada , maka

semua busur yang berkorespondensi dengan sisi lintasan 1 merupakan busur maju terhadap 1. Perhatikan bahwa busur ( 1, 2) pada merupakan busur balik

terhadap lintasan , tetapi busur tersebut merupakan busur maju terhadap lintasan

1.

_

1

2

3

4

8

3 4 5

2 3 3 4


(33)

2 4

2.9

Inkremen dan Lintasan Peningkatan

Definisi 2.14

Misalkan adalah sebuah aliran dari titik sumber ke titik tujuan pada jaringan , dan misalkan adalah graf dasar , maka terdapat lintasan pada . ( ) adalah inkremen lintasan , didefinisikan sebagai berikut. ( ) = min adalah busur yang bersesuaian dengan sisi .

Dengan adalah inkremen pada busur , didefinisikan sebagai berikut:

= − , jika busur maju

, jika busur balik

Sebuah lintasan dengan > 0 disebut lintasan augmentasi. Selanjutnya, lintasan augmentasi dari titik sumber ke titik tujuan dinamakan sebuah lintasan peningkatan (Budayasa, 2007: 235-236).

Contoh 2.10:

Gambar 2.10. Lintasan peningkatan terhadap aliran .

Pada Gambar 2.10 di atas, dipunyai lintasan = ( , 2, 1, 3, 4, ). Karena ( , 2), 1, 3 , ( 4, ) busur-busur maju dan 1, 2 , ( 4, 3)

busur-busur balik, maka:

( , 2) = ( , 2)− ( , 2) = 6−2 = 4, 1, 3 = 1, 3 − 1, 3 = 5−2 = 3,

1 3

8;4

3;1 4;1 5;2

2;1 3;2 3;1 4;3


(34)

4, = 4, − 4, = 3−1 = 2,

1, 2 = 1, 2 = 1, dan 4, 3 = 4, 3 = 1.

Sehingga = min 4,3,2,1,1 = 1. Karena > 0, maka = ( , 2, 1, 3, 4, ) adalah sebuah lintasan peningkatan.

2.10

Aliran Maksimum

Definisi 2.15

Sebuah aliran di jaringan dari titik sumber ke titik tujuan adalah suatu fungsi yang memetakan setiap busur ( , ) di dengan sebuah bilangan bulat non negatif yang memenuhi syarat-syarat sebagai berikut.

A flow in a network from the source s to sink t is a function f which assigns a non-negative integer to each of the arcs a in N such that

(1)(capacity constraint) ( ) ( ) for each arc ,

(2)the total flow into the sink t equals the total flow out of thr source s, and (3)(flow conservation) for any intermediate vertex x, the total flow into x

equals the total flow out of x (Clark & Holton, 1995: 262) .

Misalkan ( , ) adalah kapasitas busur ( , ). Aliran dalam jaringan pada setiap busur ( , ) adalah bilangan bulat non negatif ( , ) sedemikian sehingga

(1) 0 , , ,∀ , �Γ , disebut kapasitas pembatas,

(2) ( , )� ( ) , = ( , )�( ) ( , ), disebut nilai aliran ,

(3) ( , )� ( ) , = ( , )�( ) , ,∀ � − , ,disebut

konservasi aliran. Definisi 2.16

Jika terdapat sebuah aliran di yang nilainya sama dengan kapasitas suatu pemutus-( , ), maka aliran tersebut adalah aliran maksimum dan pemutus-( , ) tersebut adalah sebuah pemutus-( , ) minimum. Jadi aliran


(35)

bernilai , dari titik sumber ke titik tujuan pada jaringan dikatakan aliran maksimum jika,

, = min , 1 , 1 suatu pemutus− , pada jaringan

(Budayasa, 2007: 234).

2.11

Preflow

Definisi 2.17

Given a transport network = ( , ) with vertices and edges, a pseudo-flow is an assignment of nonnegative real numbers to the edges of such that ( , ) ( , ) for ( , ) . A pseudo-flow is a preflow

if , − ( , ) 0 for every ≠ , (Thulasiraman & Swamy,

1992: 411).

Definisi di atas mengatakan bahwa jaringan transportasi = ( , ) dengan titik dan busur, sebuah aliran-semu (pseudo-flow) merupakan sebuah pengaitan bilangan real non negatif pada busur-busur di yang memenuhi ( , ) , dengan ( , ) . Sebuah aliran-semu dikatakan preflow jika memenuhi , − ( , ) 0 untuk setiap ≠ , , dengan , adalah , ( ) , , dan , adalah , ( ) , , untuk setiap

( )−{ , }.

2.12

Excess

, Kapasitas Sisa, Jaringan Sisa, dan Titik Aktif

2.12.1 Excess

Definisi 2.18

Let = , − ( , ) for every ≠ , . ( ) is refined to as excess at vertex v (Thulasiraman & Swamy, 1992: 411).


(36)

Dari definisi di atas, misalkan aliran pada jaringan = ( , ) dan . Excess pada titik didefinisikan sebagai = , − , , ∀ ≠ , .

2.12.2 Kapasitas Sisa dan Jaringan Sisa Definisi 2.19

Given a preflow f, let = ( , ) denote the residual network with respect to . Recall that each edge ( , ) induces an edge ( , ) , if ( , ) < ( , ), and edge ( , ) if , > 0. Edges of are all called residual edges. In the former case ( , ) is called a forward edge and in the latter case ( , ) is a backward edge. ( ) will denote the capacity of the residual edge e:

( ) = − ,

( ), (Thulasiraman & Swamy, 1992: 411-412).

Dari definisi di atas, diberikan suatu preflow , maka jaringan = ( , ) merupakan jaringan sisa terhadap preflow . Setiap busur ( , ) membangun sebuah busur ( , ) jika ( , ) < ( , ), dan membangun sebuah busur ( , ) jika , > 0. Busur-busur pada jaringan disebut busur sisa. Pada kasus ini ( , ) dinamakan busur maju, dan sebaliknya ( , ) dinamakan busur balik. ( ) dikatakan kapasitas busur sisa dengan nilai ( ) = − , jika busur maju

( ), jika busur balik.

Untuk selanjutnya dalam tulisan ini, kapasitas dari busur sisa disebut kapasitas sisa busur .

2.12.3 Titik Aktif Definisi 2.20

A vertex is active if ≠ , , and > 0 (Thulasiraman & Swamy, 1992: 412).


(37)

Dari definisi di atas, misalkan aliran pada jaringan = ( , ) dan . Suatu titik dikatakan titik aktif jika > 0 dimana ≠ , .

2.13

Pelabelan Jarak

(Distance Label)

Definisi 2.21

A valid labeling of is an assignment of nonnegative integers to the vertices of such that = , = 0 and for every residual edge ( , ), + 1. It can be shown that if < , then ( ) is a lower bound on the distance from to in , and if ( ) , then

is a lower bound on the distance from to in (Thulasiraman & Swamy, 1992: 412).

Definisi di atas mengatakan bahwa suatu pelabelan valid pada titik (dilambangkan ( )) pada jaringan = ( , ), dengan titik dan busur, adalah pemetaan bilangan bulat non negatif ke suatu titik di sedemikian sehingga label pada titik sumber adalah = , label pada titik tujuan adalah = 0, dan + 1 untuk setiap busur sisa ( , ). Dapat ditunjukkan bahwa jika < , maka ( ) batas bawah pada jarak dari titik ke titik tujuan pada jaringan sisa . Sebaliknya jika ( ) , maka − batas bawah jarak dari titik ke titik sumber pada jaringan sisa .

2.14

Aliran Jenuh dan Tak Jenuh

Definisi 2.22

A push from to is a saturating push if , = 0 after the push, otherwise it is a nonsaturating push (Thulasiraman & Swamy, 1992: 412).

Dari definisi di atas, misalkan adalah aliran pada jaringan . Sebuah busur ( , ) dikatakan jenuh ( ) jika , = 0, dan tak jenuh jika


(38)

selainnya. Artinya, dikatakan jenuh jika , = ( , ), dan tak jenuh jika , < ( , ).

2.15

Software

GIDEN

Software GIDEN merupakan suatu software yang terorientasi untuk menyelesaikan masalah-masalah optimasi jaringan. Software GIDEN digunakan untuk memudahkan menemukan solusi yang tepat dalam menyelesaikan masalah-masalah dalam jaringan yang melibatkan titik dan sisi dengan jumlah yang sangat banyak. Masalah-masalah yang dapat diselesaikan dengan software GIDEN antara lain: minimum spanning tree, shortest path, maximum flow, dan minimum-cost flow. Langkah-langkah penggunaan software GIDEN adalah sebagai berikut.

Gambar 2.11. Software GIDEN. Klik file, kemudian pilih new, diperoleh gambar sebagai berikut.


(39)

Pilih new node untuk menggambar titik.

Gambar 2.13. Tampilan untuk menggambar titik. Pilih new edge untuk menggambar sisi.

Gambar 2.14. Tampilan untuk menggambar garis.

Untuk memberi nama pada titik, klik node data, pilih add data field. Misalkan beri nama “titik”, beri nilai awal “0”, kemudian ganti tipe data field dengan text, kemudian klik OK. Sedangkan untuk memberi nilai pada sisi (bobot), klik edge data, pilih add data field. Beri nama field “bobot”, beri nilai awal “0”, ganti tipe data field dengan integer, kemudian klik OK. Pilih edit value dan beri nama pada masing-masing titik, kemudian beri nilai pada masing-masing sisi, seperti pada gambar berikut.


(40)

Gambar 2.15. Tampilan graf yang sudah diberi nama pada titik dan bobot pada sisi.

Klik solvers. Terlihat ada beberapa masalah yang dapat diselesaikan dengan software GIDEN, diantaranya minimum spanning tree, shortest path, maximum flow, dan minimum cost flow.

Gambar 2.16. Tampilan menu dalam solvers.

Pilih menu dalam solvers sesuai dengan permasalahan yang diinginkan. Dalam waktu yang singkat software ini akan menghasilkan solusi yang tepat untuk menyelesaikan masalah-masalah tersebut.


(41)

26

BAB III

METODE PENELITIAN

Pada penelitian ini metode atau langkah-langkah yang digunakan adalah sebagai berikut.

3.1

Menemukan Masalah

Dalam tahap ini dicari sumber pustaka dan dipilih bagian dari sumber pustaka sebagai suatu masalah. Penulis mencari berbagai macam sumber pustaka yang berhubungan dengan aliran maksimum serta algoritma-algoritma untuk menyelesaikan masalah aliran maksimum, kemudian menyeleksi untuk ditetapkan sebagai suatu masalah yang harus diselesaikan.

3.2 Merumuskan Masalah

Masalah yang ditemukan kemudian dirumuskan kedalam pertanyaan yang harus diselesaikan yaitu:

(1) Bagaimana konsep aliran maksimum berdasarkan teorema Maximal Flow-Minimal Cut?

(2) Bagaimana menentukan aliran maksimum dengan algoritma Ford-Fulkerson?

(3) Bagaimana menentukan aliran maksimum dengan algoritma Preflow-Push dengan bantuan software GIDEN?


(42)

3.3

Studi Pustaka

Mengenai studi pustaka dilakukan untuk mengumpulkan informasi yang diperlukan dalam penelitian ini terutama yang mengkaji jaringan, aliran maksimum, algoritma Ford-Fulkerson, algoritma Preflow-Push, dan software GIDEN. Mengumpulkan konsep pendukung yang diperlukan dalam menyelesaikan masalah sehingga didapatkan suatu ide mengenai bahan dasar pengembangan upaya pemecahan masalah. Studi pustaka diawali dengan mengumpulkan sumber pustaka yang berupa buku-buku referensi yang mengkaji teori graf dan software GIDEN. Selain itu sumber pustaka juga dapat diperoleh secara online misalnya dengan cara mencarinya di situs www.google.com dengan menggunakan kata kunci jaringan, aliran maksimum, algoritma Ford-Fulkerson, algoritma Preflow-Push, dan software GIDEN.

3.4

Analisis dan Pemecahan Masalah

Dari berbagai sumber pustaka yang sudah menjadi bahan kajian, diperoleh suatu pemecahan masalah di atas. Selanjutnya dilakukan langkah-langkah pemecahan masalah sebagai berikut.

1. Mendeskripsikan konsep aliran pada jaringan.

2. Mendeskripsikan konsep aliran maksimum pada jaringan berdasarkan teorema Maximal Flow-Minimal Cut.

3. Mendeskripsikan cara menentukan aliran maksimum dengan algoritma Ford-Fulkerson yang didasari dengan pembuktian lemma dan teorema Maximal Flow-Minimal Cut.


(43)

4. Mendeskripsikan cara menentukan aliran maksimum dengan algoritma Preflow-Push yang didasari operasi dasar push dan relabel.

5. Mendeskripsikan langkah-langkah menentukan aliran maksimum dengan algoritma Preflow-Push menggunakan software GIDEN.

6. Menerapkan algoritma Ford-Fulkerson dan Preflow-Push dalam menentukan aliran maksimum pada contoh simulasi tentang aliran air dalam suatu motel dengan asumsi-asumsi tertentu.

7. Mencocokkan hasil perhitungan aliran maksimum dari algoritma Ford-Fulkerson dan Preflow-Push dengan bantuan software GIDEN.

3.5

Penarikan Kesimpulan

Tahap ini merupakan tahap terakhir dalam metode penelitian. Penarikan kesimpulan dari permasalahan diperoleh dari hasil langkah pemecahan masalah yang dirumuskan berdasarkan studi pustaka dan pembahasannya.


(44)

29

BAB IV

HASIL DAN PEMBAHASAN

4.1 Konsep Aliran pada Jaringan

Sebuah aliran di jaringan = ( ,Γ ) dari titik sumber ke titik tujuan adalah suatu fungsi yang memetakan setiap busur ( , ) di N dengan sebuah bilangan bulat non negatif yang memenuhi syarat-syarat sebagai berikut. (1) 0 , , ∀ , �Γ( ) (disebut “kapasitas pembatas”).

Menyatakan bahwa nilai aliran pada setiap busur tidak pernah melebihi kapasitas busur tersebut.

(2) ( , )� ( ) , = ( , )�( ) ( , )(disebut “nilai aliran f”).

Menyatakan bahwa total nilai aliran yang keluar dari titik sumber sama dengan total nilai aliran yang sampai di titik tujuan. Nilai ini yang selanjutnya disebut “nilai aliran ” dari s ke t pada jaringan .

(3) ( , ) ( ) , = ( , )( ) , ,∀ � − , (disebut “konservasi aliran”).

Menyatakan bahwa untuk setiap titik antara pada berlaku total aliran yang meninggalkan titik x sama dengan total aliran yang menuju titik .

Jika nilai aliran dari titik sumber ke titik tujuan pada jaringan dimisalkan , , maka syarat (2) dan (3) di atas dapat ditulis sebagai berikut.


(45)

,, jika = ...(4)

f(i,V) - f(V,i) = 0, jika ≠ , ...(5)

− , , jika = ...(6)

Keterangan persamaan di atas adalah sebagai berikut.

Persamaan (4): aliran yang keluar dari adalah , , aliran yang masuk ke titik tujuan adalah ,.

Persamaan (5): aliran yang keluar dari titik antara (selain dan ) adalah nol. Persamaan (6): aliran yang keluar dari titik adalah − , .

Contoh 4.1:

Diberikan aliran dengan dari ke dengan nilai 5 pada graf di bawah ini.

Gambar 4.1. Jaringan dengan aliran bernilai 5. Keterangan:

, = 4; , = 3 , = 3; , = 2

, = 6; , = 2 , = 4; , = 1

, = 3; , = 1 , = 8; , = 4

( , ) = 5; , = 2 , = 3; , = 1

, = 2; , = 1

s

a

b

c

d

t 8;4

3;1 4;1 5;2

2;1 3;2 3;1 4;3


(46)

Perhatikan Gambar 4.1 dengan aliran bernilai 5. Jika = { , } dan 1= { , , , },

, 1 = , , , , , = { , , , , , } adalah pemutus-( , ) pada

dengan kapasitas , 1 = , + , + , = 6 + 3 + 5 = 14,

maka , 1 = , + , + , = 2 + 1 + 2 = 5.

Terlihat bahwa , 1 , 1 . Contoh 4.2:

Tingkatkan aliran f menjadi 1 dari s ke t dengan nilai 6, sehingga:

Gambar 4.2. Jaringan dengan aliran 1 bernilai 6. Keterangan:

, = 4; , = 4 , = 3; , = 2

, = 6; , = 2 , = 4; , = 1

, = 3; , = 1 , = 8; , = 5

, = 5; , = 3 , = 3; , = 1

, = 2; , = 1

Perhatikan Gambar 4.1 dengan aliran 1 bernilai 6. Jika = { , } dan 1= { , , , },

, 1 = , , , , , = { , , , , , } adalah pemutus-( , ) pada

dengan kapasitas , 1 = , + , + , = 6 + 3 + 5 = 14,

4;4

a

b

c

d

t s

6;2

3;1 5;3 2;1

3;2

4;1 8;5


(47)

maka , 1 = , + , + , = 2 + 1 + 3 = 6.

Terlihat bahwa , 1 , 1 .

Dari Contoh 4.1 dan 4.2 terlihat bahwa nilai aliran tidak melebihi kapasitas pemutus-( , ), yaitu , 1 . Ternyata ini berlaku untuk sebarang aliran dan

sebarang pemutus di . Teorema 4.1

Misalkan sebuah jaringan dengan titik sumber dan titik tujuan . Jika f adalah sebuah aliran dari ke pada dengan nilai , dan ( , 1) sebuah

pemutus-( , ) pada , maka , = , 1 − ( 1, ) ( , 1) (Budayasa, 2007: 233).

Bukti:

Dari definisi aliran, untuk titik sumber diperoleh , − , = , ,

dan untuk setiap titik � − , diperoleh

, = ( , ) ( ) , = ( , ) ( ) , = ( , ) atau , − , = 0.

Sehingga untuk suatu pemutus- , , , 1 diperoleh

, − , = ( , − ( ,

= , − , + 0 = , ...(1)

sementara itu, , − , = , ∪ 1 − ∪ 1,

= , + , 1 − , + 1,

= , 1 − 1, ...(2)

karena nilai aliran pada setiap busur tidak negatif, maka 1, 0, sehingga , 1 − 1, , 1 ...(3)


(48)

Selanjutnya, karena nilai aliran pada setiap busur N tidak melebihi kapasitas busur, maka , 1 , 1 ...(4)

dari (1), (2), (3), (4) disimpulkan,

, = , 1 − 1, , 1 , 1

Dengan demikian bukti teorema lengkap. Contoh 4.3:

Diberikan graf sebagai berikut

Gambar 4.3. Jaringan dengan aliran bernilai 5.

(a) Jika = { , } dan 1 = { , , , }, , 1 adalah pemutus ( , ) sehingga

, 1 = , + , + , = 2 + 2 + 2 = 6

1, = , = 1

, = , 1 − 1, = 6−1 = 5

dengan kapasitas , 1 = , + , + , = 6 + 3 + 5 = 14

terlihat bahwa , 1 − 1, , 1 , 1 .

s

a

b

c

d

t 4;3

6;2

3;2

5;2 2;1 2;1 4;3

4;1 8;4


(49)

(b) Jika = { , , } dan 1 = { , , }, , 1 adalah pemutus ( , ) sehingga

, 1 = , + , + , = 2 + 1 + 3 = 6

1, = , = 1

, = , 1 − 1, = 6−1 = 5

dengan kapasitas , 1 = , + , + , = 5 + 2 + 4 = 11

terlihat bahwa , 11, , 1 , 1 .

Dari Contoh 4.3, menunjukkan bahwa aliran , dari ke akan sama meskipun melalui pemutus-( , ) yang berbeda. Dalam hal ini, nilai aliran , dari ke sama dengan 5 melalui dua pemutus- , , yaitu , , { , , , } dan

, , , { , , } . Terlihat bahwa , = , 1 − 1, , 1

, 1 .

4.2 Konsep Aliran Maksimum pada Jaringan

Definisi 4.1

Misalkan adalah sebuah aliran dari titik sumber ke titik tujuan pada jaringan , dan misalkan adalah graf dasar , maka terdapat lintasan pada . ( ) adalah inkremen lintasan peningkatan , menurut Clark & Holton (1995: 268), didefinisikan sebagai berikut,

= min adalah busur yang bersesuaian dengan sisi di mana adalah inkremen pada busur , didefinisikan sebagai berikut,

= − , jika busur maju


(50)

sebuah lintasan dengan = 0 dikatakan jenuh (f saturated), sedangkan lintasan dengan > 0 dikatakan tak jenuh (f unsaturated) disebut lintasan augmentasi. Selanjutnya, lintasan augmentasi dari titik sumber ke titik tujuan

dinamakan sebuah lintasan peningkatan. Lemma 4.2

Misalkan sebuah aliran bernilai , dari titik sumber ke titik tujuan pada jaringan . Jika terdapat lintasan dari titik ke titik dengan = > 0, definisikan fungsi 1 pada himpunan Γ( ) sebagai berikut:

1 = + , jika busur maju terhadap , 1 = − jika busur balik terhadap ,

1 = , jika busur yang lainnya. Maka 1 adalah aliran dari titik ke titik

pada N dengan nilai , + (Budayasa, 2007: 236). Bukti:

Berdasarkan definisi = > 0, dan = min{ }, maka ( ) positif. Oleh sebab = − jika busur maju , dan = jika busur balik terhadap , berakibat:

1 =

+ = ( ) − = 0 Jelas 0 1 ( ).

Karena positif, maka adalah lintasan augmentasi. Selanjutnya, lintasan augmentasi dari titik sumber ke titik tujuan dinamakan sebuah lintasan peningkatan dimana aliran pada busur yang melewati titik-titik pada lintasan peningkatan boleh berubah. Untuk memeriksa bahwa aliran 1 memenuhi sifat


(51)

+

+ +

+

− −

konservasi aliran, maka aliran pada busur yang terkait dengan titik-titik antara (titik selain dan ) perlu dicek.

Misalkan, dipunyai titik (titik antara) pada lintasan peningkatan , maka dua busur yang terkait dengan titik diilustrasikan sebagai berikut.

Gambar 4.4. Ilustrasi aliran pada busur maju dan busur balik.

Dari ilustrasi di atas, aliran yang masuk ataupun keluar dari titik tidak berubah, dengan demikian memenuhi sifat konservasi aliran sebagai berikut:

=

( )� ( ) ( )�( ) ,∀ � − , .

Akan ditunjukkan lintasan peningkatan yang alirannya ditingkatkan oleh . Lintasan peningkatan ini dimulai dari titik sumber , misalkan busur 1 adalah busur yang terkait dengan titik sumber pada lintasan peningkatan . Sehingga,

1 1 = 1 + , jika 1 busur maju terhadap , 1 1 = 1 − , jika 1 busur balik terhadap ,

1 1 = 1 , jika busur 1 bukan busur yang terdapat pada lintasan .

Dari definisi aliran untuk titik sumber , pada persamaan (4) sebagai berikut , − , = , , diperoleh 1 −0 = , artinya 1 = , .

Sehingga diperoleh nilai 1= ( ) 1 − ( ) 1

= 1 1 −0

= 1 + (syarat positif)

= , + .

x

x x


(52)

Teorema 4.3 (Teorema Maximal Flow-Minimal Cut)

Misalkan sebuah jaringan dengan titik sumber dan titik tujuan . Maka terdapat sebuah aliran maksimum pada (Budayasa, 2007: 238-239). Bukti:

Misalkan sebuah aliran dengan nilai dari ke pada jaringan . Definisikan himpunan sebagai berikut:

sedemikian hingga = atau ada lintasan ( , ) pada graf dasar yang inkremennya positif. Maka ada dua kemungkinan letak titik , yaitu � atau

� 1 = − .

Jika � , berdasarkan definisi , terdapat lintasan dari titik ke titik dengan

= > 0. Sehingga berdasarkan lemma 4.2, aliran dapat direvisi menjadi aliran 1, sedemikian hingga 1 = + jika busur maju pada ,

1 = − jika busur balik pada , 1 = jika busur yang

tidak terletak pada . Aliran 1 bernilai + > (karena > 0). Jadi 1 adalah aliran dari ke di yang nilainya lebih besar dari nilai aliran . Dikatakan, aliran 1 adalah revisi aliran . Selanjutnya menggunakan aliran 1 pada , cari himpunan seperti sebelumnya. Jika titik tujuan menjadi anggota , maka berdasarkan definisi , terdapat lintasan 1 dari ke dengan 1 = 1 > 0.

Berdasarkan lemma 4.2, bentuk aliran 2 dari 1 sedemikian hingga: 2 =

1 + 1 jika busur maju pada 1, 2 = 1 − 1 jika a busur balik pada 1, dan 2 = 1 untuk busur yang lainnya. Aliran 2 bernilai + + 1,


(53)

aliran 1 didasarkan atas lintasan peningkatan 1. Proses merevisi aliran seperti itu dapat dilanjutkan sampai diperoleh suatu aliran, katakan aliran ∗, sedemikian hingga terhadap aliran ∗ pada , himpunan tidak memuat titik , atau . Ini berarti, tidak ada lagi lintasan pada graf dari ke yang inkremennya positif. Selanjutnya, akan ditunjukkan ∗ adalah aliran maksimum pada . Untuk itu cukup ditunjukkan bahwa nilai aliran ∗ sama dengan kapasitas sebuah pemutus-( , ) pada .

Klaim 1. Jika � , � 1 = − , dan , �Γ( ), maka ∗ , = ( , ).

Andaikan ∗ , < ( , ). Karena , busur maju, maka , > 0. Selanjutnya, karena � , maka ada lintasan ′ dari ke dengan ′ > 0 dan karena , > 0, maka ada lintasan dari ke lewat yang inkremennya positif. Berdasarkan definisi , maka � kontradiksi dengan .

Klaim 2. Jika � , � 1 = − , dan , �Γ( ), maka ∗ , = 0. Andaikan ∗ , > 0. Karena , busur balik maka , = ∗ , > 0. Seperti sebelumnya, karena � , maka ada lintasan ′ dari ke dengan ′ > 0 dan karena , > 0, maka pada graf dasar ada lintasan dari ke lewat yang inkremennya positif. Berdasarkan definisi , maka � kontradiksi bahwa titik terletak di dalam 1= − .

Berdasarkan klaim 1 dan klaim 2, secara berturut-turut diperoleh

,

1 = ( , 1) dan ∗ 1, = 0.

Berdasarkan teorema 4.1

Nilai aliran ∗= ∗ , 1 − ∗ 1,


(54)

Karena ( , 1) sebuah pemutus-( , ) pada dan nilai ∗= , 1 , maka ∗

adalah aliran maksimum di dan ( , 1) adalah sebuah pemutus-( , )

minimum pada jaringan . Contoh 4.4:

Diberikan graf N sebagai berikut.

Gambar 4.5. Jaringan dengan aliran bernilai 9.

Graf adalah jaringan dengan aliran bernilai 9 dengan pemutus-( , ) minimum, yaitu , 1 = , , , , , = { , , , , , }

, 1 = , + , + ( , )

= 4 + 2 + 3 = 9

, 1 = , + , + ( , ) = 4 + 2 + 3 = 9.

Menurut teorema Maximal Flow-Minimal Cut aliran maksimum dari ke dalam sama dengan kapasitas pemutus-( , ) minimum. Dari contoh 4.4, diperoleh , 1 = , 1 atau = , 1 = 9, terlihat bahwa semua

busur dalam himpunan , 1 adalah jenuh karena , 1 = , 1 .

4;4

a

b

c

d

t s

6;5

3;0 5;4 2;2

3;3

4;0 8;6


(55)

4.3 Algoritma Ford-Fulkerson

Secara garis besar, prosedur algoritma Ford-Fulkerson sudah tersirat dalam bukti teorema 4.3 dan prosedur untuk mengkonstruksi aliran baru yang nilainya lebih besar dari nilai aliran lama sudah tersirat dalam lemma 4.2. Namun prosedur untuk mendapatkan lintasan peningkatan tidak tersirat dalam lemma maupun bukti teorema sebelumnya. Untuk mendapatkan lintasan yang demikian, akan digunakan teknik pelabelan titik, yang pada prinsipnya melabel titik-titik dengan teknik tertentu dimulai dari titik , kemudian dilanjutkan melabel titik yang lain. Jika dengan teknik tersebut bisa melabel titik , maka dengan teknik “prosedur balik” lintasan ditemukan. Tetapi sebaliknya, jika titik tidak bisa dilabel, maka tidak ada lintasan seperti itu pada . Secara sistematis algoritmanya adalah sebagai berikut.

Langkah 1: misalkan sebuah aliran dari ke pada . (Boleh dimulai dengan aliran bernilai nol, yaitu , = 0,∀ ( , )�Γ(N). Dilanjutkan ke Routin-Pelabelan.

Langkah 2: Routin-Pelabelan

2.1 Label = ( , +, = ~). Titik telah terlabel dan belum teramati. Sebuah titik dikatakan telah teramati jika semua titik yang dapat dilabel dari titik sudah terlabel.

2.2 Pilih sebarang titik yang terlabel tetapi belum teramati, misalkan titik tersebut . Untuk ∀ ∃( , ) Γ(N), belum berlabel dan

, > 0, maka label = ( ,−, ) dengan =


(56)

teramati. Untuk ∀ ∃( , ) Γ(N), belum berlabel dan , > ( , ), maka label = ( , +, ) dengan = min , , − ( , ) . Sekarang titik terlabel tetapi belum teramati, sedangkan titik telah terlabel dan teramati. 2.3 Ulangi langkah 2.2 sampai:

(1) titik terlabel, atau;

(2) semua titik terlabel telah teramati tetapi titik tak terlabel; (3) jika titik terlabel, lanjut ke langkah 3;

(4) jika semua titik terlabel telah teramati tetapi titik tak terlabel, maka BERHENTI. Aliran adalah aliran maksimum pada jaringan .

Langkah 3: dengan prosedur “balik”, temukan lintasan peningkatan dengan i(P) adalah label .

Langkah 4: tingkatkan nilai aliran sebesar label , berdasarkan lintasan peningkatan dengan menggunakan “Routine-Peningkatan”:

4.1 Misal: = lanjutkan ke langkah 4.2.

4.2 Jika label = ( , +, ) tingkatkan nilai ( , ) dengan

= ( ). Jika label = ( ,−, ) turunkan nilai ( , ) dengan = ( ).

4.3 Jika = , hapus semua label. Pada tahap ini diperoleh aliran baru dengan nilai = i(P) + nilai aliran lama. Ganti aliran dengan aliran yang baru, dan kembali ke langkah 1 (Budayasa, 2007: 240-242).


(57)

4.4 Algoritma

Preflow-Push

Algoritma Preflow-Push dapat mencari nilai aliran maksimum dengan aliran-semu (pseudo-flow) f pada jaringan. Misalkan, jaringan = ( , ) dengan titik dan busur, sebuah aliran-semu (pseudo-flow) f merupakan sebuah pengaitan bilangan real non negatif pada busur-busur di yang memenuhi

, , ∀ , .

Sebuah aliran-semu (pseudo-flow) f dikatakan sebuah preflow, jika memenuhi , − , 0 ∀ ≠ , , dengan , adalah

,

, ( ) , dan , adalah , ( ) , . Dengan =

, − , merupakan excess pada titik . Jelas sebuah preflow f adalah aliran jika = 0 untuk setiap ≠ , (Thulasiraman & Swamy, 1992: 411).

Misalkan = ( , ) dengan preflow f. Maka = ( , ) dikatakan jaringan sisa terhadap preflow jika setiap busur ( , ) membangun sebuah busur ( , ) jika ( , ) < ( , ), dan membangun sebuah busur ( , )

jika , > 0. Busur-busur pada jaringan sisa disebut busur sisa. Pada kasus ini ( , ) dinamakan busur maju, dan sebaliknya ( , ) dinamakan busur balik. ( ) dikatakan kapasitas busur sisa jika,

= − , jika busur maju

, jika busur balik.

Suatu pelabelan valid pada = ( , ) adalah pemetaan bilangan bulat non negatif ke suatu titik di sedemikian sehingga = , = 0 dan


(58)

+ 1 untuk setiap busur sisa ( , ). Sebuah titik disebut titik aktif jika ≠ , , dan > 0 (Thulasiraman, 1992: 412).

Algoritma Preflow-Push dimulai dengan preflow f yang nilainya sama dengan kapasitas busur untuk setiap busur yang meninggalkan titik sumber dan bernilai nol untuk yang lainnya. Selanjutnya inisialisasi label dengan pelabelan valid = , = 0, dan + 1 untuk setiap busur sisa ( , ). Algoritma Preflow-Push secara berulang-ulang menggunakan dua operasi dasar, yaitu Push dan Relabel yang bekerja sebagai berikut.

Push ( , )

Applicability. is active, ( , ) and = + 1. Action. Set = ⁡{ , , } and do the following.

1. Increase ( , ) by if , is a forward edge, otherwise decrease ( , ) by .

2. Decrease ( ) by and increase ( ) by .

(Note: > 0 because both ( ) and ( , ) are positive). Relabel ( )

Applicability. is active, and for every , , ( ) ( ).

Action. Set = ( , ) { + 1} (Thulasiraman, 1992: 412).

Misalkan titik (bukan titik sumber maupun titik tujuan) yang aktif ( > 0), maka pilih titik tersebut dan lakukan push dan relabel secara berulang sebagai berikut.

Langkah 1: jika ada busur ( , ) yang admissible = + 1 , maka lakukan push = min{ , , }

(1) tingkatkan aliran ( , ) sebesar jika ( , ) busur maju, dan penurunan aliran ( , ) sebesar jika ( , ) busur balik,

(2) turunkan ( ) sebesar dan tingkatkan ( ) sebesar , dengan > 0.


(59)

Langkah 2: jika tidak ada busur ( , ) yang admissible ( ) ( ), maka lakukan relabel, dengan mengganti ( ) dengan label jarak sebesar

= min{ + 1}.

Lakukan push dan relabel secara berulang sehingga tidak ada lagi titik yang aktif. Pendorongan preflow f dari ke meningkatkan aliran ( , ) dan ( ) dengan peningkatan sebesar = min{ , , }, dan penurunan ( , ) dan ( ) dengan nilai yang sama. Setelah dilakukan pendorongan preflow f dari ke , jika , = 0dikatakan jenuh (f saturated), selainnya dikatakan tak jenuh (f unsaturated). Algoritma Preflow-Push akan berhenti ketika tidak ada lagi titik aktif.

4.5 Algoritma

Preflow-Push

dengan

Software

GIDEN

Untuk mempermudah menyelesaikan masalah aliran maksimum dengan algoritma Preflow-Push, maka akan digunakan alat bantu yaitu software GIDEN. Menurut Coullard et al. (2003: 48-49), pelabelan busur pada software GIDEN yaitu ( , − ), di mana adalah preflow f dengan nilai awal nol ( = 0) dan ( − ) merupakan kapasitas sisa busur yang biasa dilambangkan . Software GIDEN ini mengimplementasikan aturan “highest label” pada pemilihan titik aktif. Menurut Ahuja et al. (1993: 230), cara bekerja algoritma Preflow-Push dengan aturan “highest label” yaitu “this algorithm always pushes

from an active node with the highest value of the distance label”, menjelaskan bahwa algoritma ini bekerja dengan mendorong preflow dengan nilai label tertinggi dalam mengoperasikan algoritma Preflow-Push.


(60)

Langkah-langkah penggunaan software GIDEN seperti yang telah dijelaskan pada bab sebelumnya. Untuk menyelesaikan masalah aliran maksimum dengan algoritma Preflow-Push, klik solvers, pilih maximum flow, kemudian pilih Preflow-Push. Seperti pada gambar berikut.

Gambar 4.6. Tampilan cara menggunakan algoritma Preflow-Push. Kemudian akan muncul kotak pertanyaan, pilih “bobot”, klik accept.


(61)

Kemudian klik trace, klik sink, klik source, kemudian enter “YES”. Klik trace berulang kali sampai iterasi berhenti dengan berubahnya trace menjadi reset.

Gambar 4.8. Tampilan untuk proses iterasi algoritma Preflow-Push. Nilai akhir aliran maksimum dapat dilihat pada bagian atas seperti pada gambar berikut.

Gambar 4.9. Tampilan untuk hasil aliran maksimum dengan algoritma Preflow-Push.


(62)

4.6 Contoh Penggunaan Aliran Maksimum

Pada pembangunan motel, akan dibangun sistem aliran air yang tandon airnya terletak di kamar 6 dan berakhir di kamar 1. Besarnya ukuran pipa berbeda-beda dan kapasitas aliran air (liter per menit) terlihat pada gambar berikut.

Gambar 4.10. Kapasitas aliran air (liter per menit).

Contoh penggunaan aliran maksimum pada Gambar 4.10 diambil dari soal dalam buku “Program Linear” karangan Dwijanto (2008: 148), sebelumnya soal ini belum ada penyelesaiannya. Penulis menambahkan asumsi bahwa kantor maupun kamar selain kamar 1 sedang dalam keadaan tidak menggunakan air, antar kamar letaknya datar, kekuatan gaya yang diberikan dalam pipa sama. Bagaimana menentukan aliran air maksimum dengan algoritma Ford-Fulkerson dan Preflow-Push serta tentukan besar kapasitas pemutus minimumnya dengan titik tujuan kamar 1 dalam sistem jaringan aliran air pada motel ini.

Misalkan, kamar 6 beri nama titik , kamar 3 beri nama titik , kantor beri nama titk , kamar 8 beri nama titik , kamar 2 beri nama titik , kamar 5 beri nama titik , kamar 7 beri nama titik , kamar 9 beri nama titik , kamar 4 beri


(63)

Gambar 4.12. Jaringan dengan 0 = 0.

nama titik , dan kamar 1 adalah titik tujuan beri nama titik . Sehingga diperoleh jaringan sebagai berikut.

Gambar 4.11. Jaringan dengan titik sumber dan titik tujuan .

Jaringan pada Gambar 4.11 merupakan bentuk jaringan dari sistem aliran air pada motel. Selanjutnya, akan dicari aliran maksimumnya dengan algoritma Ford-Fulkerson secara manual, dan algoritma Preflow-Push akan diselesaikan dengan software GIDEN, dengan penyelesaian sebagai berikut. 4.6.1 Penyelesaian dengan Algoritma Ford-Fulkerson

Iterasi ke 1

Langkah 1: dimulai dengan 0= 0, sehingga diperoleh gambar berikut. 150 150 200 100 100 100 150 200 100 200 100 250 200 300 500 s a b c d e f g h t 300;0 150;0

150;0 200;0

100;0 100;0 100;0 150;0 200;0 100;0 200;0 100;0 250;0 200;0 500;0 s a b c d e f h t g


(64)

Langkah 2: Routin pelabelan. 2.1 Label = ( , +, ~)

himpunan titik terlabel �= { }, himpunan titik teramati �= { } 2.2 Pilih titik ,

labeli = ( , +, min ~, 300−0 ) = ( , +, 300) labeli = , +, min ~, 500−0 = ( , +, 500) himpunan titik terlabel �= { , , }

himpunan titik teramati �= { }. 2.3 Pilih titik ,

labeli = , +, min 300, 200−0 = , +, 200 himpunan titik terlabel �= { , , , }

himpunan titik teramati �= { , }. 2.4 Pilih titik ,

labeli = , +, min 500, 200−0 = ( , +, 200) labeli = , +, min 500, 100−0 = ( , +, 100) labeli = , +, min 500, 100−0 = , +, 100 himpunan titik terlabel �= { , , , , , , } himpunan titik teramati �= { , , }.

2.5 Pilih titik ,

labeli = , +, min 200, 200−0 = , +, 200 himpunan titik terlabel �= { , , , , , , , } himpunan titik teramati �= { , , , }.


(65)

2.6 Pilih titik ,

labeli = , +, min 100, 150−0 = , +, 100 himpunan titik terlabel �= { , , , , , , , , } himpunan titik teramati �= { , , , }.

2.7 Pilih titik ,

labeli = , +, min 200, 150−0 = , +, 150 himpunan titik terlabel �= { , , , , , , , , , }

himpunan titik teramati �= { , , , , }. Diperoleh pelabelan titik seperti gambar berikut

Gambar 4.13. Pelabelan titik pada jaringan .

Karena titik terlabel dengan nilai ( ) = 150, maka lanjut ke langkah 3. Langkah 3: prosedur balik.

Titik dilabel dari titik , titik dilabel dari titik , dan titik dilabel dari titik . Sehingga lintasan peningkatan = ( , , , ) dengan = ( ) = 150.

( , +,200)

( , +, ~) ( , +,300) ( , +,200)

( , +,200)

( , +,500) ( , +,100)

( , +,100) ( , +,100)

( , +,150)

300;0 150;0

150;0 200;0

100;0 100;0 100;0 150;0 200;0 100;0 200;0 100;0 250;0 200;0 500;0 s a b c d e f h t g


(66)

200;0 Langkah 4: terapkan Routin peningkatan.

Karena label = ( , +,150), maka nilai aliran pada busur ( , ) ditambah 150, karena label = ( , +,200), maka nilai aliran pada busur ( , ) ditambah 150, karena label = ( , +,300), maka nilai aliran pada busur ( , ) ditambah 150, sedangkan nilai aliran pada busur-busur yang lain tetap. Diperoleh aliran baru dengan 1= 0+ = 0 + 150 = 150, seperti pada gambar berikut.

Gambar 4.14. Jaringan dengan 1 = 150.

Iterasi ke 2

Langkah 1: dimulai dengan 1 = 150, seperti gambar di atas. Langkah 2: Routin pelabelan.

2.1 Label = ( , +, ~)

himpunan titik terlabel �= { }, himpunan titik teramati �= { } 2.2 Pilih titik ,

labeli = ( , +, min ~, 300−150 ) = ( , +, 150) labeli = , +, min ~, 500−0 = ( , +, 500)

300;150 150;150

150;0 200;0

100;0 100;0 100;0 150;0 100;0 200;0 100;0 250;0 200;150 500;0 s a b c d e f h t g


(67)

himpunan titik terlabel �= { , , } himpunan titik teramati �= { }. 2.3 Pilih titik ,

labeli = , +, min 150, 200−150 = , +, 50 himpunan titik terlabel �= { , , , }

himpunan titik teramati �= { , }. 2.4 Pilih titik ,

labeli = , +, min 500, 200−0 = ( , +, 200) labeli = , +, min 500, 100−0 = ( , +, 100) labeli = , +, min 500, 100−0 = , +, 100 himpunan titik terlabel �= { , , , , , , } himpunan titik teramati �= { , , }.

2.5 Pilih titik ,

labeli = , +, min 200, 200−0 = , +, 200 himpunan titik terlabel �= { , , , , , , , } himpunan titik teramati �= { , , , }.

2.6 Pilih titik ,

labeli = , +, min 100, 150−0 = , +, 100 himpunan titik terlabel �= { , , , , , , , , } himpunan titik teramati �= { , , , , }.

2.7 Pilih titik ,

labeli = , +, min 500, 200−0 = , +, 200 himpunan titik terlabel �= { , , , , , , , , , }


(68)

himpunan titik teramati �= { , , , , }. Diperoleh pelabelan titik seperti gambar berikut.

Gambar 4.15. Pelabelan titik pada jaringan .

Karena titik t terlabel dengan nilai ( ) = 200, maka lanjut ke langkah 3. Langkah 3: prosedur balik.

Titik dilabel dari titik , dan titik dilabel dari titik . Sehingga lintasan peningkatan = ( , , ) dengan = ( ) = 200.

Langkah 4: terapkan Routin peningkatan.

Karena label = ( , +,200), maka nilai aliran pada busur ( , ) ditambah 200, karena label = ( , +,500), maka nilai aliran pada busur ( , ) ditambah 200, sedangkan nilai aliran pada busur-busur yang lain tetap. Diperoleh aliran baru dengan 2= 1+ = 150 + 200 = 350, seperti pada gambar berikut.

( , +,100)

( , +, ~) ( , +,150)

300;150

( , +,50)

( , +,500) ( , +,100)

( , +,200) ( , +,200)

( , +,100) ( , +,200)

150;150

150;0 200;0

100;0 100;0 100;0 150;0 200;0 100;0 200;0 100;0 250;0 200;150 500;0 s a b c d e f h t g


(69)

Gambar 4.16. Jaringan dengan 2 = 350. Iterasi ke 3

Langkah 1: dimulai dengan 2 = 350, seperti gambar di atas. Langkah 2: Routin pelabelan.

2.1 Label = ( , +, ~)

himpunan titik terlabel �= { }, himpunan titik teramati �= { } 2.2 Pilih titik ,

labeli = ( , +, min ~, 300−150 ) = ( , +, 150) labeli = , +, min ~, 500−200 = ( , +, 300) himpunan titik terlabel �= { , , }

himpunan titik teramati �= { }. 2.3 Pilih titik ,

labeli = , +, min 150, 200−150 = , +, 50 himpunan titik terlabel �= { , , , }

himpunan titik teramati �= { , }.

300;150 150;150

150;0 200;200

100;0 100;0 100;0 150;0 200;0 100;0 200;0 100;0 250;0 200;150 500;200 s a b c d e f h t g


(70)

2.4 Pilih titik ,

labeli = , +, min 300, 200−0 = ( , +, 200) labeli = , +, min 300, 100−0 = ( , +, 100) labeli = , +, min 300, 100−0 = , +, 100 himpunan titik terlabel �= { , , , , , , } himpunan titik teramati �= { , , }.

2.5 Pilih titik ,

labeli = , +, min 200, 200−0 = , +, 200 himpunan titik terlabel �= { , , , , , , , } himpunan titik teramati �= { , , , }.

2.6 Pilih titik ,

labeli = , +, min 100, 150−0 = , +, 100 himpunan titik terlabel �= { , , , , , , , , } himpunan titik teramati �= { , , , , }.

2.7 Pilih titik ,

labeli = , +, min 200, 100−0 = , +, 100 himpunan titik terlabel �= { , , , , , , , , , } himpunan titik teramati �= { , , , , , }.


(71)

Gambar 4.17. Pelabelan titik pada jaringan .

Karena titik terlabel dengan nilai ( ) = 100, maka lanjut ke langkah 3. Langkah 3: prosedur balik.

Titik dilabel dari titik , titik dilabel dari titik , titik dilabel dari titik , dan titik dilabel dari titik . Sehingga lintasan peningkatan = ( , , , , ) dengan = ( ) = 100.

Langkah 4: terapkan Routin peningkatan.

Karena label = ( , +, 100), maka nilai aliran pada busur ( , ) ditambah 100, karena label = ( , +,200), maka nilai aliran pada busur ( , ) ditambah 100, karena label = ( , +,200), maka nilai aliran pada busur ( , ) ditambah 100, karena label = ( , +,200), maka nilai aliran pada busur ( , ) ditambah 100, sedangkan nilai aliran pada busur-busur yang lain tetap. Diperoleh aliran baru dengan 3= 2+ = 350 + 100 = 450, seperti gambar berikut.

( , +, ~) ( , +,150)

( , +,300) ( , +,50)

( , +,100)

( , +,200) ( , +,200)

( , +,100) ( , +,100)

( , +,100)

300;150 150;150

150;0 200;200

100;0

100;0 100;0

150;0 200;0 100;0 200;0 100;0 250;0 200;150 500;200 s a b c d e f h t g


(72)

Gambar 4.18. Jaringan dengan 3 = 450. Iterasi ke 4

Langkah 1: dimulai dengan 3= 450, seperti gambar di atas. Langkah 2: Routin pelabelan.

2.1 Label = ( , +, ~)

himpunan titik terlabel �= { }, himpunan titik teramati �= { } 2.2 Pilih titik ,

labeli = ( , +, min ~, 300−150 ) = ( , +, 150) labeli = , +, min ~, 500−300 = ( , +, 200) himpunan titik terlabel �= { , , }

himpunan titik teramati �= { }. 2.3 Pilih titik ,

labeli = , +, min 150, 200−150 = , +, 50 himpunan titik terlabel �= { , , , }

himpunan titik teramati �= { , }.

300;150 150;150

150;0 200;200

100;100 100;0 100;0 150;0 200;100 100;0 200;100 100;0 250;0 200;150 500;300 s a b c d e f h t g


(73)

2.4 Pilih titik ,

labeli = , +, min 200, 200−100 = ( , +, 100) labeli = , +, min 200, 100−0 = ( , +, 100) labeli = , +, min 200, 100−0 = , +, 100 himpunan titik terlabel �= { , , , , , , } himpunan titik teramati �= { , , }.

2.5 Pilih titik ,

labeli = , +, min 100, 200−0 = , +, 100 himpunan titik terlabel �= { , , , , , , , } himpunan titik teramati �= { , , , }.

2.6 Pilih titik ,

labeli = , +, min 100, 150−0 = , +, 100 himpunan titik terlabel �= { , , , , , , , , } himpunan titik teramati �= { , , , , }.

2.7 Pilih titik ,

labeli = , +, min 100, 150−0 = , +, 100 himpunan titik terlabel �= { , , , , , , , , , } himpunan titik teramati �= { , , , , , }.


(74)

Gambar 4.19. Pelabelan titik pada jaringan .

Karena titik terlabel dengan nilai ( ) = 100, maka lanjut ke langkah 3. Langkah 3: prosedur balik.

Titik dilabel dari titik , titik dilabel dari titik , titik dilabel dari titik , dan titik dilabel dari titik . Sehingga lintasan peningkatan = ( , , , , ) dengan = ( ) = 100.

Langkah 4: terapkan Routin peningkatan.

Karena label = ( , +, 100), maka nilai aliran pada busur ( , ) ditambah 100, karena label = ( , +, 100), maka nilai aliran pada busur ( , ) ditambah 100, karena label = ( , +, 100), maka nilai aliran pada busur ( , ) ditambah 100, karena label = ( , +,200), maka nilai aliran pada busur ( , ) ditambah 100, sedangkan nilai aliran pada busur-busur yang lain tetap. Diperoleh aliran baru dengan 4= 3+ = 450 + 100 = 550, seperti gambar berikut.

( , +,100)

( , +, ~) ( , +,200)

( , +,150)

( , +,100) ( , +,100)

( , +,50) ( , +,100)

( , +,100) ( , +,100)

300;150 150;150

150;0 200;200

100;100 100;0 100;0 150;0 200;100 100;0 200;100 100;0 250;0 200;150 500;300 s a b c d e f h t g


(75)

Gambar 4.20. Jaringan dengan 4 = 550. Iterasi ke 5

Langkah 1: dimulai dengan 4= 550, seperti gambar di atas. Langkah 2: Routin pelabelan.

2.1 Label = ( , +, ~)

himpunan titik terlabel �= { }, himpunan titik teramati �= { } 2.2 Pilih titik ,

labeli = ( , +, min ~, 300−150 ) = ( , +, 150) labeli = , +, min ~, 500−400 = ( , +, 100) himpunan titik terlabel �= { , , }

himpunan titik teramati �= { }. 2.3 Pilih titik ,

labeli = , +, min 150, 200−150 = , +, 50 himpunan titik terlabel �= { , , , }

himpunan titik teramati �= { , }.

300;150 150;150

150;100 200;200

100;100 100;0 100;0 150;100 200;100 100;0 200;100 100;100 250;0 200;150 500;400 s a b c d e f h t g


(76)

2.4 Pilih titik ,

labeli = , +, min 100, 200−100 = ( , +, 100) labeli = , +, min 100, 100−0 = , +, 100 himpunan titik terlabel �= { , , , , , }

himpunan titik teramati �= { , , }. 2.5 Pilih titik ,

labeli = , +, min 100, 100−0 = , +, 100 labeli = , +, min 100, 200−100 = , +, 100 himpunan titik terlabel �= { , , , , , , , } himpunan titik teramati �= { , , , }.

2.6 Pilih titik ,

labeli = , +, min 100, 100−0 = , +, 100 himpunan titik terlabel �= { , , , , , , , , } himpunan titik teramati �= { , , , , }.

2.7 Pilih titik ,

labeli = , +, min 100, 150−100 = , +, 50 himpunan titik terlabel �= { , , , , , , , , , } himpunan titik teramati �= { , , , , , }


(1)

122

Ketika semua titik sudah terlabel dengan label tertinggi, lakukan operasi push dan relabel balik, dari titik ke titik , dengan pelabelan jarak sebagai berikut.

Iterasi 16

Pilih titik aktif , karena = 50, dan = 3.

Busur ( , ) memenuhi syarat = + 1, maka busur balik ( , ) admissible, maka lakukan push: = min , ( , ) = min 50,150 = 50

(1) turunkan aliran ( , ) sebesar jika ( , ) busur balik: , = 150−50 = 100

(2) turunkan ( ) sebesar dan tingkatkan ( ) sebesar : = 50−50 = 0


(2)

123

Iterasi 17

Pilih titik aktif , karena = 100, dan = 3.

Busur ( , ) memenuhi syarat = + 1, maka busur balik ( , ) admissible, maka lakukan push: = min , ( , ) = min 100,100 = 100

(1) turunkan aliran ( , ) sebesar jika ( , ) busur balik: , = 100−100 = 0

(2) turunkan ( ) sebesar dan tingkatkan ( ) sebesar ä: = 100−100 = 0


(3)

124

Iterasi 18

Pilih titik aktif , karena = 50, dan = 2.

Busur ( , ) memenuhi syarat = + 1, maka busur balik ( , ) admissible, maka lakukan push: = min , ( , ) = min 50,200 = 50

(1) turunkan aliran ( , ) sebesar jika ( , ) busur balik: , = 200−50 = 150

(2) turunkan ( ) sebesar dan tingkatkan ( ) sebesar : = 50−50 = 0


(4)

125

Iterasi 19

Pilih titik aktif , karena = 100, dan = 2.

Busur ( , ) memenuhi syarat = + 1, maka busur balik ( , ) admissible, maka lakukan push: = min , ( , ) = min 100,100 = 100

(1) turunkan aliran ( , ) sebesar jika ( , ) busur balik: , = 100−100 = 0

(2) turunkan ( ) sebesar dan tingkatkan ( ) sebesar : = 100−100 = 0


(5)

126

Iterasi 20

Pilih titik aktif , karena = 200, dan = 1.

Busur ( , ) memenuhi syarat = + 1, maka busur balik ( , ) admissible, maka lakukan push: = min , ( , ) = min 200,500 = 200

(1) turunkan aliran ( , ) sebesar jika ( , ) busur balik: , = 500−200 = 300

(2) turunkan ( ) sebesar dan tingkatkan ( ) sebesar : = 200−200 = 0


(6)

127

Karena sudah tidak ada titik yang aktif, maka algoritma ini berhenti.