Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

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

Presentasi serupa


Presentasi berjudul: "1 Pertemuan 10: Teknik Backtracking Pengertian Cara kerja Contoh-contoh masalah."— Transcript presentasi:

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

2 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 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 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 5 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(n 2 ) Contoh: masalah rekonstruksi titik

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

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: D = {1,2,2,3,3,3,4,5,5,5,6,7} | | | X1 = 0 x5 = 8 x6 = 10 Langkah berikutnya, yang terbesar adalah 7. Ini berarti x2 = 3 atau x4 = 7. Bila dicoba, akan memberikan hasil sebagai berikut:

9 9 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} | | X1 = 0 x4 = 7 x5 = 8 x6 = 10 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 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} | | X1 = 0 x2 = 3 x5 = 8 x6 = 10 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 11 Jika x4 = 6 maka x4-x2=3, x5-x4=2 & x6-x4=4 yang semuanya ada di D. Hasilnya adalah: D = {1,2,3,5,5} | | | | | X1 = 0 x2 = 3 x4 = 6 x5 = 8 x6 = 10 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 12 X1 = 0 X6 =10 X5 = 8 X2 = 3X4 = 7 X3 = 6X2 = 4 X3 = 4 X4 = 6 X3 = 5 Decision tree: Hanya memiliki ‘imposible node’ tidak konsisten gengan jarak yg diberikan

13 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 14 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 Masalah 0-1 Knapsack:

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

16 16 1.Secara rekursif menentukan 2 n buah n-tuple 2.Satu persatu, setiap n-tuple diperiksa profitnya dan dibandingkan dengan profit terbesar saat itu. –Jika >, profit optimal diupdate, tuple dicatat –Jika <, tidak perlu diupdate 3.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.2 n ) Algoritme:

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

18 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 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 i12345 Wi Pi

20 20 (1100-) (10110)(10100) (10010) (10001) (11000) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (1000 -) (1011-) (1010-) (1001 -) ( ) ( ) ( )( ) (0110 -)

21 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 22 sembarang fungsi B yang didefinisikan pada himpunan node dari state space tree yang memenuhi kriteria berikut: 1.Jika X adalah solusi fisibel, maka B(X) = C(X) adalah profit yang diberikan oleh X 2.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 Bounding function:

23 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 24 B(X) haruslah : 1.Mudah untuk dihitung 2.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 25 Andaikan X = (X1,X2,…,Xlev,-,…,-) merupakan suatu solusi parsial RK dihitung menggunakan algoritma Greedy Cara menentukan B(X) :

26 26 Dhi, B(X) adalah jumlah dari : 1.Profit yang diperoleh dari objek 1,2,…,lev 2.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 27 Algoritma Greedy; 1.i := 1; p := 0; w := 0; 2.for j := 1 to n do xj := 0; 3.while (W < M) and (i ≤ n) do 4. if (W + wi) ≤ M then begin 5. xi := 1; W := W + wi; P := P + pi; i := i + 1 end 6. else begin 7. xi := (M-W)/wi; W := M; P := P + (xi*pi); i := i + 1 end; end;

28 28 i12345 wi pi pi/wi23/1124/1215/813/716/9 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) = /8 =

29 29 X = (1,0,1,1,-) B = 51 Curr_W = 26 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 X = (1,0,-,-,-) B = 51 Curr_W = 11 X = (1,1,0,-,-) B = Curr_W = 23 X = (1,1,0,0,-) B = Curr_W = 23 X = (1,0,1,-,-) B = 51 Curr_W = 11 X = (1,1,-,-,-) B = Curr_W = 23 X = (1,-,-,-,-) B = Curr_W = 11 X = (0,-,-,-,-) B = < 51 Curr_W = 0 X = (-,-,-,-,-) B = Curr_W = 0

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

31 31

32 32

33 33

34 34

35 35

36 36

37 37 Akhirnya…

38 38 Sudoku


Download ppt "1 Pertemuan 10: Teknik Backtracking Pengertian Cara kerja Contoh-contoh masalah."

Presentasi serupa


Iklan oleh Google