Penerapan Algoritma Backtracking pada Pewarnaan Graf

dokumen-dokumen yang mirip
PENERAPAN PEWARNAAN GRAF DALAM PENJADWALAN

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Algoritma Runut-balik (Backtracking) Bahan Kuliah IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Penggunaan Algoritma Backtracking Untuk Menentukan Keisomorfikan Graf

Pembentukan Pohon Pencarian Solusi dalam Persoalan N-Ratu (The N-Queens Problem)

Algoritma Runut-balik (Backtracking)

Aplikasi Pewarnaan Graf pada Pemecahan Masalah Penyusunan Jadwal

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

PENERAPAN ALGORITMA RUNUT-BALIK (BACKTRACKING) DALAM PENYELESAIAN PERMAINAN SUDOKU

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

APLIKASI PEWARNAAN GRAPH PADA PEMBUATAN JADWAL

Algoritma Penentuan Graf Bipartit

Penyelesaian Permainan 3 missionaries and 3 cannibals Dengan Algoritma Runut-Balik

ALGORITMA RUNUT-BALIK (BACKTRACKING ALGORITHM) PADA MASALAH KNIGHT S TOUR

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Aplikasi Pewarnaan Graph pada Pembuatan Jadwal

Algoritma Runut-balik (Backtracking) Bagian 1

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Aplikasi Pewarnaan Graf Pada Pengaturan Warna Lampu Lalu Lintas

Pendeteksian Deadlock dengan Algoritma Runut-balik

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

UKDW BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

ALGORITMA RUNUT BALIK DALAM PENYELESAIAN PERMAINAN WORD DIAGRAM

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Penerapan Algoritma Backtrack pada Knight s Tour

Penerapan Algoritma Backtracking pada Game The Lonely Knight

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Aplikasi Algoritma Runut-balik pada Penyelesaian Teka Teki Mengisi Angka

Pemanfaatan Algoritma Runut-balik dalam Penentuan Golongan Suara pada Dunia Paduan Suara

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

UNIVERSITAS GUNADARMA

Penerapan Algoritma Runut-balik pada Permainan Math Maze

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

Penerapan Algoritma Runut-Balik pada Magic Square

UNTUK PEMECAHAN MASALAH PADA PERMAINAN HASHIWOKAKERO

PEWARNAAN GRAF SEBAGAI METODE PENJADWALAN KEGIATAN PERKULIAHAN

Memanfaatkan Pewarnaan Graf untuk Menentukan Sifat Bipartit Suatu Graf

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

PEMBANGKIT TEKA-TEKI SILANG DENGAN ALGORITMA BACKTRACKING SERTA APLIKASI PERMAINANNYA YANG BERBASIS WEB

PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI TEKA-TEKI BATTLESHIP

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Penggunaan Perwarnaan Graf dalam Mencari Solusi Sudoku

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

Algoritma Welch-Powell untuk Pengendalian Lampu Lalu Lintas

Penerapan Teori Graf Pada Algoritma Routing

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Pemanfaatan Algoritma Sequential Search dalam Pewarnaan Graf untuk Alokasi Memori Komputer

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Permasalahan Clique dalam Graf

Implementasi Algoritma Backtracking untuk Memecahkan Puzzle The Tile Trial pada Permainan Final Fantasy XIII-2

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENCARIAN KOEFISIEN ROOK POLYNOMIAL

ANALISIS PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI PERSOALAN LOMPATAN KUDA

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Algoritma Backtracking Pada Logic Game : Family Crisis (Game Penyebrangan)

Pewarnaan Simpul pada Graf dan Aplikasinya dalam Alokasi Memori Komputer

ANALISIS PENYELESAIAN PUZZLE SUDOKU DENGAN MENERAPKAN ALGORITMA BACKTRACKING ABSTRAK

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Oleh Lukman Hariadi

Penerapan Algoritma Runut-Balik dan Graf dalam Pemecahan Knight s Tour

Aplikasi Pewarnaan Graf dalam Pengalokasian Frekuensi Gelombang pada WLAN

Penerapan Algoritma Backtracking dalam Permainan Futoshiki Puzzle

Permodelan Pohon Merentang Minimum Dengan Menggunakan Algoritma Prim dan Algoritma Kruskal

MAKALAH STRATEGI ALGORITMIK (IF 2251) ALGORITMA RUNUT BALIK DALAM GAME LABIRIN

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

Algoritma Brute Force

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

Menyelesaikan Topological Sort Menggunakan Directed Acyclic Graph

Algoritma Branch & Bound untuk Optimasi Pengiriman Surat antar Himpunan di ITB

