Anda di halaman 1dari 5

Algoritma Branch and Bound untuk Memecahkan Job Assignment Problem

Anisa Septiani – 1301164291


Fakry Adi Permana – 1301164034
Malik Anhar – 1301164181

Program Studi Teknik Informatika, Fakultas Informatika


Universitas Telkom
Jl. Telekomunikasi Dayeuhkolot, Bandung 40257
e-mail: anisaseptiani@student.telkomuniversity.ac.id
fakrypermana@student.telkomuniversity.ac.id
malikanhar@student.telkomuniversity.ac.id

ABSTRAK orang Q jika mengerjakan pekerjaan 2 membutuhkan biaya


(cost) sebesar c(Q, 2), dan seterusnya. Sehingga
Job Assignment Problem adalah sebuah permasalahan terbentuklah sebuah pemetaan pekerjaan untuk setiap orang
yang kerap ditemui dalam lingkup keprofesian, pada setiap pekerjaannya masing-masing beserta biayanya.
permasalahan ini pada dasarnya mengacu pada Misalkan terdapat lima orang dengan lima pekerjaan, maka
penempatan individu dalam melaksanakan suatu akan menghasilkan sebanyak 4! Atau 24 kemungkinan.
pekerjaan. Dengan demikian, pekerjaan tersebut dapat Dari hasil pemetaan tersebut akan terdapat biaya yang
berjalan dengan baik dan biaya yang dikeluarkan paling minimum. Maka dari itu diperlukan suatu algoritma
untuk melakukan pekerjaan tersebut dapat yang dapat menyelesaikan permasalahan kompleks seperti
diminimalkan. Dalam pelaksanaannya, setiap Job Assignment Problem.
pekerjaan tentunya memiliki tingkat kesulitan yang
berbeda, begitu pula setiap orang memiliki kemampuan
berbeda dalam mengerjakan suatu pekerjaan, sehingga 1.2. Algoritma Branch and Bound
biaya yang dikeluarkan untuk suatu pekerjaan akan
berbeda pula. Dalam hal ini, tentunya dibutuhkan Algoritma Branch and Bound adalah metode
suatu cara atau metode sehingga penempatan seseorang algoritma umum untuk mencari solusi optimal dari dari
untuk suatu pekerjaan dapat meminimalkan biaya berbagai permasalahan optimasi, terutama untuk optimasi
yang dikeluarkan. Algoritma Branch and Bound diskrit dan kombinatorial. Algoritma ini secara khusus
merupakan metode pencarian dalam ruang solusi mempelajari bagaimana cara untuk memperkecil search
secara sistematis. Dalam paper ini akan dijelaskan tree menjadi sekecil mungkin. Pohon atau search tree
penerapan algoritma Branch and Bound dalam digunakan sebagai tempat ruang solusi dari pohon ruang
memecahkan Job Assignment Problem. status tersebut. Pada algoritma ini pencarian ke simpul
solusi bisa menjadi lebih cepat dengan cara memilih simpul
Kata kunci: Job assignment problem, branch and bound, berdasarkan nilai cost. Setiap simpul dapat diasosiasikan
biaya minimum. dengan sebuah cost yang menyatakan nilai dari sebuah
bound. Nilai bound dari setiap simpul adalah berupa
taksiran. Secara umum, untuk menghitung taksiran nilai
tersebut digunakan fungsi heuristik sebagai berikut:
1. PENDAHULUAN ĉ(i) = ƒ(i) + ĝ(i)
yang dapat diartikan sebagai berikut,
1.1. Job Assignment Problem ĉ(i) = cost untuk simpul i
ƒ(i) = cost untuk simpul i dari akar
Job Assignment Problem adalah sebuah ĝ(i) = cost untuk simpul tujuan dari
permasalahan mengenai penempatan individu (objek) simpul akar i (taksiran)
dalam melaksanakan suatu tugas (pekerjaan) dimana tepat
satu orang bersesuaian dengan tepat satu pekerjaan sesuai Nilai ĉ digunakan untuk mengurutkan pencarian,
dengan tingkat kemampuan orang tersebut. Pemberian lalu simpul yang mempunyai nilai ĉ minimum (Simpul-
tugas untuk setiap individu menghasilkan biaya yang E) lah yang dipilih berikutnya untuk diekspansi.
berbeda-beda. Sebagai contoh, orang P jika mengerjakan Pemilihan simpul-E ini disebut strategi least cost search
pekerjaan 1 membutuhkan biaya (cost) sebesar c(P, 1), atau pencarian berdasarkan dari biaya yang terkecil.

