• Tidak ada hasil yang ditemukan

PENYELESAIAN MASALAH ALIRAN MAKSIMUM MENGGUNAKAN EDMONS KARP ALGORITHM

N/A
N/A
Protected

Academic year: 2021

Membagikan "PENYELESAIAN MASALAH ALIRAN MAKSIMUM MENGGUNAKAN EDMONS KARP ALGORITHM"

Copied!
7
0
0

Teks penuh

(1)

1 PENYELESAIAN MASALAH ALIRAN MAKSIMUM MENGGUNAKAN

EDMONS KARP ALGORITHM

Fathimatuzzahro, Sapti Wahyuningsih, dan Darmawan Satyananda Universitas Negeri Malang

E-mail: fathimatuzzahro90@gmail.com

ABSTRAK: Tujuan penulisan ini mendeskripsikan, menerapkan, dan menganalisis algoritma Edmons Karp pada maximum flow. Metode yang digunakan: membandingkan algoritma Edmons Karp dengan algoritma Ford Fulkerson dalam kasus. Dari beberapa contoh, dapat disimpulkan bahwa cara dalam menambahkan aliran ke dalam lintasan penambah dan solusi yang diperoleh hasilnya sama, sedangkan perbedaan algoritma Ford Fulkerson dan algoritma Edmons Karp hanya terletak pada langkah ke-3, yaitu dalam pemilihan lintasan penambah. Pada algoritma Edmons Karp, digunakan algoritma BFS (Breadth First

Search) untuk pemilihan lintasan penambah terpendek, namun pada algoritma

Ford Fulkerson tidak menggunakan standar khusus dalam pemilihan lintasan penambahnya. Implementasi program dari algoritma Edmons Karp yang telah dibuat juga sangat membantu dalam menyelesaikan permasalahan maximum flow

khususnya dengan banyak titik menggunakan program delphi. Kata Kunci: Aliran Maksimum, Edmons Karp Algorithm,

ABSTRACT: The purpose of this paper is described, applied, and analyzed the Edmons Karp algorithm for maximum flow. A method that used of this study is compared Edmons Karp algorithm with Ford Fulkerson algorithm into a number of case. From the examples it can be concluded that the way in adding flow to shortest augmenting path and obtained the same result, while the Ford Fulkerson algorithm differences with Edmons Karp algorithm lies only in step 3, which is in the augmenting path selection. At Edmons Karp algorithm, BFS algorithm is used for the selection of the shortest augmenting path, but the Ford Fulkerson algorithm does not use a specific standard in the selection of the augmenting path. The implementation of the algorithm in computer is also helping in solving maximum problem, especially for large number of nodes with delphi program.

Key Words: Maximum flow, Edmons Karpalgorithm.

Dalam kehidupan sehari-hari, teori graph, khususnya maximum flow sangat membatu menyelesaikan suatu permasalahan. Banyak persoalan yang dapat

dimodelkan ke dalam bentuk maximum flow problem antara lain pendistribusian barang dari suatu perusahaan ke suatu kota.

Terdapat beberapa algoritma yang dapat digunakan pada penyelesaian maximum flow, salah satu algoritma baru yang masih jarang digunakan dalam menyelesaikan maximum flow problem yaitu algoritma Edmons Karp. Algoritma ini merupakan penyempurnaan dari algoritma Ford Fulkerson, yakni pembatasan dalam pencarian lintasan residualnya. Dalam algoritma Edmons Karp, lintasan penambah yang dipilih merupakan lintasan penambah terpendek. Untuk memilih lintasan penambah terpendek yang dimaksud, digunakan algoritma BFS (Breadth First Search).

Banyak penelitian yang telah dilakukan dalam penyelesaian maximum flow, salah satunya adalah skripsi dengan judul “Eksplorasi Algoritma Edmons Karp dalam Penyelesaian Maximum Flow Problem” yang dilakukan oleh Ardanu

(2)

2 Pratama Putra pada tahun 2010 (Putra, Ardanu Pratama, 2010). Selain itu, dalam jurnal berjudul “Edmons-Karp Algorithm” yang ditulis oleh Tamal K Dey pada tahun 2009 dituliskan bahwa terdapat suatu algoritma yang merupakan

pembatasan dari algoritma Ford Fulkerson (Dey, Tamal K.,2009). Algoritma yang dimaksud yakni algoritma Edmons Karp, dalam hal ini lintasan penambah yang dipilih merupakan lintasan penambah terpendek, yaitu lintasan dengan jumlah busur minimum. Untuk memilih lintasan penambah terpendek yang dimaksud, digunakan algoritma Breadth First Search (BFS). Sehingga hanya diperlukan sedikit iterasi dalam percarian maximum flow dalam suatu permasalahan yang ada dibandingkan dengan algoritma Ford Fulkerson.

