AAL Presentasi Kelompok

  • View
    230

  • Download
    2

Embed Size (px)

DESCRIPTION

Algoritma dijsktra, bellman, warshall

Text of AAL Presentasi Kelompok

Greedy Method

Greedy MethodAlgoritma dalam problem optimasi umumnya melalui serangkaian langkah dengan sejumlah pilihan di tiap langkahnya.Penggunaan dynamic programming untuk menentukan pilihan terbaik dalam problem optimasi kadang kala terlalu berlebihan, karena terkadang masih ada algoritma yang lebih sederhana dan efisien.Algoritma greedy selalu mengambil keputusan yang terbaik di suatu waktu, atau dalam hal ini mengambil pilihan yang optimal dalam lingkup local dengan harapan pilihan tersebut berujung pada solusi optimal di lingkup global.Algoritma greedy tidak selalu menghasilkan solusi yang optimal, meski demikian sebagian besar problem dapat diselesaikan dengan algoritma ini.Greedy solve locallyWell see a problem for which they do. Then well look at some general characteristics of when greedy algorithms give optimal solutions.1Contoh 1: tersedia banyak koin 1, 5, 10, 25

Uang senilai A = 32 dapat ditukar dengan banyak cara berikut: 32 = 1 + 1 + + 1 (32 koin) 32 = 5 + 5 + 5 + 5 + 10 + 1 + 1(7 koin) 32 = 10 + 10 + 10 + 1 + 1(5 koin) dstMinimum: 32 = 25 + 5 + 1 + 1 (4 koin)Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah; pada setiap langkah:1. mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan (prinsip take what you can get now!)

2. berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global.Tinjau masalah penukaran uang:

Strategi greedy: Pada setiap langkah, pilihlah koin dengan nilai terbesar dari himpunan koin yang tersisa.

Misal: A = 32, koin yang tersedia: 1, 5, 10, dan 25 Langkah 1: pilih 1 buah koin 25 (Total = 25)Langkah 2: pilih 1 buah koin 5 (Total = 25 + 5 = 30)Langkah 3: pilih 2 buah koin 1 (Total = 25+5+1+1= 32)

Solusi: Jumlah koin minimum = 4 (solusi optimal!) Contoh 2: tinjau masalah penukaran uang.

(a) Koin: 5, 4, 3, dan 1 Uang yang ditukar = 7.Solusi greedy: 7 = 5 + 1 + 1 ( 3 koin) tidak optimalSolusi optimal: 7 = 4 + 3( 2 koin)

(b) Koin: 10, 7, 1 Uang yang ditukar: 15 Solusi greedy: 15 = 10 + 1 + 1 + 1 + 1 + 1(6 koin) Solusi optimal: 15 = 7 + 7 + 1(hanya 3 koin)

(c) Koin: 15, 10, dan 1Uang yang ditukar: 20Solusi greedy: 20 = 15 + 1 + 1 + 1 + 1 + 1(6 koin)Solusi optimal: 20 = 10 + 10(2 koin)

Untuk sistem mata uang dollar AS, euro Eropa, dan crown Swedia, algoritma greedy selalu memberikan solusi optimum.

Contoh: Uang $6,39 ditukar dengan uang kertas (bill) dan koin sen (cent), kita dapat memilih:- Satu buah uang kertas senilai $5- Satu buah uang kertas senilai $1- Satu koin 25 sen- Satu koin 10 sen- Empat koin 1 sen

$5 + $1 + 25c + 10c + 1c + 1c + 1c + 1c = $6,39 Penyelesaian dengan algoritma greedyStrategi greedy: Pada setiap langkah, pilih koin dengan nilai terbesar dari himpunan koin yang tersisa.

Contoh 3: Tiga pelanggan dengant1 = 5,t2 = 10, t3 = 3,