Pembuatan Musik Tanpa Pola Dengan Menggunakan Algoritma Runut Balik

Menghitung Ketinggian Rata-Rata Pohon Terurut

PENCARIAN MAKSIMUM CLIQUE DALAM GRAF DENGAN MENGGUNAKAN ALGORITMA BRANCH AND BOUND

Pembangkit Teka-Teki Silang dengan Algoritma Backtracking serta Aplikasi Permainannya yang Berbasis Web

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Penerapan Algoritma BFS, DFS, DLS dan IDS dalam Pencarian Solusi Water Jug Problem

Transkripsi:

Penerapan Algoritma Backtracking pada Pewarnaan Graf Deasy Ramadiyan Sari 1, Wulan Widyasari 2, Eunice Sherta Ria 3 Laboratorium Ilmu Rekayasa dan Komputasi Departemen Teknik Informatika, Fakultas Teknologi Industri, Institut Teknologi Bandung (ITB) Kampus ITB Jl. Ganesha No.10 Bandung if13008@students.if.itb.ac.id, if13055@students.if.itb.ac.id, if13057@students.if.itb.ac.id Abstrak Teori graf merupakan pokok bahasan yang sudah tua usianya namun memiliki banyak terapan sampai saat ini. Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Representasi visual dari graf adalah dengan menyatakan objek dengan simpul, noktah, bulatan, titik, atau vertex, sedangkan hubungan antara objek dinyatakan dengan garis atau edge. Salah satu aplikasi yang berkaitan dengan graf adalah pewarnaan graf (graph colouring) yang terdiri dari pewarnaan simpul, sisi, dan wilayah. Dalam makalah ini akan dibahas pewarnaan simpul saja. Pewarnaan simpul adalah memberi warna pada simpul-simpul suatu graf sedemikian sehingga tidak ada dua simpul bertetangga mempunyai warna yang sama. Jumlah warna minimum yang dapat digunakan untuk mewarnai graf dinyatakan dengan bilangan kromatik. Pewarnaan graf dapat diselesaikan salah satunya dengan menggunakan algoritma runutbalik (backtracking). Algoritma runut-balik adalah algoritma yang berbasis pada Depth First Search untuk mencari solusi persoalan secara lebih mangkus. Kata kunci : graf, simpul, vertex, edge, graf colouring, algoritma runut-balik,bilangan kromatik. 1. Pendahuluan Teori graf merupakan pokok bahasan yang sudah tua usianya namun memiliki banyak terapan sampai saat ini. Graf digunakan untuk merepresentasikan objekobjek diskrit dan hubungan antara objek-objek tersebut. Representasi visual dari graf adalah dengan menyatakan objek dengan simpul, noktah, bulatan, titik, atau vertex, sedangkan hubungan antara objek dinyatakan dengan garis atau edge. Salah satu aplikasi yang berkaitan dengan graf adalah pewarnaan graf (graph colouring). 2. Pewarnaan Graf 2.1 Pengertian Pewarnaan Graf Pengertian graf menurut Kamus Istilah Teknologi Informasi adalah himpunan simpul yang dihubungkan oleh sisi-sisi. Sedangkan secara matematis sebuah graf G didefinisikan sebagai pasangan himpunan (V,E), yang dalam hal ini : V = himpunan tidak kosong dari simpul-simpul (vertex) = {v 1,v 2,...,v n } dan E = himpunan sisi (edge) yang menghubungkan sepasang simpul = {e 1,e 2,,e n } atau dapat ditulis singkat notasi G = (V,E). [1] 1

