Professional Documents
Culture Documents
Intro
Brute-force seringkali menjadi satu-satunya solusi yang dapat diharapkan untuk berbagai masalah pada masalah kombinatorial, backtracking (runut-balik) membantu menentukan ruang pencarian secara sistematis ruang pencarian disusun berupa tree, dan umumnya ditelusuri menggunakan DFS
3-Jun-07
Prinsip kerja
solusi dinyatakan dalam bentuk n-tuple tentukan constraint/pembatas ruang solusi fungsi pembangkit pohon solusi, menambah satu elemen setiap saatnya evaluasi solusi secara sistematis
3-Jun-07
Prinsip kerja
3-Jun-07
algoritma iterasi
Backtrack hitung S1 = kandidat solusi untuk elemen 1 k = 1 while(k>0) do while( Sk ) do ak = elemen Sk Sk = S k ak if( A = (a1, a2, ...ak) adalah solusi, lapor else k = k+1 hitung Sk = kandidat solusi untuk elemen k k = k 1 //backtrack
3-Jun-07 IF-ITB/AI/Apr 07 TOKI II Backtracking 5
algoritma rekursi
Backtrack(k) if( A = (a1, a2, ...ak) adalah solusi, lapor else k = k+1 hitung Sk = kandidat solusi untuk elemen k while( Sk ) do ak = elemen Sk Sk = S k ak Backtrack(k)
3-Jun-07
Contoh kasus
N-Queen 0/1 knapsack Hamiltonian Circuit Subset-Sum m-coloring
3-Jun-07
N-Queen
bagaimana meletakkan N buah queen pada papan catur sehingga tidak ada queen yang dalam posisi saling menyerang
3-Jun-07
N-Queen
Solusi:
dengan brute force: mencoba seluruh kombinasi yang ada: memilih NxN kemungkinan posisi untuk N queen = C(NxN, N) = C(64, 8) = 4.426.165.368 dengan brute force: mencoba kombinasi posisi 1 queen pada setiap barisnya = NN kemungkinan = 88 = 16.777.216 dengan brute force: mencoba kombinasi posisi 1 queen pada setiap barisnya yang tidak berada pada kolom yang sama: N! = 40.320
3-Jun-07
N-Queen
Solusi backtracking:
menggunakan permutasi sebagai dasar pembangkitan pohon solusi mulai dari baris pertama, evaluasi kemungkinan posisi queen, maju ke baris berikutnya untuk setiap konfigurasi yang mungkin jika tidak ada konfigurasi lain yang mungkin dan tidak ada solusi, backtrack ke baris sebelumnya
3-Jun-07
10
N-Queen
NQueen(k) if k == N // solusi ditemukan else while(ada pos Queen pada brs k yang belum dievaluasi) pilih posisi baru Queen pada baris k NQueen(k+1)
3-Jun-07
11
N-Queen
{ }
{1}
{2}
{ 1, 3 }
{ 1, 4 }
{ 2, 4 }
{ 1, 4, 2 }
{ 2, 4, 1 }
{2, 4, 1, 3}
3-Jun-07 IF-ITB/AI/Apr 07 TOKI II Backtracking 12
0/1 Knapsack
N buah barang memiliki bobot yang berbedabeda (w1, w2, ... wn), dan nilai (v1, v2,...vn) dimasukkan ke dalam karung dengan kapasitas maksimum W. tentukan barang mana saja yang dimasukkan agar mencapai nilai maksimum
3-Jun-07
13
0/1 knapsack
ruang solusi:k ( x1, x2, ... xn ), xi { 0, 1 } batasan: wi xi W i =1 temukan solusi yang mungkin pilih solusi dengan nilai terbesar
3-Jun-07
14
0/1 Knapsack
{ }
{0}
{1}
{ 0, 0 }
{ 0, 1 }
{ 1, 1 }
{ 0, 1, 0 }
{ 1, 1, 0 }
{1, 1, 0, 1}
3-Jun-07 IF-ITB/AI/Apr 07 TOKI II Backtracking 15
hamiltonian circuit
diberikan sebuah graf dengan N simpul. tentukan hamiltonian circuit pada graf tersebut
a c d e b f
3-Jun-07
16
hamiltonian circuit
a
b c d e f d e f f e c
d a
3-Jun-07
17
subset sum
diberikan sekumpulan bilangan S = {s1, s2, ... sn}, tentukan subset dari S yang memiliki jumlah d ruang solusi: ( x1, x2, ... xn ), xi { 0, 1 } k si xi d batasan: i =1 pilih solusi yang memiliki hasil d
3-Jun-07
18
m-coloring
diberikan sebuah graf dengan N simpul. Berilah warna pada setiap simpul dengan warna yang diambil dari m buah warna, dengan syarat tidak ada simpul yang bersebelahan memiliki warna yang sama
a c d e b f
3-Jun-07
19
m-coloring
ruang solusi: ( x1, x2, ... xn ), xi { c1, c2,...cm } batasan: i, j (edge(i, j ) ) xi x j
mulai dari simpul 1, evaluasi kemungkinan warna simpul, maju ke simpul berikutnya untuk setiap konfigurasi yang mungkin jika tidak ada konfigurasi lain yang mungkin dan tidak ada solusi, backtrack ke simpul sebelumnya
3-Jun-07
20
Penutup
secara umum, algoritma backtracking sesuai untuk masalah yang mencari solusi yang dinyatakan berupa n-tuple penelusuran tree dilakukan secara DFS worse-case scenario: algoritma harus menelusuri seluruh elemen tree tanpa backtracking
3-Jun-07
21
Latihan
bangkitkan permutasi bilangan (1,2,...N) sedemikian rupa sehingga tidak ada bilangan yang berada pada urutan yg sama dengan bilangan tersebut
3-Jun-07
22