Anda di halaman 1dari 16

TUGAS RESUME MATERI KULIAH ALGORITMA DAN STRUKTUR DATA STRATEGI ALGORITMA

NAMA NIM

: HERIANTI : H12111003

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM JURUSAN MATEMATIKA PROGRAM STUDI STATISTIKA UNIVERSITAS HASANUDDIN MAKASSAR 2012

A.

Pengertian Strategi Strategi adalah rencana yang cermat mengenai kegiatan untuk mencapai sasaran tertentu (khusus). Algoritma adalah urutan langkah untuk

memecahkan suatu masalah. Strategi algoritmik adalah kumpulan metode (dinyatakan dalam suatu urutan langkah-langkah penyelesaian) untuk memecahkan masalah guna mencapai tujuan yang ditentukan. Secara umum, strategi pemecahan masalah dibagi menjadi: 1. Strategi solusi langsung (direct solution strategies): a. Algorithma Brute Force b. Algorithma Greedy

2. Strategi berbasis pencarian pada ruang status (state-space base strategies): a. Algorithma Backtracking b. Algorithma Branch & Bound

3. Strategi solusi atas-bawah (top-down solution strategies): Algorithma Devide and Conquer

4. Strategi solusi bawah-atas (down-top solution strategies): Dynamic Programming

Pada resume kali ini akan dibahas Metode Greedy dan Metode Dynamic Programming. B. Metode Greedy Metode greedy adalah metode yang digunakan untuk memecahkan persoalan optimasi, ada dua macam persoalan optimasi, yaitu maksimasi dan minimasi, artinya dengan metode greedy kita bemaksud mencari solusi terbaik, yaitu solusi yang benilai minimum atau maksimum dari sekumpulan alternatif solusi yang ada.

Elemen Algoritma Greedy Elemenelemen yang digunakan dalam penerapan algoritma greedy antara lain : 1. Himpunan Kandidat yaitu Himpunan yang berisi elemen pembentuk solusi. 2. Himpunan Solusi yaituHimpunan yang terpilih sebagai solusi persoalan. 3. Fungsi Seleksi yaitu Fungsi yang memilih kandidat yang paling mungkin untuk mencapai solusi optimal. 4. Fungsi Kelayakan yaitu Fungsi yang memeriksa apakah suatu kandidat yang dipilih dapat memberikan solusi yang layak. Maksudnya yaitu apakah kandidat tersebut bersama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala yang ada. 5. Fungsi Solusi yaitu Fungsi yang mengembalikan nilai boolean. True jika himpunan solusi yang sudah tebentuk merupakan solusi yang

lengkap; False jika himpunan solusi belum lengkap. 6. Fungsi Objektif yaitu Fungsi yang mengoptimalkan solusi.

Skema Umum Algoritma Greedy Misal kita mengasumsikan elemen algoritma greedysebagai berikut : Himpunan Kandidat = C, Himpunan Solusi = S, Fungsi Seleksi = select(), Fungsi Kelayakan = feasible(), Fungsi Solusi = solution(), dan Fungsi Obyektif = objective().

Skema umum dari algoritma greedy dapat kita tuliskan : 1. 2. 3. 4. Inisialisasi S dengan kosong. Pilih sebuah kandidat dari C (dengan select()). Kurangi C dengan kandidat yang telah terpilih di atas. Periksa apakah kandidat yang dipilih tersebut bersama sama dengan S membentuk solusi yang layak (dengan feasible()). Jika ya, masukkan kandidat ke S; jika tidak buang kandidat tersebut dan tidak perlu ditelaah lagi.

5. Periksa apakah S yang sudah terbentuk telah memberikan solusi yang lengkap(dengan solution()). Jika ya, berhenti; jika tidak, ulangi dari langkah 2.
function greedy(input C: himpunan_kandidat) himpunan_kandidat {Mengembalikan solusi dari persoalan optimasi dengan algoritma greedy Masukan: himpunan kandidat C Keluaran: himpunan solusi yang bertipe himpunan_kandidat} Deklarasi x : kandidat S : himpunan_kandidat Algoritma: S {} { inisialisasi S dengan kosong } while (not SOLUSI(S)) and (C {} ) do x SELEKSI(C) { pilih sebuah kandidat dari C} C C - {x}{ elemen himpunan kandidat berkurang satu } if LAYAK(S {x}) then S S {x} endif endwhile {SOLUSI(S) or C = {} } if SOLUSI(S) then return S else write(tidak ada solusi) endif