Pengertian pewarnaan graf menurut situs en.wikipedia.org/wiki/graph_coloring adalah pemberian warna, yang biasanya direpresentasikan sebagai bilangan terurut mulai dari 1, pada objek tertentu pada graf. Objek tersebut dapat berupa simpul, sisi, wilayah ataupun kombinasi ketiganya. 2.2 Klasifikasi Pewarnaan Graf Ada tiga macam pewarnaan graf, yaitu : [bk matdis] 1. Pewarnaan simpul (vertex colouring), merupakan pemberian warna atau label pada setiap simpul sehingga tidak ada 2 simpul bertetangga yang memiliki warna sama.[9] 2. Pewarnaan sisi (edge coloring), merupakan pemberian warna pada setiap sisi pada graf sehingga sisi-sisi yang berhubungan tidak memiliki warna yang sama[8]. 3. Pewarnaan wilayah (region colouring), merupakan pemberian warna pada setiap wilayah pada graf sehingga tidak ada wilayah yang bersebelahan yang memiliki warna yang sama. Jumlah warna minimum yang dapat digunakan untuk mewarnai graf dinyatakan dengan bilangan kromatik, yang disimbolkan dengan χ(g). Graf yang memiliki bilangan kromatik 1 adalah graf kosong, yaitu graf yang hanya terdiri dari sebuah simpul. Sementara sembarang graf planar (graf yang dapat digambar di bidang datar tanpa ada sisi yang menyilang di atas sisi lainnya) dapat digambar hanya dengan menggunakan 4 warna. [5] 3. Algoritma Runut-Balik 3.1 Pengertian Algoritma Runut-Balik Runut-Balik atau backtracking adalah algoritma yang berrbasis pada DFS (Depth First Search) untuk mencari solusi secara lebih mangkus. Runut-balik merupakan perbaikan dari algoritma brute-force, secara sistematis mencari solusi persoalan di antara semua kemungkinan yang ada. Hanya pencarian yang mengarah ke solusi saja yang dikembangkan, sehingga waktu pencarian dapat dihemat. Runutbalik lebih alami dinyatakan dalam algoritma rekursif.[2] 3.2 Prinsip Pencarian Solusi dengan Metode Runut-Balik Langkah-langkah pencarian solusi pada pohon ruang status yang dibangun secara dinamis :[2] 1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan pembentukan yang dipakai adalah mengikuti metode pencarian mendalam (DFS). Simpulsimpul yang sudah dilahirkan dinamakan simpul hidup (live node). Simpul hidup yang sedang diperluas dinamakan simpul-e (Expand-node). Simpul dinomori dari atas ke bawah sesuai dengan urutan kelahirannya. 2. Tiap kali simpul-e diperluas, lintasan yang dibangun olehnya bertambah panjang. Jika lintasan yang sedang dibentuk tidak mengarah ke solusi maka simpul-e tersebut dibunuh sehingga menjadi simpul mati (dead node). Fungsi yang digunakan untuk membunuh simpul- E adalah dengan menerapkan fungsi pembatas (bounding function). Simpul yang sudah mati tidak akan pernah diperluas lagi. 3. Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pencarian diteruskan dengan membang-kitkan simpul anak yang lainnya. Bila tidak ada lagi simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan melakukan runutbalik ke simpul hidup terdekat (simpul orang tua). Selanjutnya simpul ini menjadi simpul-e yang baru. Lintasan baru dibangun kembali sampai lintasan tersebut membentuk solusi. 4. Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul hidup untuk runut-balik. 4. Algoritma Backtracking untuk Pewarnaan Graf Untuk menyelesaikan persoalan pewarnaan graf, kita perlu membuat sebuah matriks ketetanggaan GRAPH[1..n][1..n] yang merupakan matrix of boolean. GRAPH(I,j) bernilai true jika simpul i dan j bertetangga dan bernilai false jika sebaliknya. Matrix of boolean lebih direkomendasikan karena algoritma lebih mementingkan apakah kedua simpul bertetangga atau tidak. Jenis warna atau bilangan kromatik direpresentasikan dengan tipe bilangan 1,2,,m dan solusi akan direpresentasikan dengan n-tuple {X(1),X(2),,X(n)} dimana X(i) bernilai bilangan warna dari simpul i.[4] 2