MAKALAH CSH2G3 DESAIN DAN ANALISIS ALGORITMA TAHUN 2017


Prinsip dari algoritma branch and bound adalah sebagai
berikut:
1. Simpul akar diinputkan ke dalam antrian A dan jika
simpul akar tersebut merupakan simpul solusi maka
pencarian dihentikan karena solusi telah ditemukan.
2. Jika antrian A kosong maka tidak ada solusi.
3. Pilih simpul i yang memiliki nilai ĉ(i) paling minimum
ketika antrian A tidak kosong. Pilihlah satu secara acak
ketika ada beberapa simpul i yang memenuhi.
4. Bangkitkan seluruh anak simpul i jika simpul tersebut Gambar 1 Contoh graf pohon
bukan merupakan solusi, sedangkan jika simpul i
merupakan solusi maka pencarian dapat dihentikan.
Namun, jika simpul i tidak memiliki anak maka proses 2. METODE
dilanjutkan dengan kembali ke langkah 2.
5. Hitung ĉ(k) yang merupakan nilai dari setiap anak k Sebagai contoh, akan diselesaikan job assignment
dari simpul i, lalu anak-anak dari simpul i tersebut problem dengan n=4, sehingga terdapat n buah orang dan n
dimasukkan ke dalam antrian A. buah pekerjaan. Misalkan terdapat orang A, B, C, dan D
6. Proses kembali ke langkah 2. serta pekerjaan 1, 2, 3, dan 4 dengan masing-masing
biayanya seperti yang terdapat pada matriks berikut.

1.3. Graf Pohon 1 2 3 4


A 9 2 7 8
B 6 4 3 7
Graf pohon merupakan graf terhubung yang tidak [ ]
C 5 8 1 8
mempunyai sikel. Jika sebuah graf terdiri dari beberapa
D 7 6 9 4
komponen dan tiap komponennya adalah pohon, maka graf
tersebut disebut hutan (forest). Setiap kemungkinan solusi
Akan dicari lower bond dari matriks tersebut dengan cara
yang ada dianggap sebagai simup dan akar dari pohonnya.
menambahkan 4 nilai terkecil dari matriks. Sehingga lower
Dengan menggunakan graf pohon pencarian solusi menjadi
bond pada matriks ini adalah:
lebih mudah, maka dari itu banyak algoritma yang
ĉ(root) = 1+2+3+4 = 10
menggunakan pohon sebagai ruang solusi. Misalkan dalam
sehingga, masalah ini setidaknya akan memiliki nilai batas
memecahkan job assignment problem dengan jumlah orang
yaitu 10. Selanjutnya, akan dicari nilai cost minimum dari
adalah 2 orang, maka graf pohon dapat dibentuk seperti
orang ke-i dengan pekerjaan ke-j dengan menggunakan
pada gambar 1.
rumus sebagai berikut:
ĉ(i) = f(j) + ĝ(i)
1.4. Algoritma Brute force dengan,
ĉ(i) = biaya minimum untuk simpul i,j
Brute force adalah jenis algoritma yang mencoba f(i) = biaya simpul i,j
semua kemungkinan untuk memecahkan masalah. Dalam ĝ(i) = jumlah biaya minimum untuk mencapai
beberapa kasus, algoritma brute force sangat sederhana dan simpul tujuan dari simpul akar i,j
bergantung pada kekuatan komputasi untuk mencapai hasil.
Contoh umum dari algoritma brute force adalah ancaman
keamanan yang mencoba menebak kata sandi 2.1. Hitung biaya terkecil dari orang A
menggunakan kata sandi umum yang dikenal. Algoritma
semacam itu mungkin juga mencoba kata-kata kamus atau Orang A memiliki 4 kemungkinan dalam memilih
bahkan setiap kombinasi string ASCII dengan panjang pekerjaan, yaitu pekerjaan 1, 2, 3, dan 4. Matriks untuk
tertentu. orang A jika memilih pekerjaan 1 adalah sebagai berikut:
Algoritma brute force juga memiliki aplikasi non-
keamanan. Misalnya, teknik yang dikenal sebagai data 1 2 3 4
dredging adalah metode brute force untuk mencari pola A − − − −
data yang signifikan secara statistik. B − 4 3 7
[− 8 1 8]
C
D − 6 9 4