Algoritma greedy membentuk solusi langkah per langkah (step by step). Terdapat banyak pilihan yang perlu dieksplorasi pada setiap langkah solusi. Oleh karenaitu,pada setiap langkah harus dibuat keputusan yang terbaik dalam menentukan pilihan. Keputusan yang telah diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya. Pendekatan yang digunakan di dalam algoritma greedy adalah membuat pilihan yang tampaknya memberikan perolehan terbaik, yaitu dengan membuat pilihan optimum lokal (local optimum) pada setiap langkah dengan harapan bahwa sisanya mengarah ke solusi optimum global (global optimum) 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. 3. Pada setiap langkah diperoleh optimum lokal.Bila algoritma berakhir, kita berharap optimum lokal menjadi optimum global. Warning: Optimum global belum tentu merupakan solusi optimum (terbaik), tetapi sub-optimum atau pseudo-optimum. Alasan:

1. Algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada (sebagaimana pada metode exhaustive search). 2. Terdapat beberapa fungsi SELEKSI yang berbeda sehingga kita harus memilih fungsi yang tepat jika kita ingin algoritma menghasilkan solusi optiamal.

Jadi, pada sebagian masalah algoritma greedy tidak selalu berhasil memberikan solusi yang optimal.

Contoh pada masalah penukaran uang, elemen-elemen algoritma greedy-nya adalah: Himpunan kandidat: himpunan koin yang merepresentasikan nilai 1, 5, 10, 25, paling sedikit mengandung satu koin untuk setiap nilai. Himpunan solusi: total nilai koin yang dipilih tepat sama jumlahnya dengan nilai uang yang ditukarkan. Fungsi seleksi: pilihlah koin yang bernilai tertinggi dari himpunan kandidat yang tersisa. Fungsi layak: memeriksa apakah nilai total dari himpunan koin yang dipilih tidak melebihi jumlah uang yang harus dibayar. Fungsi obyektif: jumlah koin yang digunakan minimum.

Contoh: (a) Koin: 5, 4, 3, dan 1 Uang yang ditukar = 7. Solusi dengan algoritma greedy: 7 = 5 + 1 + 1 ( 3 koin) tidak optimal Solusi yang optimal: 7 = 4 + 3 ( 2 koin) (b) Koin: 10, 7, 1 Uang yang ditukar: 15 Solusi dengan algoritma greedy: 15 = 10 + 1 + 1 + 1 + 1 + 1 (6 koin) tidak optimal Solusi yang optimal: 15 = 7 + 7 + 1 (hanya 3 koin) (c) Koin: 15, 10, dan 1 Uang yang ditukar: 20 Solusi dengan algoritma greedy: 20 = 15 + 1 + 1 + 1 + 1 + 1 (6 koin) tidak optimal Solusi optimal: 20 = 10 + 10 (2 koin) Contoh masalah sehari-hari yang menggunakan prinsip greedy: 1. Memilih beberapa jenis investasi (penanaman modal) 2. Mencari jalur tersingkat dari Bandung ke Surabaya

3. Memilih jurusan di Perguruan Tinggi 4. Bermain kartu remi

Kelebihan utama dari algoritma greedy adalah : a. Mudah diimplementasikan, algoritma greedy sangat mudah untuk

diimplementasikan pada persoalan-persoalan yang ada. b. Efisien, algoritma greedy merupakan algoritma yang sangat efisien karena algoritma ini selalu berusaha memilih hasil optimal. c. Prinsip pencarian lintasan terpendek memakai fungsi Seleksi dan itu berguna untuk menentukan jalan tersingkat untuk menuju suatu tempat. Sehingga, kita dapat sampai tepat waktu menuju tempat tujuan. Hasil analisis berdasarkan bobot-bobot yang berbeda, menunjukkan bahwa semakin banyak bobot yang diberikan, maka semakin akurat pula data yang dihasilkan. Sehingga menghasilkan waktu yang efisien.

Kekurangan algoritma Greedy: a. Algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada (sebagaimana pada metode exhaustive search). b. Pemilihan fungsi SELEKSI: Mungkin saja terdapat beberapa fungsi SELEKSI yang berbeda, sehingga kita harus memilih fungsi yang tepat jika kita ingin algoritma bekerja dengan benar dan menghasilkan solusi yang benar-benar optimum. Karena itu, pada sebagian masalah algoritma greedy tidak selalu berhasil memberikan solusi yang benar-benar optimum.

C.