Disamping itu, terdapat alat bantu yang umum dan dapat digunakan dalam menyelesaikan masalah maksimum flow yakni Giden dan Grin, akan tetapi kedua alat bantu tersebut tidak menggunakan algoritma Edmons Karp sebagai salah satu algoritma pendukung yang dapat menyelesaikan permasalahan maximum flow.

Dari uraian di atas, artikel ini selain mengulas algoritma Edmons Karp dilengkapi implementasi dari algoritma Edmons Karp dalam bentuk program, sehingga dapat dijadikan alternatif dalam menyelesaikan maximum flow problem pada network dengan banyak titik.

HASIL YANG DIHARAPKAN

Berdasarkan latar belakang, penulisan ini mempunyai tujuan yaitu untuk (1) Mendeskripsikan langkah-langkah algoritma Edmons Karp dalam

menyelesaikan maximum flow problem yang memiliki perbedaan dalam pencarian lintasan penambah dalam network dibandingkan dengan algoritma Ford Fulkerson (2) Menganalisa hasil dari penerapan algoritma Edmons Karp sehingga diperoleh kesimpulan dari beberapa contoh bahwa algoritma Edmons Karp lebih efisien dibandingkan dengan algoritma Ford Fulkerson (3) Mengimplementasikan program untuk algoritma Edmons Karp dengan menggunakan bahasa program delphi.

PEMBAHASAN

Algoritma Edmons Karp pertama kali diperkenalkan oleh seorang ilmuan Rusia, Dinic, pada tahun 1970, dan dipopulerkan oleh Jack Edmonds dan Richard Karp pada tahun 1972. (Dey, Tamal K., 1993).

Adapun untuk langkah-langkah dari algoritma Edmons Karp sebagai berikut:

Input: suatu network N

1. Tentukan residual network dari N.

2. Inisialisasi flow untuk setiap busur ij pada N sebesar nol (Fij = 0)

3. Identifikasikan suatu lintasan penambah pada residual network dengan menggunakan algoritma BFS (Breadth First Search). 4. Jika telah diperoleh suatu lintasan penambah, maka tentukan

kapasitas residu lintasan penambah tersebut yang dinotasikan dengan .

(3)

3 5. Tambahkan flow sebesar ke setiap busur pada lintasan

penambah tersebut.

Jika masih ada lintasan penambah yang lain, ulangi langkah 3 sampai dengan langkah 5. Jika tidak ada lintasan penambah yang lain, hitung aliran pada setiap busur, yaitu:

Fij = Cji dengan:

Fij = flow busur ij pada network asli

Cji= kapasitas busur ij pada residual network

Output: flow (F) pada N merupakan jumlah semua flow yang meninggalkan sumber, yaitu 

i si

F

F .

Sedangkan untuk langkah-langkah dari algoritma BFS (Breadth First Search) sebagai berikut:

Input: suatu residual network R dengan titik sumber s, titik tujuan t, dan himpunan semua titik V(R).

1. Inisialisasi himpunan Vs = {s}. 2. Labeli titik s dengan nol (ℓ(s)=0). 3. Inisialisasi label penghitung i = 1.

4. Selama Vs tidak memuat t, lakukan langkah berikut :

Jika terdapat busur yang titik awalnya termuat di Vs dan titik akhirnya termuat di V(R) - Vs, untuk selanjutnya disebut usable arc, sehingga

misal e suatu usable arc dengan titik awal v yang memiliki label terkecil dan misalkan w adalah titik akhir dari e yang belum memiliki label, maka v sebagai backpoint dari w,

ℓ(w) = i Vs = Vs {w} i = i+1

Jika tidak terdapat usable arc, maka tidak ada lagi lintasan penambah di R.

Susun ulang lintasan penambah Q dengan menelusuri backpoint dari titik t.

Output: lintasan penambah Q

Adapun langkah-langkah algoritma Ford Fulkerson (sebagai algoritma pembanding) untuk menyelesaikan masalah aliran maksimum pada dasarnya sama dengan langkah-langkah algoritma Edmons Karp. Perbedaan yang terdapat dari kedua algoritma tersebut adalah dalam langkah ke-3 yaitu pencarian lintasana penambah dalam network. Pada algoritma Edmons Karp, digunakan algoritma BFS untuk pemilihan lintasan penambah terpendek, namun pada algoritma Ford Fulkerson tidak menggunakan standar khusus dalam pemilihan lintasan

penambahnya.

Berikut langkah-langkah algoritma Ford Fulkerson adalah sebagai berikut (Dey, Tamal K., 2009):

input: suatu network N

(4)

4 2. Inisialisasi flow Untuk setiap busur ij pada N sebesar nol (Fij =

0)

3. Identifikasikan suatu lintasan penambah pada residual network. 4. Jika telah diperoleh suatu lintasan penambah, maka tentukan

