Kelebihan DFS adalah: 1.
Pemakaian memori hanya sedikit, berbeda jauh dengan BFS yang harus menyimpan semua node yang pernah dibangkitkan.
2. Jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka
DFS akan menemukannya secara cepat.
Kelemahan DFS adalah: 1.
Jika pohon yang dibangkitkan mempunyai level yang dalam tak terhingga, maka tidak ada jaminan untuk menemukan solusi Tidak Complete.
2. Jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang
berbeda, maka pada DFS tidak ada jaminan untuk menemukan solusi yang paling baik Tidak Optimal.
2.6 Algoritma Runut-Balik Backtracking Algorithm
Istilah runut balik pertama kali diperkenalkan oleh D.H. Lehmer pada tahun 1950. Selanjutnya di tahun 1960, R. J. Walker, Golomb, dan Baumert menyajikan uraian
umum tentang runut balik dan penerapannya pada berbagai persoalan.
Teknik runut balik backtracking merupakan salah satu teknik dalam penyelesaian masalah secara umum General Problem Solving. Adapun dasar dari
teknik ini adalah suatu teknik pencarian Teknik Searching. Teknik pencarian ini digunakan dalam rangka mendapatkan himpunan penyelesaian yang mungkin. Dari
himpunan penyelesaian yang mungkin ini akan diperoleh solusi optimal atau memuaskan. Runut-balik backtracking adalah algoritma yang berbasis pada Depth
First Search DFS untuk mencari solusi persoalan secara lebih mangkus.
Runut-balik, yang merupakan perbaikan dari algoritma brute-force, secara sistematis mencari solusi persoalan di antara semua kemungkinan solusi yang ada.
Dengan metode runut balik, tidak perlu memeriksa semua kemungkinan solusi yang ada. Hanya pencarian yang mengarah ke solusi saja yang selalu dipertimbangkan.
Akibatnya, waktu pencarian dapat dihemat. Saat ini algoritma runut-balik banyak diterapkan untuk program games seperti game tic-tac-toe, menemukan jalan keluar
Universitas Sumatera Utara
dalam sebuah labirin, catur, dll dan masalah-masalah pada bidang kecerdasan buatan artificial intelligence.Munir, 2004.
2.6.1 Properti Umum Metode Runut-Balik
Untuk menerapkan metode runut-balik, properti berikut didefinisikan: 1. Solusi persoalan.
Solusi dinyatakan sebagai vektor n-tuple: Contoh: Si = {0,1}
Si = 0 atau 1
2. Fungsi pembangkit nilai xk Dinyatakan sebagai:
Tk Tk membangkitkan nilai untuk xk, yang merupakan komponen vektor solusi
3. Fungsi pembatas fungsi kriteria Dinyatakan sebagai:
Bx1, x2, ..., xk Fungsi pembatas menentukan apakah x1, x2, ..., xk mengarah ke solusi. Jika ya,
maka pembangkitan nilai untuk xk+1 dilanjutkan, tetapi jika tidak, maka x1, x2,
..., xk dibuang dan tidak dipertimbangkan lagi dalam pencarian solusi.
2.6.2 Prinsip Pencarian Solusi dengan Metode Runut-Balik
Di sini penulis hanya akan meninjau pencarian solusi pada pohon ruang status yang dibangun secara dinamis. Langkah-langkah pencarian solusi adalah sebagai berikut:
1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan pembentukan
yang dipakai adalah mengikuti aturan pencarian mendalam DFS. Simpul-simpul yang sudah dilahirkan dinamakan simpul hidup live node. Simpul hidup yang
sedang diperluas dinamakan simpul-E Expand-node.
Universitas Sumatera Utara
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 membangkitkan simpul anak yang lainnya. Bila tidak ada lagi simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan
melakukan runut-balik ke simpul hidup terdekat simpul orangtua. Selanjutnya simpul ini menjadi simpul-E yang baru.
4. Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul
hidup untuk runut-balik.
Berikut ini adalah contoh penerapan algoritma Backtracking pada persoalan N- Ratu The N-Queens Problem.
Persoalan: Diberikan sebuah papan catur yang berukuran NxN dan empat buah ratu. Bagaimanakah menempatkan N buah ratu Q itu pada petak-petak papan catur
sedemikian sehingga tidak ada dua ratu atau lebih yang terletak pada satu baris yang sama, atau pada satu kolom yang sama atau pada satu diagonal yang sama.
Berdasarkan pada “Bahan Kuliah ke- 10 : Algoritma Runut-Balik Backtracking Lanjutan” karangan Rinaldi Munir, solusi dari permasalahan tersebut
adalah sebagai berikut:
X = x
1
,x
2
,x
3
,x
4
, dimana X merupakan vektor untuk peletakkan posisi ratu pada papan dan x
i
∈ S
i
S = {1,2,3,4}, S menyatakan kolom pada papan catur.
Universitas Sumatera Utara
Dari hal ini, dapat dibentuk pohon ruang solusi persoalan 4-Ratu yang terlihat pada Gambar 2.7 sebagai berikut:
Gambar 2.7 Pohon ruang kemungkinan solusi persoalan 4-Ratu
Dari gambar, dapat dilihat ruang seluruh solusi yang mungkin diterapkan pada persoalan 4-Ratu pada papan catur tersebut. Langkah-langkah solusi dengan
menggunakan backtracking adalah berikut :
1. Menelusuri node dari akar sampai ke daun yang membentuk ruang solusi
secara DFS. Penelusuran dilakukan dengan mempertimbangkan setiap batasan atau kriteria yang telah ditetapkan.
2. Apabila node yang dikunjungi memenuhi kriteria, maka akan dilakukan
penulusuran menuju node berikutnya. Sebaliknya, apabila node yang dikunjungi tidak memenuhi kriteria, maka akan dilakukan backtracking
menuju node yang berada di atas dan node tersebut sampai ke bawahnya tidak dipertimbangkan lagi.
3. Pencarian berhenti apabila ditemukan solusi atau tidak ada node hidup pada
pohon tersebut.
Dari langkah-langkah tersebut, dapat dilihat contoh solusi pada Gambar 2.8 dan pohon solusi persoalan 4-Ratu pada papan catur pada Gambar2.9.
1
5 7
10 12
15 17
21 23
26 28
31 33
37 39
42 44
47 49
53 55
58 60
63 65
4 6
9
11 14
16 20
22 25
27 30
32 36
38 41
43 46
48 52
54 57
59 62
64
3 8
13 19
24 29
35 40
45 51
56 61
2
18 34
50
x
1
=1 x
1
=2 x
1
=3 x
1
=4
x
2
=2 x
2
=3 x
2
=4 x
2
=1 x
2
=4 x
1
=1 x
2
=1 x
2
=2 x
2
=4 x
2
=1 x
2
=2 x
2
=3
x
3
=3 x
3
=4 x
3
=2 x
3
=4 x
3
=2 x
3
=3 x
3
=3 x
3
=4 x
3
=3 x
3
=4 x
3
=1 x
3
=3 x
3
=2 x
3
=4 x
3
=1 x
3
=4 x
3
=1 x
3
=2 x
3
=2 x
3
=3 x
3
=1 x
3
=3 x
3
=1 x
3
=2
x
4
=4 x
4
=3 x
4
=4 x
4
=2 x
4
=3 x
4
=2 x
4
=4 x
4
=3 x
4
=4 x
4
=3 x
4
=3 x
4
=1 x
4
=4 x
4
=2 x
4
=4 x
4
=1 x
4
=2 x
4
=1 x
4
=3 x
4
=2 x
4
=3 x
4
=1 x
4
=2 x
4
=1
Universitas Sumatera Utara
1
a 1
2 1
2 1
3 2
1 3
2 1
1 2
1 3
2 4
b c
d
e f
g h
Gambar 2.8 Penelusuran Solusi Backtraking 4-Ratu pada papan catur
1
15 31
9
11 14
16 30
3 8
13 19
24 29
2
18
x
1
=1
x
2
=4 x
2
=2 x
2
=3 x
2
=4 x
1
=2
x
2
=1 x
2
=3
x
3
=2 x
3
=4 x
3
=2 x
3
=3 x
3
=1
x
4
=3 x
4
=3 B
B B
B B
B B
Gambar 2.9 Pohon pencarian solusi dengan Backtraking pada persoalan 4-Ratu
Universitas Sumatera Utara
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Kebutuhan Sistem