You are on page 1of 22

Backtracking

Achmad Imam Kistijantoro Pelatihan TOKI II 2007

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

Prinsip kerja

3-Jun-07

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

Contoh kasus
N-Queen 0/1 knapsack Hamiltonian Circuit Subset-Sum m-coloring

3-Jun-07

IF-ITB/AI/Apr 07 TOKI II Backtracking

N-Queen
bagaimana meletakkan N buah queen pada papan catur sehingga tidak ada queen yang dalam posisi saling menyerang

3-Jun-07

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

16

hamiltonian circuit
a

b c d e f d e f f e c

d a

3-Jun-07

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

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

IF-ITB/AI/Apr 07 TOKI II Backtracking

22