kapasitas residu lintasan penambah tersebut yang dinotasikan dengan .

5. Tambahkan flow sebesar  ke setiap busur pada lintasan penambah tersebut.

Jika masih ada lintasan penambah yang lain, ulangi langkah 3 sampai dengan langkah 5. Jika tidak ada lintasan penambah yang lain, hitung aliran pada setiap busur, yaitu:

Fij = Cji dengan:

Fij = flow busur ij pada network asli

Cji= kapasitas busur ij pada residual network

Output: flow (F) pada N merupakan jumlah semua flow yang meninggalkan sumber, yaitu 

i si F

F .

Analisa hasil yang didapatkan oleh Edmons Karp algorithm dengan algoritma Ford Fulkerson sebagai algoritma pembandingnya dari 3 contoh dengan menggunakan 5, 6, dan 17 titik, dapat disimpulkan beberapa perbedaan dan persamaan antara algoritma Edmons Karp dengan algoritma Ford Fulkerson. Dari contoh-contoh tersebut, dapat dilihat bahwa cara dalam menambahkan aliran ke dalam lintasan penambah serta solusi yang diperoleh hasilnya sama. Namun, cara pemilihan lintasan penambah pada kedua algoritma tersebut berbeda.

Dari uraian tentang perbedaan dan persamaan dari algoritma Edmons Karp dan algoritma Ford Fulkerson, dapat disimpulkan bahwa algoritma Edmons Karp lebih efisien. Hal ini disebabkan karena pada algoritma Edmons Karp dalam pemilihan lintasan digunakan algoritma BFS, sedangkan dalam algoritma Ford Fulkerson tidak menggunakan standar khusus dalam pemilihan lintasan

penambahnya. Oleh karena itu, algoritma Edmons Karp akan sangat membantu dalam menyelesaikan permasalahan maximum flow apabila diterapkan dalam suatu network yang memiliki kapasitas besar dan network yang memiliki banyak titik.

Rancangan dan implementasi program dari algoritma Edmons Karp menggunakan bahasa pemrograman Delphi. Dalam rancangan program ini terdiri dari beberapa bagian yaitu data, proses dan tampilan program. Data yang akan digunakan pada program ini terbagi menjadi dua macam, yaitu data masukan (input) dan data hasil (output). Data masukan (input) yang digunakan pada program ini berupa titik (vertex), kapasitas busur (edge capacity), titik sumber (source) dan titik tujuan (sink). Data masukan titik (vertex) dilakukan dengan menggambar pada bidang yang tersedia. Setiap penambahan satu titik, jumlah baris dan kolom pada bidang input kapasitas akan bertambah masing-masing sebanyak satu. Setiap data masukan kapasitas busur akan menghubungkan titik-titik yang bersesuaian antara baris dan kolom dengan sebuah busur yang berarah, ditunjukkan dengan adanya panah dari sisi yang menghubungkan antar titik tersebut. Data masukan titik sumber dan titik tujuan masing-masing menentukan

(5)

5 titik-titik yang dijadikan sebagai titik sumber dan titik tujuan selama proses berlangsung.

Data hasil (output) dari implementasi ini berupa lintasan penambah terpendek terpilih, delta, flow, serta maximum flow. Lintasan penambah terpilih merupakan suatu lintasan penambah terpendek yaitu lintasan dengan jumlah busur minimum. Delta merupakan hasil perhitungan dari kapasitas terkecil pada suatu lintasan penambah terpendek terpilih. Flow yang dihasilkan terbagi menjadi dua macam yaitu flow yang didapatkan pada setiap lintasan penambah dan flow maksimum yang merupakan jumlah seluruh flow pada network. Maximum flow merupakan hasil akhir dari perhitungan yaitu jumlah semua flow yang

meninggalkan sumber.

Terdapat beberapa proses yang berlangsung pada saat menjalankan program. Proses tersebut meliputi proses pencarian lintasan penambah terpendek menggunakan algoritma BFS, penghitungan , proses pencarian flow sekaligus pencarian maximum flow. Sedangkan untuk proses pencarian lintasan penambah menerapkan aturan lintasan penambah terpendek yaitu pemilihan lintasan dengan berdasarkan jumlah busur minimum. Proses penghitungan dilakukan dengan menentukan kapasitas terkecil dari lintasan penambah terpendek terpilih. Proses pencarian flow dilakukan berdasarkan lintasan penambah yang terpilih. Flow pada lintasan penambah terpendek terpilih merupakan kapasitas terkecil dari lintasan tersebut. Dan proses yang terakhir yakni pencarian maximum flow dengan menambahkan semua flow yang meninggalkan sumber.

PENUTUP

