Algoritma Tabu Search untuk Masalah Pewarnaan Graf

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