Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Teknik Backtracking Pertemuan 10: Pengertian Cara kerja

Presentasi serupa


Presentasi berjudul: "Teknik Backtracking Pertemuan 10: Pengertian Cara kerja"— Transcript presentasi:

1 Teknik Backtracking Pertemuan 10: Pengertian Cara kerja
Contoh-contoh masalah

2 Arti: Penelusuran ke belakang Idenya: Exchaustive search, yaitu mencoba semua kemungkinan, namun dengan beberapa perbaikan Contoh: Menyusun furniture dalam sebuah rumah baru -> ada berapa cara??

3 Dimulai dengan rumah kosong, setiap furniture satu persatu diletakkan dalam rumah tersebut. Jika semua barang sudah ditempatkan dan pemiliknya merasa bahagia, maka persoalan selesai. Jika sampai pada titik dimana susunan berikutnya tidak memuaskan, maka langkah terakhir harus dibatalkan, kemudian mencari alternatif yang lain. Kejadian seperti ini dapat terjadi ber-ulang2 Walaupun semua kemungkinan dapat dicobakan, tapi ada beberapa kemungkinan yang tidak akan dicoba. Proses menghilangkan sekelompok kemungkinan ini disebut : Pruning

4 Backtracking Andaikan harus dibuat serangkaian keputusan, di antara beberapa pilihan, dimana: Kita tidak memiliki informasi yang cukup utk mengetahui mana yang harus dipilih Setiap keputusan mengarah kepada serangkaian pilihan yang lain Beberapa rangkaian pilihan dapat merupakan solusi dari masalah yang dicari Backtracking adalah suatu metode untuk mencoba berbagai rangkaian keputusan, sampai ditemukan yang “works”

5 Contoh: masalah rekonstruksi titik
Misalkan terdapat n titik (p1, p2, …, pn) yang terletak pada sumbu x, dengan xi adalah koordinat pi pada sumbu x. Diasumsikan x1 = 0 serta susunan titik dari kiri ke kanan n buah titik tersebut menentukan n(n-1)/2 buah jarak antara sepasang titik dalam bentuk |xi – xj| untuk i ≠ j. Dengan demikian, untuk mencari jarak, dapat dilakukan dalam O(n2)

6 Masalah rekonstruksi titik : diketahui satu set jarak, selanjutnya ditentukan titik-titik yang direkonstruksi dari jarak-jarak tersebut. Masalah ini banyak dijumpai pada bidang fisika, biologi molekuler, dsb. Seperti halnya masalah faktorisasi yang lebih sulit dari multiplikasi, maka rekonstruksi titik juga lebih sulit dari pada menghitung jarak dari sejumlah titik yang diketahui.

7 Oleh karena |D| = 15, maka n = 6
Contoh: D = gugus jarak = {1,2,2,2,3,3,3,4,5,5,5,6,7,8,10} |D| = m = n(n-1)/2 Oleh karena |D| = 15, maka n = 6 Algoritme dimulai dengan memasang x1 = 0. Dari D diketahui bahwa x6 = 10, sehingga D berubah menjadi: | | X1 = x6 = 10 D = {1,2,2,2,3,3,3,4,5,5,5,6,7,8}

8 Jarak berikutnya yang terbesar adalah 8. Ini
dapat berarti x2 = 2 atau x5 = 8. Bila dicoba, Keduanya akan memberikan hasil yang sama. Andaikan diambil x5 = 8, maka akan diperoleh: | | | X1 = x5 = x6 = 10 D = {1,2,2,3,3,3,4,5,5,5,6,7} Langkah berikutnya, yang terbesar adalah 7. Ini berarti x2 = 3 atau x4 = 7. Bila dicoba, akan memberikan hasil sebagai berikut:

9 Jika x2 = 3 maka x2-x1 = 3 & x5-x2 = 5 -> Є D
Jadi keduanya dapat dicobakan. Andaikan diambil x4 = 7, maka akan diperoleh: | | | | X1 = x4 = 7 x5 = x6 = 10 D = {2,2,3,3,4,5,5,5,6} Langkah berikutnya, yang terbesar adalah 6. Ini berarti x2 = 4 atau x3 = 6. Namun jika x3 = 6, maka x4-x3 = 1, yang tidak ada di dalam D