Program dinamis (dynamic programming) Pemrograman dinamis istilah awalnya digunakan dalam 1940-an pemecahan masalah terbaik demi

oleh Richard Bellmanuntuk dimana salah satu

menggambarkan proses menemukan

kebutuhan untuk

satu keputusan

satu. Dengan 1953, ia disempurnakan ini untuk bersarang masalah

untuk makna

modern, mengacu khusus lebih besar, dan system persamaan

keputusan kecil dalam keputusan yang

lapangan itu kemudian diakui oleh

IEEE sebagai topik analisis dalam nama

dan rekayasa.Kontribusi Bellman adalah diingat Bellman, hasil pusat pemrogramandinamis optimasi dalam

yang menyatakan

kembali masalah oleh Bellman untuk juga

bentuk rekursif. Dinamika Katadipilih

menangkap aspek waktu bervariasi dari

masalah, dan

karenaterdengar mengesankan Pemrograman kata mengacu pada penggunaan metode untukmenemukan pelatihan atau program yang logistik.Penggunaan optimal, dalam ini adalah sama arti militer. jadwal untuk seperti yang dalam sinonim untuk

pemrograman linear optimasi matematika.

dan pemrograman frasamatematika, sebuah

Program dinamis (dynamic programming)

merupakan suatu metode

pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan. Pada penyelesaian persoalan dengan metode ini terdapat sejumlah berhingga pilihan yang mungkin, solusi pada

setiap tahap dibangun dari hasil solusi tahap sebelumnya, dan menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap. Krakteristik program dinamis adalah sebagai berikut: 1. Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya diambil satu keputusan 2. Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan dengan tahap tersebut. Secara umum, status merupakan bermacam kemungkinan masukan yang ada pada tahap tersebut. 3. Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya. 4. Ongkos (cost) pada suatu tahap meningkat secara teratur (steadily) dengan bertambahnya jumlah tahapan. 5. Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah berjalan dan ongkos pada tahap tersebut. 6. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan pada tahap sebelumnya. 7. Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk setiap status pada tahap k + 1. 8. Prinsip optimalitas berlaku pada persoalan tersebut.

Terdapat dua solusi pendekatan programa dinamis, yaitu pendekatan maju (forward atau up-down) dan pendekatan mundur (backward atau bottom-up). 1. Program dinamis maju. Program dinamis bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai tahap n. Runtunan peubah keputusan adalah x1, x2, , xn.

2. Program dinamis mundur. Program dinamis bergerak mulai dari tahap n, terus mundur ke tahap n 1, n 2, dan seterusnya sampai tahap 1. Runtunan peubah keputusan adalah xn, xn-1, , x1.

Konsep dasar programa dinamis adalah sebagai berikut: Berdasarkan prinsip optimisasi Bellman (1950): An optimal policy has the property that whatever the initial decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the first decision. Suatu masalah dapat dibagi menjadi beberapa tahap Dalam rangkaian keputusan yang telah diambil, hasil dari masing-masing terpengaruh pada hasil keputusan sebelumnya. Rangkaian keputusan yang diambil mesti membentuk kebijakan yang optimal secara keseluruhan. Bagi tahap persoalan yang masih tersisa kita diizinkan mengambil keputusan yang layak tanpa tergantung dari keputusan-keputusan yang telah diambil sebelumnya optimisasi prinsip. Prosedur pemecahan masalah dalam program dinamik dilakukan secara rekursif. Pada setiap tahap, nilai keadaan tahap sebelumnya merupakan masukan untuk tahap sekarang dan keluarannya menjadi masukan untuk tahap berikutnya. Pada setiap tahap kita diharuskan mengambil keputusan optimal. Kekurangan Metode dynamic progremming hanya satu, memori yang dibutuhkan lebih banyak karena anda menggunakan memo. Kelebihan metide dynamic programming yaitu: a. Selalu benar karena mencoba semua jalur yang mungkin b. Trading memory for speed (-memory +speed) Contoh kasus dengan penyelesaian menggunakan metode Greedy dan metode Dynamic Programming.

Jenis kotak yang akan dipilih untuk di masukkan ke kotak yang besar:

Selesaikan dengan metode greedy dan dynamic programming! 1. Solusi dengan metode greedy o Metode greedy : Memilih luas yang paling besar untuk mendapatkan luas sisa terkecil. Luas kotak : 35m x 15m = 525m2 Luar kotak A = 12 m2 Luas kotak B = 14 m2 Luas kotak C = 8m2 Luas kotak D = 16m2 Himpunan solusi feasible = {8, 12, 14, 16}