Enam urutan pelayanan yang mungkin:============================================UrutanT ============================================ 1, 2, 3:5 + (5 + 10) + (5 + 10 + 3 ) = 381, 3, 2: 5 + (5 + 3) + (5 + 3 + 10) = 312, 1, 3:10 + (10 + 5) + (10 + 5 + 3) = 432, 3, 1:10 + (10 + 3) + (10 + 3 + 5) = 413, 1, 2:3 + (3 + 5) + (3 + 5 + 10) = 29 (optimal)3, 2, 1:3 + (3 + 10) + (3 + 10 + 5) = 34============================================Contoh 5. w1 = 100; p1 = 40; w2 = 50; p2 = 35; w3 = 45; p3 = 18; w4 = 20; p4 = 4; w5 = 10; p5 = 10;w6 = 5; p6 = 2Kapasitas knapsack K = 100

Ketiga strategi gagal memberikan solusi optimal!Contoh 6. w1 = 18; p1 = 25; w2 = 15; p1 = 24w3 = 10; p1 = 15 Kapasitas knapsack K = 20

Solusi optimal: X = (0, 1, 1/2) yang memberikan keuntungan maksimum = 31,5.Activity-Selection ProblemPenjadwalan aktivitas yang membutuhkan pemanfaatan sumberdaya umum secara eksklusif. (contohnya ruangan kelas)Tujuan: menentukan ukuran maksimum dari himpunan aktivitas yang saling compatible.Himpunan S = {a1, a2 , , an} dengan n aktivitas yang memerlukan pemanfaatan sumberdaya umum secara eksklusif.Tiap aktivitas ai memiliki si = waktu mulai dan fi = waktu selesai yang berlangsung dalam half-open interval [si, fi).Aktivitas ai dan aj saling compatible jika interval [si,fi) dan [sj,fj) tidak overlap.Aktivitas diasumsikan terurut berdasarkan waktu finish secara increasing:f1 f2 ... fn-1 fn

0 si < fi < . Finite numbersai and aj is compatible if si fj and sj fiSorting waktu finish = (n lg n)

Note: Could have many other objectives:Schedule room for longest time.Maximize income rental fees.

11

S Terurut Berdasarkan Waktu SelesaiUkuran maksimum dari himpunan yang saling compatible:{a1,a3,a6,a8}, Bisa juga {a2,a5,a7,a9}

S Terurut Berdasarkan Waktu SelesaiUkuran maksimum dari himpunan yang saling compatible:{a1,a3,a6,a8}, dan {a2,a5,a7,a9}Greedy Algorithm vs Dynamic Prog.Greedy AlgorithmDynamic ProgrammingMenentukan sembarang pilihan yang (terlihat) baik dan menyelesaikan subproblem yang tersisaPilihan didasarkan pada pilihan sebelumnyaMembuat pilihat terlebih dahulu, kemudian menyelesaikan masalahDiselesaikan dengan cara top-downMenentukan pilihan untuk setiap stepPilihan didasarkan pada masing-masing solusi subproblemMenyelesaikan masalah terlebih dahulu, kemudian membuat pilihanDiselesaikan dengan cara bottom-up14Illustration Knapsack problem

Contoh Kasus KnapsackW1 = 1 kg P1 = $10 , W2 = 1 kg P2 = $1W3 = 1 kg P3 = $2 , W4 = 2 kg P4 = $2W5 = 12kg P5= $4, Kapasitas Knapsack = 15 kg

Solusi Optimal X = (1,0,1,0,1)Greedy by profit memberikan solusi optimal

Property ObjekGreedy bySolusi Optimaliwipipi/wiweightprofitdensity111010111121111010312211114221101051240.330101Total Bobot514514Total Keuntungan15161516Penyelesaian dengan GreedyGreedy by Profit

Pada setiap langkah Knapsack diisi dengan obyek yang mempunyai keuntungan terbesar.Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang paling menguntungkan terlebih dahulu.

Pertama kali dilakukan adalah menurutkan secara menurun obyek-obyek berdasarkan profitnya . Kemudian obyek-obyek yang dapat ditampung oleh knapsack diambil satu persatu sampai knapsack penuh atau (sudah tidak ada obyek lagi yang bisa dimasukan).