10 Jika x2 = 4 maka x2-x1 = 4 & x5-x2 = 4, padahal
hanya ada satu di D. Ini berarti pemilihan x4 = 7 telah menemukan jalan buntu, shg hrs di back- track dan dicoba x2 = 3. Hasilnya adalah: | | | | X1 = x2 = x5 = x6 = 10 D = {1,2,2,3,3,4,5,5,6} Langkah berikutnya, yang terbesar adalah 6. Ini berarti x3 = 4 atau x4 = 6. Namun jika x3 = 4, maka x3-x1 = 4 & x5-x3 = 4, tidak ada di dalam D

11 D = { }, berarti proses selesai
Jika x4 = 6 maka x4-x2=3, x5-x4=2 & x6-x4=4 yang semuanya ada di D. Hasilnya adalah: | | | | | X1 = x2 = x4 = x5 = x6 = 10 D = {1,2,3,5,5} Pilihan yang terakhir adalah memberikan nilai x3 = 5, dengan hasil sebagai berikut: | | | | | | X1 = x2 = x3 = 5 x4 = x5 = x6 = 10 D = { }, berarti proses selesai

12 Decision tree: Hanya memiliki ‘imposible node’ tidak konsisten
gengan jarak yg diberikan X1 = 0 X6 =10 X5 = 8 X4 = 7 X2 = 3 X4 = 6 X3 = 4 X3 = 6 X2 = 4 X3 = 5 Hanya memiliki ‘imposible node’

13 Algoritme: Menerima array x, D dan n.
Jika solusi ditemukan, maka found diset dan answer akan ditempatkan dalam x Jika tidak, found tidak diset, berarti x belum ditemukan serta D tidak diubah Algoritme ini menset x1, xn-1 dan xn seperti cara di atas, mengubah isi D serta mengaktifkan algoritma backtracking untuk menempatkan titik-titik yang lain. Sebelumnya harus dicek bahwa |D|=n(n-1)/2

14 Masalah 0-1 Knapsack: Problem instance: P = (p1, p2, … pn), W = (w1, w2, …, wn) dan kapasitas = M Fungsi tujuan: Fungsi kendala: Solusi fisibel: X = (x1, x2, … xn) yang ditulis dalam bentuk n-tuple dari 0 dan 1, sehingga memenuhi

15 Banyaknya n-tuple = 2n, namun tidak semua kombinasi fisibel.
Backtracking memberikan metode rekursif yg sederhana untuk membentuk 2n kombinasi tersebut dg cara mula-mula menentukan nilai x1, dilanjutkan x2, dst. sampai xn. Contoh: untuk n=3 (-,-,-) (0,-,-) (1,-,-) (1,1,-) (0,0,-) (0,1,-) (1,0,-) (1,1,1) (1,1,0) (0,0,1) (0,0,0) (1,0,1) (1,0,0) (0,1,1) (0,1,0)

16 Secara rekursif menentukan 2n buah n-tuple
Algoritme: Secara rekursif menentukan 2n buah n-tuple Satu persatu, setiap n-tuple diperiksa profitnya dan dibandingkan dengan profit terbesar saat itu. Jika >, profit optimal diupdate, tuple dicatat Jika <, tidak perlu diupdate Langkah 2 hanya dilakukan bila fisibel. Jika tidak fisibel, profit tidak perlu dihitung Oleh karena perlu waktu θ(n) untuk membentuk dan mengecek setiap tupel, maka komplek-sitasi algoritma di atas = θ(n.2n)

17 Upaya untuk memperbaiki kompleksitas dilakukan dengan cara:
Pemangkasan/ pruning Bounding function

18 Pemangkasan/ pruning:
Memeriksa mana cabang yang baik dan mana yang tidak pada state space tree; yang tidak baik tidak perlu diteruskan untuk diperiksa. Dengan demikian, menghemat waktu dan sumber daya yang lain Implementasinya: Melakukan tes fisibilitas pada internal node (partial solution) dan bukan pada leaf node (complete solution)

19 Jika suatu solusi parsial tidak fisibel, maka tidak perlu dilakukan penelusuran cabang-cabang di bawahnya. Jika fisibel, penelusuran dapat diteruskan ke cabang di bawahnya. Selanjutnya, setiap terbentuk sebuah tupel, lakukan langkah 2 (pada algoritme) Contoh: n = 5, M = 26 i 1 2 3 4 5 Wi 11 12 8 7 9 Pi 23 24 15 13 16

20 23 38 51 47 39 36 (0 - - - -) (1 - - - -) (- - - - -) (10 - - -)
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (1010-) (0110 -) (1000 -) (1100-) (1011-) (1001 -) (11000) (11000) (10110) (10100) (10001) 23 38 51 47 (10010) 39 36