Kita ambil luas yang besar;


[ ]

Luas sisanya adalah 13m2 Pilih luas yang mungkin yang terbesar ; [ ]

Luas sisanya adalah 1 m2 ( Meskipun, sisanya optimal saya tidak dapat menemukan bentuk gambarnya) Jumlah kotak yang dapat dimasukkan yaitu 33 kotak. 32 kotak D dan 1 kotak A.

Metode greedy dengan memodifikasi kotaknya , dengan memilih luas yang paling besar. a. Kita gabungkan 4 kotak D sehingga terbentuk seperti dibawah. Kita anggap kotak di bawah adalah kotak E Kotak E dengan Luas = 8m x 8m = 64m2

b. Masukkan kotak yang mungkin masuk pada kotak yang berukuran 35 m x 15m. Kita masukkan kotak yang telah digabungkan yaitu kotak E

c. Menggabungkan lagi kotak yang mungkin terbentuk untuk mengisi kotak diatas yang belum terisi. Kita anggap kotak di bawah adalah kotak F dengan kotak yang digabungkan adalah kotak D dan C.
Luas kotak F = 8m x 6m = 48m2

d. Mengambil kotak yang mungkin dapat dimasukkan ke kotak yang kosong di atas. Yang dapat kita ambil hanya kotak C.
Luas kotak C = 4m x 2m = 8m2

e. Tidak ada lagi kotak yang dapat dimasukkan ke dalam kotak yang berukuran 35m x 15m = 525m2 sehingga jumlah kotak yang mengisi kotak tersebut adalah 35 kotak. Dengan 24 kotak D dan 11 kotak C. Sedangkan luas kotak yang tidak terisi dapat di hitung : Luas sisa = luas I + luas II + lias kotak III = (1 x 12) + (1 x 35) + (3 x 2) = 12 + 35 + 6 = 53 m2 Sisanya tidak optimal, itulah merupakan kekurangan dari metode Greey , banyak kemungkinan yang bisa kita ambil. 2. Solusi dengan Metode Dynamic Programming a. Membagi dua kotak tersebut seperti terlihat pada gambar berikut:

b. Membagi lima kotak di atas sehingga terlihat seperti pada gambar berikut:

c. Selanjutnya membagi lagi kotak yang di atas sehingga menbentuk seperti yang di bawah:

d. Mengisi kotak diatas sesuai kotak yang sudah digabungkan dengan bentuk seperti di bawah. Anggaplah kotak di bawah adalah kotak G . Luas kotak G : 7m x 4m = 28

e. Selanjutnya kotak yang belum terisi di atas dibagi lagi sehingga terbentuk

seperti pada gambar berikut.

f.

Kotak yang kosong di atas diisi kotak G seperti terlihat pada kotak di bawah

g. Kotak yang masih kosong di isi dengan kotak yang mungkin masuk pada kotak di atas. Kotak yang mungkin bisa masuk pada kotak di atas adalah kotak C. sehingga dapat dilihat seperti pada gambar berikut.

h. Kotak di atas tidak dapat lagi di isi kotak , maka kita dapat menghitung menghitung jumlah kotak yang terisi pada kotak di atas yaitu 37. 36 diantaranya kotak B dan sisanya kotak C. Dan sisanya dapat dihitung senagai berikut: Sisa Luas kotak = Luas I + Luas II = (4 x 1) + (3 x3) =4+9 = 13 m2 Jadi, kesimpulannya Metode Dynamic Programming lebih optimal dari pada Metode Greedy.

SUMBER
http://captainchrno.blogspot.com/2010/11/memahami-complete-search-greedy-dan.html http://elearningstikma.wordpress.com/2011/04/04/strategi-algoritma/ http://dhora-fifado.blogspot.com/2012/04/algoritma-greedy.html

http://www.scribd.com/document_downloads/direct/103782306?extension=pdf&ft=1349 876954&lt=1349880564&uahk=gZiazK/Jfe8Cmf/T119Y+iqXBvQ
http://amethystaiko.com/algoritma-greedy.html Sumber:mufidnilmada.staff.gunadarma.ac.id/.../files/.../Program+Dinamis.ppt http://fajarbax89.blogspot.com/2009/12/programa-dinamis.html http://yulianus-putra.blogspot.com/2012/03/sejarah-dynamic-programming.html www.mie.unja.ac.id/pustaka/risetop.ppt