pada matriks tersebut, baris A dengan kolom 1 diabaikan


karena sudah dipasangkan antara pekerjaan 1 dengan orang

JURNAL TEKNIK INFORMATIKA, VOL III NO.2, APRIL 2018


A. Sehingga perhitungan biaya minimum untuk simpul (A, 2.2. Hitung biaya terkecil dari orang B
1) adalah
Ĉ(A,1) = 9+1+3+4 = 17 Orang B memiliki 3 kemungkinan dalam memilih
dimana angka 1, 3, 4 adalah biaya minimum setiap pekerjaan, yaitu pekerjaan 1, 3, dan 4. Matriks untuk orang
pekerjaan yang tersisa. Sehingga nilai minimum untuk B jika memilih pekerjaan 1 adalah sebagai berikut:
simpul (A, 1) adalah 17.
1 2 3 4
Sedangkan matriks untuk orang A jika memilih A − − − −
pekerjaan 2 adalah sebagai berikut: B − − − −
[− − 1 8]
C
1 2 3 4 D − − 9 4
A − − − −
B 6 − 3 7 pada matriks tersebut, baris A dan B dengan kolom 1 dan 2
[5 − 1 8]
C diabaikan karena sudah dipasangkan antara pekerjaan 2
D 7 − 9 4 dengan orang A dan pekerjaan 1 dengan orang B. Sehingga
perhitungan biaya minimum untuk simpul (B, 1) adalah
sehingga perhitungan biaya minimum untuk simpul (A, 2) Ĉ(B,1) = 6+1+4 = 11
adalah dimana angka 1 dan 4 adalah biaya minimum setiap
Ĉ(A, 2) = 2+1+3+4 = 10 pekerjaan yang tersisa. Sehingga nilai minimum untuk
dimana angka 1, 3, 4 adalah biaya minimum setiap simpul (B, 1) adalah 11.
pekerjaan yang tersisa. Sehingga nilai minimum untuk
simpul (A, 2) adalah 10. Sedangkan matriks untuk orang B jika memilih
pekerjaan 3 adalah sebagai berikut:
Matriks untuk orang A jika memilih pekerjaan 3
adalah sebagai berikut: 1 2 3 4
A − − − −
1 2 3 4 B − − − −
A − − − − [5 − − 8]
C
B 6 4 − 7 D 7 − − 4
[5 8 − 8]
C
D 7 6 − 4 sehingga perhitungan biaya minimum untuk simpul (B, 3)
adalah
sehingga perhitungan biaya minimum untuk simpul (A, 3) Ĉ(B, 3) = 3+4+5 = 12
adalah dimana angka 4 dan 5 adalah biaya minimum setiap
Ĉ(A, 3) = 7+4+4+5 = 20 pekerjaan yang tersisa. Sehingga nilai minimum untuk
dan nilai minimum untuk simpul (A, 3) adalah 20. simpul (B, 3) adalah 12.