Penyelesaian dengan GreedyContoh Soal 1Data awal :

w1 = 6; p1 = 12 w2 = 5; p2 = 15 w3 = 10; p3 = 50 w4 = 5; p4 = 10

Kapasitas knapsack W = 16

Penyelesaian dengan GreedyGreedy by Wight

Pada setiap langkah, knapsack diisi dengan objek yang mempunyai berat paling ringan. Strategi ini mencoba memaksimumkan keuntungan dengan memasukan sebanyak mungkin objek kedalam knapsack.

Pertama kali yang dilakukan adalah mengurutkan secara menaik objek-objek berdasarkan weight-nya. Kemudian obyek-obyek yang dapat ditampung oleh knapsack diambil satu persatu sampai knapsack penuh atau (sudah tidak ada obyek lagi yang bisa dimasukan).

Penyelesaian dengan GreedyData awal :

w1 = 6; p1 = 12 w2 = 5; p2 = 15 w3 = 10; p3 = 50 w4 = 5; p4 = 10

Kapasitas knapsack W = 16

Penyelesaian dengan GreedyGreedy By Density

Pada setiap langkah, knapsack diisi dengan obyek yang mempunyai densitas terbesar (perbandingan nilai dan berat terbesar).Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang mempunyai keuntungan per unit berat terbesar.Pertama kali yang dilakukan adalah mencari nilai profit per unit/ density dari tiap-tiap objek. Kemudian obyek-obyek diurutkan berdasarkan densitasnya.Kemudian obyek-obyek yang dapat ditampung oleh knapsack diambil satu persatu sampai knapsack penuh atau (sudah tidak ada obyek lagi yang bisa dimasukan).

Penyelesaian dengan GreedyData awal :

w1 = 6; p1 = 12 w2 = 5; p2 = 15 w3 = 10; p3 = 50 w4 = 5; p4 = 10

Kapasitas knapsack W = 16

Penyelesaian dengan GreedyPerbandingan hasil :

Solusi optimal: X = (0, 1, 1, 0) Greedy by profit dan greedy by density memberikan solusi optimal!Prefix codePrefix code adalah kode dimana tidak ada satu codeword yang merupakan prefix dari codeword yang lain. Dalam pembahasan, kita selalu mengacu pada prefix code.Encoding=dengan menggabungkan karakter .Contoh:bad=101.0.111DECODING11111010111=111.1101.0.111=

010110011111011100Representasi dengan TreeUntuk mempermudah proses decoding, kode bisa digambar dengan binary treeLeft child =0Right child=1 Kode yang optimal selalu direpresentasikan dengan full binary tree, dimana setiap node bukan daun selalu mempunyai dua anak.Dengan sifat dari binary tree, maka jika kita mempunyai alphabet C yang berisi karakter-karakter yang akan diambil, makaPohon akan mempunyai |C| daun dan|C|-1 internal node

Membangun Huffman CodePseudocode

Running time = O(n lg n)

Penjabaran algoritmaStep 1: ambil x dan y dari alphabet, dimana x dan y adalah karakter dengan frequensi terkecil. Buat subtree yang berisi x dan y sebagai anak dan z sebagai parentStep 2: atur frequensi z f(z)=f(x) + f(y)Hilangkan x dan y dari queue dan masukkan subtree z ke dalam queueUlangi langkah 2 sampai tinggal tersisa satu symbolPohon hasil dari metode di atas adalah Huffman codeABCDEFFrequency(dalam ribu)4513121695Panjang bervariasi010110011111011100

Misalnya sebuah berkas berisi 100.000 karakter dengan frekuensi kemunculan karakter dalam data dengan 3 bit kode untuk setiap karakternya

Maka untuk menyimpan data di dalam berkas tersebut, kita membutuhkan 300.000 karakter bit. Bila menggunakan kode Huffman:

Untuk menyimpan data di dalam berkas berisi 100.000 karakter, kita membutuhkan : ((0.45x1)+(0.13x3)+(0.12x3)+(0.16x3)+(0.09x