Beberapa kelebihan dari Depth First Search adalah : 1.
Pemakaian memori hanya sedikit, berbeda dengan BFS Breadth First Search yang harus menyimpan semua simpul yang pernah dibangkitkan.
2. Jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka akan
ditemukan solusi secara cepat.
Dan beberapa kelemahan dari Depth First Searh adalah : 1.
Jika pohon yang dibangkitkan mempunyai level yang dalam tak terhingga, maka solusi pun sulit untuk ditemukan.
2. Tidak memiliki titik optimal jika terdapat lebih dari satu solusi yang sama tetapi
berada pada level yang berbeda.
2.4 Algoritma Runut Balik Backtracking
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.
Pada berbagai masalah real world, solusi diperoleh dengan memproses rangkaian titik keputusan dimana setiap kandidat memiliki beberapa lintasan yang
dapat ditelusuri. Jika lintasan yang ditelusuri mengarah kepada solusi, maka penelusuran dihentikan dan solusi ditemukan. Namun, jika lintasan yang ditelusuri
tidak mengarah kepada solusi, maka harus dilakukan runut balik ke titik keputusan sebelumnya dan mencoba lintasan yang lain. Metode yang digunakan pada proses
tersebut adalah metode backtracking.
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
Universitas Sumatera Utara
himpunan penyelesaian yang mungkin ini akan diperoleh solusi optimal atau memuaskan Astuti, 2006.
2.4.1 Pengertian Algoritma Runut Balik Backtracking
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, kita 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 permainan seperti permainan tic-tac-toe, menemukan jalan keluar dalam sebuah labirin, catur, dll dan masalah-masalah pada bidang kecerdasan buatan
artificial intelligence Munir, 2004.
2.4.2 Properti Umum dari Metode Runut Balik Backtracking
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:
Universitas Sumatera Utara
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. Terdapat metode
dalam pengisian elemen-elemen matriks, yakni elemen pertama yang akan diisi adalah elemen pada baris dan kolom pertama, kemudian dilanjutkan pada elemen kolom
berikutnya dan setelah selesai mengisi satu baris, maka akan dilanjutkan pada kolom pertama pada baris selanjutnya. Elemen-elemenkotak yang diisi direpresentasikan
sebagai tingkatan dalam pembentukan pohon ruang status secara dinamis. Sedangkan angka-angka yang mungkin untuk diisi, direpresentasikan sebagai daun pada pohon
ruang status. Selanjutnya akan dibahas mengenai fungsi batas yang digunakan dalam implementasi algoritma runut balik pada penyelesaian persoalan magic square
tersebut.
Proses runut balik terjadi ketika daun yang dibangkitkan oleh program pada suatu tingkatan tidak sesuai dengan fungsi batas. Untuk persoalan magic square,
fungsi batas terdiri dari beberapa kasus. Kasus yang pertama adalah ketika tingkatan yang dicapai merupakan elemen terakhir yang akan diisi pada suatu baris danatau
kolom danatau diagonal. Fungsi batas mengharuskan kolom tersebut untuk diisi dengan elemen, sedemikian sehingga elemen tesebut menjadikan baris, kolom, atau
diagonal tersebut berjumlah sama dengan konstanta magic square yang ditentukan sesuai dengan ordo matriks. Kasus kedua adalah ketika daun yang dibangkitkan untuk
mengisi elemen matriks sudah berada pada elemen matriks lainnya. Fungsi batas mengharuskan setiap elemen memiliki nilai yang berbeda satu sama lain. Kasus ketiga
adalah ketika pada suatu tingkatan daun yang telah dibangkitkan telah mencapai nilai maksimum, yakni jika matriks memiliki ordo n, maka nilai maksimum dari suatu
elemen adalah n
2
, sehingga harus melakukan proses runut balik ke akar.
2.4.3 Prinsip Dasar dari Algoritma Runut Balik Backtracking
Secara konseptual, pencarian solusi dimulai dari akar pohon ruang status. Dimana setiap simpul, dimulai dari akar, pilih salah satu simpul anak yang bisa diperluas, dan
Universitas Sumatera Utara
seterusnya. Jika pencarian sampai ke daun, maka selanjutnya dilakukan backtracking ke simpul orang tua. Pencarian dihentikan jika solusi ditemukan atau tidak dapat
dilakukan backtracking lagi.
Berikut ini adalah algoritma pseudocode untuk melakukan backtracking dari simpul n:
boolean solveNode n { if n is a leaf node {
if the leaf is a goal node, return true else return false
} else {
for each child c of n { if solvec succeeds, return true
} return false
} }
Algoritma tersebut diekspresikan dengan fungsi boolean. Jika solven benar, maka simpul n adalah bagian dari solusi, yaitu simpul n adalah salah satu simpul pada
jalur dari root ke beberapa simpul tujuan. Sehingga dapat dikatakan bahwa n dapat diselesaikan. Jika solven salah, maka tidak ada jalur yang termasuk simpul n yang
mengarah ke simpul tujuan.
Maka, untuk menentukan adanya simpul n, yang bukan leaf, dapat diselesaikan, yang harus dilakukan adalah mengecek adanya cabang dari n yang dapat
diselesaikan. Ini dilakukan secara rekursif pada setiap cabang dari n. Pada pseudocode tersebut, dikerjakan oleh baris:
for each child c of n { if solvec succeeds, return true
} return false
Universitas Sumatera Utara
Pada akhirnya, proses rekursif akan berada pada simpul leaf. Jika simpul leaf adalah simpul tujuan, maka dapat diselesaikan; jika simpul leaf bukan simpul tujuan,
maka tidak dapat diselesaikan. Pada pseudocode tersebut, dikerjakan oleh baris:
if n is a leaf node { if the leaf is a goal node, return true
else return false }
2.4.4 Prinsip Pencarian Solusi dengan Metode Runut Balik Backtracking
Langkah-langkah pencarian solusi dapat dilakukan dengan metode 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.
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.
Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul
hidup untuk runut balik.
Universitas Sumatera Utara
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 dan x
i
∈ S
i
S = {1,2,3,4}, S menyatakan kolom pada papan catur.
Dari hal ini, dapat dibentuk pohon ruang solusi persoalan 4-Ratu yang terlihat pada Gambar 2.7 sebagai berikut:
Gambar 2.14 Pohon ruang kemungkinan solusi persoalan 4-Ratu
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
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
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.15 Penelusuran Solusi Backtraking 4-Ratu pada papan catur
Universitas Sumatera Utara
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.16 Pohon pencarian solusi dengan Backtraking pada persoalan 4-Ratu
Universitas Sumatera Utara
BAB 3
ANALISIS DAN PERANCANGAN APLIKASI
3.1 Analisis