Matriks untuk orang A jika memilih pekerjaan 4 Matriks untuk orang B jika memilih pekerjaan 4
adalah sebagai berikut: adalah sebagai berikut:
1 2 3 4 1 2 3 4
A − − − − − − − −
A
B 6 4 3 − − − − −
[5 B
C 8 1 −] C
[5 8 − −]
D 7 6 9 − D 7 6 − −
sehingga perhitungan biaya minimum untuk simpul (A, 4) sehingga perhitungan biaya minimum untuk simpul (B, 3)
adalah adalah
Ĉ(A, 4) = 8+1+3+4 = 16 Ĉ(B, 3) = 7+5+6 = 18
dan nilai minimum untuk simpul (A, 4 ) adalah 16. dan nilai minimum untuk simpul (B, 4) adalah 18.
Karena simpul (B,1) memiliki nilai minimum
Karena simpul (A,2) memiliki nilai minimum simpul terkecil, maka simpul (B,1) yang akan dipilih untuk
simpul terkecil, maka simpul (A,2) yang akan dipilih untuk diekspansi sehingga dapat melanjutkan perhitungan. Maka
diekspansi sehingga dapat melanjutkan perhitungan. Maka orang B akan mendapatkan pekerjaan 1.
orang A akan mendapatkan pekerjaan 2.

JURNAL TEKNIK INFORMATIKA, VOL III NO.2, APRIL 2018


2.3. Hitung biaya terkecil dari orang C Ĉ(C,3) = 4
dan graph yang terbentuk adalah sebagai berikut:
Orang C memiliki 2 kemungkinan dalam memilih
pekerjaan, yaitu pekerjaan 3 dan 4. Matriks untuk orang C
jika memilih pekerjaan 3 adalah sebagai berikut:

1 2 3 4
A − − − −
B − − − −
[− − − −]
C
D − − − 4

pada matriks tersebut, baris A, B, dan C dengan kolom 1,


2, dan 3 diabaikan karena sudah dipasangkan antara
pekerjaan 2 dengan orang A, pekerjaan 1 dengan orang B
dan pekerjaan 3 dengan orang C. Sehingga perhitungan
biaya minimum untuk simpul (C, 3) adalah
Ĉ(C,3) = 1+4 = 5
dimana angka 4 adalah biaya minimum dari pekerjaan yang
tersisa. Sehingga nilai minimum untuk simpul (C, 3) adalah
5.

Sedangkan matriks untuk orang C jika memilih


pekerjaan 4 adalah sebagai berikut: Gambar Hasil graph menggunakan branch and bound

1 2 3 4
A − − − − Dengan demikian, solusi dari job assignment problem
B − − − − ini adalah orang A mengambil pekerjaan 2 dengan biaya 2,
[− − − −]
C orang B mengambil pekerjaan 1 dengan biaya 6, orang C
D − − 9 − mengambil pekerjaan 3 dengan biaya 1, dan orang D
mengambil pekerjaan 4 dengan biaya 4. Sehingga total
sehingga perhitungan biaya minimum untuk simpul (C, 4) biayanya adalah 13.
adalah
Ĉ(C, 4) = 8+9 = 17 Contoh algoritma untuk job assignment menggunakan
dimana angka 9 adalah biaya minimum dari pekerjaan yang metode Branch and Bound adalah sebagai berikut:
tersisa. Sehingga nilai minimum untuk simpul (C, 4) adalah
17. /* findMinCost menggunakan Least() dan
Add() untuk maintain daftar node
Karena simpul (C,3) memiliki nilai minimum
simpul terkecil, maka simpul (C,3) yang akan dipilih untuk Least() mencari live node dengan
diekspansi sehingga dapat melanjutkan perhitungan. Maka cost yang rendah, menghapusnya dari
orang C akan mendapatkan pekerjaan 3. daftar dan mereturnn nya

2.4. Hitung biaya terkecil dari orang D Add(x) menghitung cost dari x dan
menambahkannya ke daftar live node
Orang D hanya memiliki satu kemungkinan dalam */
memilih pekerjaan, yaitu pekerjaan 4. Matriks untuk orang
D jika memilih pekerjaan 4 adalah sebagai berikut: // Membuat tree node
{
1 2 3 4 int job_number;
A − − − −
int worker_number;
B − − − − node parent;
[− − − −]
C int cost;
D − − − 4 }
sehingga perhitungan biaya minimum untuk simpul (D, 4)
adalah