procedure MCOLORING(k) //k adalah indeks selanjutnya dari simpul //yang akan diberi warna global integer m,n,x(1..n) boolean GRAPH[1..n][1..n] integer k loop //bangkitkan semua kemungkinan //untuk X(k) call NEXTVALUE(k) //set X(k) dengan //warna yang //memungkinkan if (X(k)=0) then exit endif if (k=n) then print(x) else call MCOLORING(k+1) endif repeat end MCOLORING //warna sudah habis procedure NEXTVALUE(k) global integer m,n,x(1..n) boolean GRAPH[1..n][1..n] integer j,k loop X(k)-(X(k)+1) mod (m+1) //warna //berikutnya If (X(k)=0) then return endif //warna sudah //habis for (j=1 to n ) do if (GRAPH(k,j) and (X(k)=X(j))) //jika (k,j) adalah sebuah sisi dengan //simpul awal dan akhir berwarna sama then exit endif if j=n+1 then return endif repeat end NEXTVALUE 5. Analisis Algoritma Runut Balik untuk Pewarnaan Graf Dengan menggunakan algoritma runut-balik yang rekursif, algoritma runut balik untuk pewarnaan graf menghasilkan pohon ruang status dengan derajat m dan tinggi n+1. Setiap simpul pada level i memiliki m anak yang ekivalen dengan jumlah kemungkinan warna untuk X(i), 1 i n. Simpul pada level n+1 adalah daun. Prosedur MCOLORING dimulai dengan menginisialisasi matriks ketetanggaan, mengisi larik X dengan 0 dan memanggil MCOLORING(1). Prosedur NEXTVALUE menghasilkan kemungkinan warna untuk X(k) setelah X(1) melalui X(k-1) didefinisikan. Kalang utama dari MCOLORING secara berulang mengambil elemen dari kemungkinan yang ada, mengisikannya ke X(k) dan memanggil MCOLORING secara rekursif.[4] Pada prosedur MCOLORING, didapat bahwa jumlah simpul internal dalam pohon ruang status adalah m i dari i = 0 sampai n. Untuk setiap simpul internal, NEXVALUE menghabiskan O(mn) waktu untuk menentukan anak-anak yang ekivalen untuk kemungkinan warna. Jadi, total waktu untuk algoritma runut balik untuk pewarnaan graf adalah n(m n+1-1) / (m-1) = O(nm n ). (1) 6. Perbandingan Algoritma Backtrack dengan Algoritma Lainnya Saat ini sudah ditemukan algoritma lainnya yang dapat digunakan untuk mewarnai graf. Salah satunya adalah algoritma Brelaz. Algoritma ini menggunakan prinsip heuristic dengan sedikit algoritma runut balik. Adapun prinsip heuristic yang digunakan dalam algoritma ini adalah dengan memilih simpul yang belum diberi warna dan memiliki sisa warna paling sedikit, kemudian subgraf yang belum memiliki warna dilepaskan dan warna dapat dipilih secara acak. Algoritma ini sangat efektif tapi performanya pada fase boundary sangat bervariasi bahkan untuk graf yang sama karena heuristic tidak selalu mencapai pilihan yang unik. Walaupun begitu, kompleksitas waktu Algoritma Brelaz adalah O(m log n) dengan m adalah jumlah sisi dan n adalah jumlah simpul.[11] Terlihat bahwa dengan algoritma Brelaz waktu yang dibutuhkan untuk menyelesaikan persoalan pewarnaan graf cukup singkat dibandingkan dengan algoritma runut-balik. Namun dengan menggunakan algoritma runut-balik dapat dicapai hasil pilihan yang unik, tidak seperti algoritma Brelaz. 7. Kesimpulan Algoritma runut balik dapat diterapkan pada permasalahan pewarnaan graf. Algoritma ini dapat diimplementasikan untuk sembarang graf dengan n simpul dan m jumlah warna. Algoritma ini juga dapat digunakan untuk menguji apakah benar sebuah graf planar dapat diwarnai hanya dengan 4 warna. Kompleksitas algoritma ini adalah O(nm n ) yang sebenarnya termasuk tidak mangkus untuk jumlah n 3

simpul yang besar. Tapi untuk n kecil, algoritma ini cukup efektif. Kelebihan dari algoritma ini adalah algoritma ini selalu dapat mencapai hasil yang unik. Daftar Pustaka [1] Munir,Rinaldi.2004.Diktat Kuliah Matematik Diskrit.Departemen Teknik Informatika ITB [2] Munir,Rinaldi.2005.Diktat Kuliah Strategi Algoritmik.Departemen Teknik Informatika ITB [3] Wahid,Fathul.Kamus Istilah Teknologi Informasi. Yogyakarta : Penerbit Andi [4] Horrowitz,Ellis and Sartij Sahni.1978.Fundamentalof Computer Algorithmic.McGraww [5] Deo, Narsingh.Graph Theory with Applications to Engineering and Computer Science.Prentice Hall [6] Read, Ronald C.Graph Theory and Computing.Academic Press [7] http://www.geom.uiuc.edu/~zarembe/graph1.html. Diakses tanggal 15 Mei 2005 pukul 13.00 WIB [8] Edge Coloring. http://mathworld.wolfram.com/edgecoloring.html. Diakses tanggal 19 Mei 2005 pukul 11.00 WIB [9] Vertex Coloring. http://mathworld.wolfram.com/vertexcoloring.html. Diakses tanggal 19 Mei 2005 pukul 11.00 WIB [10]en.wikipedia.org/wiki/Graph_coloring. Diakses tanggal 16 Mei 2005 pukul 10.00 WIB [11] Brelaz Algorithm. http://www.arl.wustl.edu/~jst/pubs/joa88.ps.diakses tanggal 17 Mei 2005 pukul 13.00 WIB 4

Pohon ruang status untuk graf dengan 4 simpul dan 3 kemungkinan warna 5

6