1 / 38

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

Pertemuan 10: Teknik Backtracking Pengertian Cara kerja Contoh-contoh masalah. 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??.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pertemuan 10: Teknik Backtracking • 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. 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 = 0 x6 = 10 D = {1,2,2,2,3,3,3,4,5,5,5,6,7,8}

  8. | | | X1 = 0 x5 = 8 x6 = 10 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: 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. | | | | X1 = 0 x4 = 7 x5 = 8 x6 = 10 Jika x2 = 3 maka x2-x1 = 3 & x5-x2 = 5 -> Є D Jika x4 = 7 maka x6-x4 = 3 & x5-x4 = 1 -> Є D Jadi keduanya dapat dicobakan. Andaikan diambil x4 = 7, maka akan diperoleh: 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. | | | | X1 = 0 x2 = 3 x5 = 8 x6 = 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: 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. | | | | | X1 = 0 x2 = 3 x4 = 6 x5 = 8 x6 = 10 D = {1,2,3,5,5} Jika x4 = 6 maka x4-x2=3, x5-x4=2 & x6-x4=4 yang semuanya ada di D. Hasilnya adalah: Pilihan yang terakhir adalah memberikan nilai x3 = 5, dengan hasil sebagai berikut: | | | | | | X1 = 0 x2 = 3 x3 = 5 x4 = 6 x5 = 8 x6 = 10 D = { }, berarti proses selesai

  12. Decision tree: 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. 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

  20. (0 - - - -) (1 - - - -) (- - - - -) (10 - - -) (11 - - -) (01 - - -) (00 - - -) (110 - -) (100 - -) (101 - -) (011 - -) (010 - -) (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. 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. 1010 utk semua X, jadi cukup mudah untuk dihitung, tapi bisa jadi sangat jauh dari C(X) yang diharapkan

  25. 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 rationalknapsacknya 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 + 1 end else begin xi := (M-W)/wi; W := M; P := P + (xi*pi); i := i + 1 end; end;

  28. Contoh: 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) = 52 + 5/8 = 52.625

  29. X = (1,-,-,-,-) B = 52.625 Curr_W = 11 X = (-,-,-,-,-) B = 52.625 Curr_W = 0 X = (0,-,-,-,-) B = 50.14 < 51 Curr_W = 0 X = (1,1,-,-,-) B = 52.625 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 sampaiketemu jalan keluar. Jika tidak ketemu, laporkan.

  31. Akhirnya…

  32. Sudoku

More Related