JURNAL TEKNIK INFORMATIKA, VOL III NO.2, APRIL 2018


// Input: Cost Matrix dari Job
Assignment problem  Kasus terbaik: terjadi bila node akar adalah E
// Output: Optimal cost dan Assignment T(n) = 1.
dari Jobs  Kasus terburuk: T(n) = n-1 O(n) dan node
algorithm findMinCost (costMatrix solusi tidak ditemukan.
mat[][])  Kasus Average = T(n) = n-1  O(n) dan node
{ solusi ditemukan pada posisi j.
// Inisiasi untuk daftar node(min-
Heap)
i.e. a Dummy node 3. KESIMPULAN
while (true)
{ Terdapat beberapa algoritma yang dapat
// Mencari node yang diperkirakan menyelesaikan Job Assignment Problem. Contohnya
memiliki cost paling rendah algoritma brute force yang mencari semua kemungkinan
E = Least(); solusi, kemudian mencari hasil paling optimum sehingga
pengerjaan harus dilakukan berkali-kali dengan
// Node yang ditemukan dihapus kompleksitas waktu yang lebih lama juga solusi yang dicari
dari daftar node lebih dalam, atau dengan algoritma BFS namun algoritma
if (E is a leaf node) BFS akan berhenti ketika satu solusi ditemukan, dan belum
{ tentu solusi tersebut adalah yang paling optimum.
printSolution(); Menurut kami, algoritma yang paling tepat digunakan
return; untuk menyelesaikan persoalan ini dengan
} mengimplementasikan algoritma Branch & Bound. Dalam
permasalahan ini, algoritma Branch & Bound dipakai untuk
for each child x of E menentukan cost dari tiap node dengan menghitung cost
{ yang diperlukan sampai node itu ditambah perkiraan cost
Add(x); // menambahkan x ke minimum yang diperlukan sampai ke node tujuan. Jika
daftar dari live nodes; tidak, maka anaknya tidak dipanggil terlebih dahulu. Node
x->parent = E; dengan cost terkecil yang dipanggil semua anaknya,
} dengan begitu pengerjaan menjadi lebih efisien, dan tidak
} perlu melakukan pengerjaan dua kali karena solusi pertama
} sudah pasti yang paling optimal.

Atau dalam bahasa umum adalah sebagai berikut: 4. REFERENSI


1. Masukan node akar ke dalam antrian. Jika node akar
adalah node solusi maka solusi telah ditemukan. Stop. [1] Saif, Noor Muhammad, Margiani, Sri “Aplikasi algoritma
2. Jika antrian kosong, tidak ada solusi. Stop. Branch and bound untuk Optimasi Jalur Pemadaman
3. Jika antrian tidak kosong, pilih node i dari antrian Kebakaran Kota Yogyakarta”, Jurnal Fourier, 3, 1, 2014, 59-
yang memiliki cost paling kecil. Jika terdapat 66.
beberapa node i yang memenuhi, pilih satu secara [2] https://www.geeksforgeeks.org/branch-bound-set-4-job-
sembarang. assignment-problem/ - diakses pada 22 April 2018
[3] https://simplicable.com/new/brute-force - diakses pada 28
4. Jika node i adalah simpul solusi maka solusi April 2018
ditemukan, Stop. Jika bukan solusi, maka panggil
semua anak-anaknya. Jika i tidak memiliki anak,
kembalik ke langkah 2.
5. Untuk setiap anak j dari simpul i, hitung cost, dan
masukan semua anak-anaknya ke dalam antrian.
6. Kembali ke langkah 2.

2.5. Kompleksitas Waktu Algoritma Branch


and Bound pada Assignment Problem

Berdasarkan algoritma branch and bound diatas bahwa


kompleksitas waktu yang dibutuhkan oleh algoritma
tersebut adalah:

JURNAL TEKNIK INFORMATIKA, VOL III NO.2, APRIL 2018

Anda mungkin juga menyukai