Beberapa kesimpulan yang dapat diambil dari permasalahan dalam penyelesaian masalah nilai aliran maksimum dengan menggunakan algoritma Edmons Karp adalah sebagai berikut :

1. Langkah-langkah Edmons Karp algorithm dengan menggunakan algoritma BFS (Breadth First Search) untuk menyelesaikan masalah aliran maksimum dapat dipahami sebagai berikut. Algoritma edmons karp ini dimulai dengan inisialisasi semua aliran dengan nol. Lalu dilanjutkan dengan pencarian lintasan penambah terpendek dengan menggunakan algoritma BFS (Breadth First Search). Setelah diperoleh suatu lintasan penambah terpendek, ditentukan kapasitas residu dari lintasan penambah terpendek tersebut yang dinotasikan dengan . Selanjutnya pada setiap busur dari lintasan penambah terpendek tersebut ditambahkan flow sebesar . Namun jika masih terdapat lintasan penambah yang lain, maka ulangi langkah-langkah tersebut. Namun, jika tidak ada lintasan penambah yang lain, maka algoritma berhenti dan lakukan penghitungan aliran pada setiap busur.

2. Analisa hasil yang didapatkan oleh Edmons Karp algorithm dengan algoritma Ford Fulkerson sebagai algoritma pembandingnya dari 3 contoh dengan menggunakan 5, 6, dan 17 titik yang telah dibahas dalam Bab III adalah bahwa cara dalam menambahkan aliran ke dalam lintasan penambah, serta hasil yang diperoleh sama. Perbedaan algoritma Edmons Karp dengan algoritma Ford Fulkerson terlihat hanya pada langkah ke-3 yaitu dalam pemilihan lintasan penambah. Pada algoritma Edmons Karp, digunakan algoritma BFS untuk menentukan lintasan penambah terpendek, namun

(6)

6 pada algoritma Ford Fulkerson tidak menggunakan standar khusus dalam pemilihan lintasan penambahnya sehingga dapat dikatakan bahwa algoritma Edmons Karp sangat membantu dalam menyelesaikan permasalahan maximum flow.

3. Implementasi program dari algoritma Edmons Karp ini adalah program Delphi dengan inputnya adalah input titik, input kapasitas, input titik sumber (source), dan input titik tujuan (sink). Hasil yang diperoleh berupa residual network beserta flow maksimum dalam network tersebut. Program ini menggunakan konsep array yang digunakan untuk menyimpan sejumlah nilai yang homogen (bertipe sama). Berdasarkan uji coba yang telah dilakukan pada beberapa network dengan menggunakan 5, 6, 17, dan 41 titik, program yang dibuat sangat membantu dalam menyelesaikan permasalahan maximum flow khususnya dengan banyak titik.

Beberapa saran sebagai masukan untuk perkembangan selanjutnya yang dapat disampaikan, antara lain:

1. Algoritma Edmons Karp merupakan salah satu algoritma untuk menyelesaikan maximum flow problem. Berdasarkan analisis di atas, dapat disimpulkan bahwa algoritma ini menjamin ditemukannya solusi (jika memang ada) dan solusi yang ditemukan pasti yang paling baik karena dalam pencarian lintasan penambah terpendeknya menggunakan algoritma BFS (Breadth First Search). Oleh karena itu algoritma Edmons Karp dapat menjadi alternatif dalam pencarian solusi untuk permasalahan maximum flow.

2. Implementasi program untuk algoritma Edmons Karp dapat membantu mempercepat pencarian solusi sehingga dapat digunakan sebagai alat bantu alternatif untuk menyelesaikan permasalahan maximum flow. Walau masih terdapat kekurangan dalam program tersebut seperti yang dijelaskan pada Bab IV yaitu apabila lintasan penambah terpendek berganti, maka warna busur akan menimpa warna busur sebelumnya. Sehingga apabila hanya dengan melihat hasil akhir saja, maka tidak dapat diketahui apakah sisi yang telah berganti warna tersebut sebelumnya sudah terpilih atau belum.

DAFTAR PUSTAKA

Dey, Tamal K. 2009. Edmons-Karp Algorithm (Advanced Algorithms (CSE 794)), (online), (http://www.cse.ohio-state.edu/~tamaldey/course/794/ek-algo.pdf, diakses 25 September 2012).

Putra, Ardanu Pratama. 2010. Eksplorasi Kerja Algoritma Edmons Karp dalam Menyelesaikan Maximum Flow Problem. Skripsi. Malang: Universitas Negeri Malang.

(7)

7 Malang, Juli 2013

Penulis

Pembimbing 1

Dra. Sapti Wahyuningsih, M.Si NIP 19621211 198812 2 001 Pembimbing 2 Darmawan Satyananda, S.T, M.T NIP 19730724 199903 1 001 Mahasiswa Fathimatuzzahro NIM 908312409118

Referensi

Dokumen terkait