21 Bounding function: Misalkan sebuah node dalam state space tree mewakili partial solution X = (X1,X2,…,Xleft,-,…,-) dgn 0 ≤ left ≤ n C(X) didefinisikan sebagai profit maksimum dari sembarang solusi fisibel yang merupakan turunan X dalam state space tree

22 Bounding function: sembarang fungsi B yang didefinisikan pada himpunan node dari state space tree yang memenuhi kriteria berikut: Jika X adalah solusi fisibel, maka B(X) = C(X) adalah profit yang diberikan oleh X Untuk sembarang solusi parsial X, B(X) ≥ C(X), sehingga B(X) merupakan batas atas dari profit sembarang solusi fisibel yang merupakan turunan dari X dalam state space tree

23 Cara pemangkasan dengan menggunakan B(X) dilakukan sebagai berikut:
Pada suatu tahap backtrack, misalkan B(X) ≤ OPT_P (nilai optimal saat itu). Ini berarti C(X) ≤ B(X) ≤ OPT_P; karenanya semua turunan X pada state space tree dapat diabaikan, oleh sebab tidak satupun di antaranya yang menghasilkan profit yang > OPT_P Bagaimana menentukan B(X) ???

24 Namun seringkali 2 syarat ini kontradiktif:
B(X) haruslah : Mudah untuk dihitung Sedemikian dekat dengan C(X) Namun seringkali 2 syarat ini kontradiktif: Pada satu sisi, C(X) bisa digunakan sebagai bounding function, tapi tidak mudah dihitung Pada sisi lain, B(X) dapat didefinisikan sebagai suatu bilangan yang cukup besar, mis utk semua X, jadi cukup mudah untuk dihitung, tapi bisa jadi sangat jauh dari C(X) yang diharapkan

25 Andaikan X = (X1,X2,…,Xlev,-,…,-) merupakan suatu solusi parsial
Cara menentukan B(X) : Andaikan X = (X1,X2,…,Xlev,-,…,-) merupakan suatu solusi parsial RK dihitung menggunakan algoritma Greedy

26 Dhi, B(X) adalah jumlah dari :
Profit yang diperoleh dari objek 1,2,…,lev Profit dari sisa objek, dengan sisa kapasitas M - curr_W yang diperoleh dengan rational knapsack Karenanya bila bounding function digunakan, maka sebaiknya objeknya diurutkan dalam urutan profit/bobot tidak menaik, sehingga rational knapsacknya mudah dihitung

27 Algoritma Greedy; i := 1; p := 0; w := 0; for j := 1 to n do xj := 0;
while (W < M) and (i ≤ n) do if (W + wi) ≤ M then begin xi := 1; W := W + wi; P := P + pi; i := i end else begin xi := (M-W)/wi; W := M; P := P + (xi*pi); i := i end; end;

28 Contoh: i 1 2 3 4 5 wi 11 12 8 7 9 pi 23 24 15 13 16 pi/wi 23/11 24/12 15/8 13/7 16/9 X1 = 1, W = 11, P = 23 X2 = 1, W = 23, P = 47 X3 = (26-23)/8 = 3/8, W = 26, P = 47 + (3/8)(15) = /8 =

29 X = (1,-,-,-,-) B = Curr_W = 11 X = (-,-,-,-,-) B = Curr_W = 0 X = (0,-,-,-,-) B = < 51 Curr_W = 0 X = (1,1,-,-,-) B = Curr_W = 23 X = (1,0,-,-,-) B = 51 Curr_W = 11 X = (1,1,0,-,-) B = 52.57 Curr_W = 23 X = (1,0,1,-,-) B = 51 Curr_W = 11 X = (1,0,1,1,-) B = 51 Curr_W = 26 X = (1,1,0,0,-) B = 52.23 Curr_W = 23 X = (1,0,1,1,0) P = 51, OPT_P = 51 Curr_W = 26 X = (1,1,0,0,0) P = 47, OPT_P = 47 Curr_W = 23

30 Suatu Maze yang sederhana
Cari maze sampai ketemu jalan keluar. Jika tidak ketemu, laporkan.

31

32

33

34

35

36

37 Akhirnya…

38 Sudoku


Download ppt "Teknik Backtracking Pertemuan 10: Pengertian Cara kerja"

Presentasi serupa


Iklan oleh Google