3.2 Algoritma Tabu Search untuk Masalah Pewarnaan Graf
Konsep dasar dari algoritma tabu search untuk masalah pewarnaan graf adalah pengefektifan proses pencarian solusi dengan cara mencari best solution pada setiap
tahap pewarnaan verteks. Pada beberapa tahap pewarnaan dapat dikategorikan sebagai langkah tabu dilarang karena akan menghasilkan local optimal dan juga karena akan
mengakibatkan langkah pengulangan kembali pencarian ke solusi yang pernah ditemukan sebelumnya. Langkah-langkah ini kemudian dimasukkan ke dalam daftar
yang disebut dengan tabu list. Proses pencariannya itu sendiri dilakukan dengan cara menentukan solusi awal dan kemudian dilakukan gerakan move ke solusi-solusi
berikutnya neighborhood dan baru berhenti sampai kriteria penghentian stopping conditions tercapai. Metode ini yang akan digunakan untuk menyelesaikan masalah
pewarnaan graf. Hal utama pada algoritma tabu search dalam masalah pewarnaan graf yaitu
memeriksa apakah neighborhood dalam graf merupakan tabu atau tidak, hal tersebut tidak cukup dengan menguji status tabu pada proses pewarnaan yang akan dihasilkan
menuju verteks neighborhood saja. Stopping condition adalah untuk menemukan pewarnaan yang dibolehkan atau untuk mencapai jumlah maksimum pewarnaan. Hal
yang paling penting dalam algoritma tabu search adalah neighborhood N dan manajemen tabu list.
3.2.1 Neighborhood N
Diberikan suatu persoalan pewarnaan G V, E, k , pencarian daerah Ω terdiri dari
seluruh pewarnaan yang mungkin pada G , sehingga |Ω| = |V|
k
. Suatu fungsi ketanggaan sederhana N
: Ω → 2
Ω
– {Ø} dapat didefinisikan sebagai berikut. Untuk semua atau sebarang konfigurasi c
∈ Ω, suatu tetangga c’ diperoleh dengan mengganti warna pada suatu verteks bertentangan pada c.
Universitas Sumatera Utara
3.2.2 Manajemen Tabu List
Terdapat beberapa versi pada dasar algoritma dalam beberapa literatur, namun pada intinya dijelaskan bahwa semua algortima menggunakan kedudukan tabu list T
ℓ
. Pada persoalan dalam tulisan ini, bersifat dinamis disesuaikan oleh suatu fungsi yang
berdasarkan pada fungsi objektif. Berikut ini merupakan prosedur algoritma tabu search untuk masalah
pewarnaan graf sebagai berikut:
algoritma tabu search input: grafV, E{input jumlah verteks dan edge}
input:k {jumlah warna untuk mewarnai verteks-verteks} C boleh melakukan pewarnaan jika dan hanya jika ci
≠ cj dimana [i,j]
∈ E return value:
fcbest =; {fcbest adalah solusi pewarnaan terbaik yang diperoleh} begin
{Buat solusi awal c yang feasibel dengan menggunakan suatu metode heuristik tertentu atau secara acak}
fc:=c;{fc adalah solusi pewarnaan sekarang} tabu_list := null;
repeat fc := fcbest;
move:=tukar[i][j]{melakukan pertukaran atau perpindahan dari verteks q ke verteks r}
candidatec := c’
∈
Nc: merupakan move dari Neighborhood c ke c’ yang tidak tergolong elemen dari tabu list atau memenuhi kriteria
aspirasi}; pilih c
∈
candidatec: c adalah solusi yang memiliki jumlah pewarnaan minimum;
simpan move yang berlawanan ke dalam tabu list,yaitu yang mengubah c ke c;
set c := c; {bentuk move ci:=k}
if c fc then fcbest := c;
fc :=c; until stopping_condition = TRUE;
returnfcbest; end;
Universitas Sumatera Utara
Langkah-langkah algoritma tabu search untuk masalah pewarnaan graf dan contohnya adalah sebagai berikut:
1. Langkah satu Representasikan graf G = V, E ke dalam bahasa pemrograman dan nilai k
pewarnaan yang akan digunakan: misalkan:
V = {1, 2, 3, 4, 5} E = {e1, e2, e3, e3, e4, e5, e6, e7}
k = [5]; {k merupakan kandidat solusi} = {1, 2, 3, 4, 5}
dimana c1 = merah; c2 = hijau; c3 = biru c4 = kuning; c5 = ungu. jika edge antara verteks i dan verteks j terhubung, maka masukan nilai 1, jika
tidak, maka masukan nilai 0 sebagai berikut: edge[1][2] = 1;
edge[2][4] = 0; edge[1][3] = 1;
edge[2][5] = 0; edge[1][4] = 0;
edge[3][4] = 1; edge[1][5] = 1;
edge[3][5] = 1; edge[2][3] = 1;
edge[4][5] = 1; 2. Langkah dua
Pilih solusi awal fc untuk solusi pewarnaan sekarang dan fcbest untuk solusi pewarnaan terbaik yang dilakukan.
Pada penelitian ini menggunakan metode heuristic untuk membuat solusi awal dengan menggunakan algoritma Greedy.
Prosedur algoritma Greedy adalah sebagai berikut: 1. Inisialisai himpunan solusi dengan himpunan kosong.
2. Urutkan verteks berdasarkan jumlah edge tebanyak pengurutan dari besar ke kecil.
3. Melakukan pemilihan verteks yang akan diwarnai dengan fungsi seleksi verteks.
4. Memilih kandidat warna dengan menggunakan himpunan kandidat kurangi warna anggota himpunan kandidat dengan warna yang diambil.
Universitas Sumatera Utara
5. Periksa kelayakan warna yang dipilih menggunakan langkah 3. Jika layak warna yang dipilih, maka masukkan ke himpunan solusi.
6. Periksa apakah solusi sudah melilputi perwarnaan seluruh verteks. Jika sudah seluruh verteks, maka berhenti. Jika belum, maka kembali ke langkah 3.
Urutkan verteks sesuai derajat paling tinggi ke rendah: Himpunan c = {v3, v2, v4, v1, v5}
lakukan pewarnaan verteks: c = [3, 2, 4, 1, 5]
hasil solusi awal: fc = [c];
fc =[3, 2, 4, 1, 5]; didapat solusi awal yaitu:
fcbest = fc; fcbest =[3, 2, 4, 1, 5];
masukkan nilai solusi awal ke dalam tabu list: tabu_list = [3, 2, 4, 1, 5];
3. Langkah tiga Lakukan pencarian solusi neighborhood c Nc dan move ke solusi baru:
c’ = kandidat solusi yang belum ada di tabu list; c = solusi yang memiliki jumlah pewarnaan minimum
c := 3; {Membatasi jumlah warna untuk pewarnaan optimum} c = c;
move = tukar c[i]c[j]; dimana c[i] ≠ c[j];
set c = c; c = [3, 2, 1, 4, 3];
masukkan nilai c ke dalam tabu list: tabu_list = [];
4. Langkah empat Mencari solusi terbaik dari pewarnaan:
solusi pewarnaan lama := solusi pewarnaan sekarang; fc := c;
Universitas Sumatera Utara
fc := [3, 2, 1, 4, 3]; jika c fc, maka
fcbest := fc; fc := c;
jika stopping condition tidak terpenuhi, maka kembali ke fcbest; fcbest := fc;
fcbest := [3, 2, 1, 4, 3] masukkan nilai fcbest ke dalam tabu list:
tabu_list := []; c’ = kandidat solusi pewarnaan yang bukan elemen tabu list
c’ = []; c = solusi pewarnaan sekarang;
c = move[i][j]; c = [3, 2, 1, 1, 3];
masukkan nilai c ke dalam tabu list: tabu_list = [];
solusi pewarnaan lama := solusi pewarnaan sekarang; fc := c;
fc := [3, 2, 1, 1, 3]; jika c fc, maka
fcbest := fc; fc := c;
jika stopping condition tidak terpenuhi, maka kembali ke langkah fcbest: fcbest := fc;
fcbest := [3, 2, 1, 1, 3]; masukkan nilai fcbest ke dalam tabu list:
tabu_list := []; c’ = kandidat solusi pewarnaan yang bukan elemen tabu list
c’ = []; c = solusi pewarnaan sekarang;
c = move[i][j]; c = [1, 2, 3, 1, 2];
masukkan nilai c ke dalam tabu list:
Universitas Sumatera Utara
tabu_list = []; solusi pewarnaan lama := solusi pewarnaan sekarang;
fc := c; fc := [1, 2, 3, 1, 2];
jika c fc, maka fcbest := fc;
fc := [1, 2, 3, 1, 2]; jika stopping condition terpenuhi, maka berhenti.
3.3 Implementasi Algoritma