Strategi Algoritma

13
RESUME KULIAH STRATEGI ALGORITMA RINI ANGGRAINI S H121 11 010 LABORATORIUM KOMPUTASI

Transcript of Strategi Algoritma

Page 1: Strategi Algoritma

RESUME KULIAH

STRATEGI ALGORITMA

RINI ANGGRAINI S

H121 11 010

LABORATORIUM KOMPUTASI

JURUSAN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS HASANUDDIN

MAKASSAR

2012

Page 2: Strategi Algoritma

STRATEGI ALGORITMA

Algoritma greedy merupakan salah satu dari sekian banyak algoritma yang sering di pakai dalam implementasi sebuah system atau program yang menyangkut mengenai pencarian “optimasi”. Strategi algoritma adalah pendekatan umum untuk memecahkan masalah secara logitmis yang dapat diterapkan pada beraneka ragam masalah guna mencapai tujuan. Tujuan strategi algoritma adalah mencari algoritma yang mangkus untuk memecahkan masalah. Ukuran kemangkusan algoritma dinyatakan dengan notasi O, Ω, dan Θ.

Dua alasan mempelajari strategi algoritmik:1. memberikan panduan untuk merancang algoritma bagi masalah baru.2. mengklasifikasikan algoritma berdasarkan gagasan perancangan yang mendasarinya.

A. Klasifikasi Strategi Algoritma

1. Strategi solusi langsung (direct solution strategies) Algoritma Greedy

Metode/Algoritma Greedy merupakan algoritma yang membentuk solusi langkah per langkah. Pada setiap langkah tersebut akan dipilih keputusan yang paling optimal. Keputusan tersebut tidak perlu memperhatikan keputusan selanjutnya yang akan diambil, dan keputusan tersebut tidak dapat diubah lagi pada langkah selanjutnya.

a. Prinsip Utama Algoritma GreedyPrinsip utama algoritma greedy adalah ?take what you can get now!?. Maksud dari prinsip tersebut adalah sebagai berikut: Pada setiap langkah dalam algoritma greedy, kita ambil keputusan yang paling optimal untuk langkah tersebut tanpa memperhatikan konsekuensi pada langkah selanjutnya. Kita namakan solusi tersebut dengan optimum lokal. Kemudian saat pengambilan nilai optimum lokal pada setiap langkah, diharapkan tercapai optimum global, yaitu tercapainya solusi optimum yang melibatkan keseluruhan langkah dari awal sampai akhir.

b. Elemen Algoritma GreedyElemen-elemen yang digunakan dalam penerapan algoritma greedy antara lain : Himpunan Kandidat

Himpunan yang berisi elemen pembentuk solusi.

Himpunan Solusi Himpunan yang terpilih sebagai solusi persoalan.

Page 3: Strategi Algoritma

Fungsi SeleksiFungsi yang memilih kandidat yang paling mungkin untuk mencapai solusi optimal.

Fungsi KelayakanFungsi 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.

Fungsi SolusiFungsi yang mengembalikan nilai boolean. True jika himpunan solusi yang sudah tebentuk merupakan solusi yang lengkap; False jika himpunan solusi belum lengkap.

Fungsi ObjektifFungsi yang mengoptimalkan solusi.

c. Skema Umum Algoritma Greedy

Misal kita mengasumsikan elemen algoritma greedy sebagai berikut :Himpunan Kandidat = C,Himpunan Solusi = S,Fungsi Seleksi = select(),Fungsi Kelayakan = feasible(),Fungsi Solusi = solution(), danFungsi Obyektif = objective().

Skema umum dari algoritma greedy dapat kita tuliskan : 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.

Periksa apakah S yang sudah terbentuk telah memberikan solusi yang lengkap (dengan solution()). Jika ya, berhenti; jika tidak, ulangi dari langkah 2.

Page 4: Strategi Algoritma

Di dalam mencari sebuah solusi (optimasi) algoritma greedy hanya memakai 2 buah macam persoalan Optimasi,yaitu:a. Maksimasi (maxizimation)b. Minimasi (minimization)

Persoalan maksimasi( MasalahPenukaranUang): Diberikan uang senilai A. Tukar A dengan koin-koin yang ada. Berapa jumlah minimum koin yang diperlukan untuk penukaran tersebut?

Persoalan minimasiContoh1: tersedia banyak koin 1, 5, 10, 25Uang 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)…dst

•Minimum: 32 = 25 + 5 + 1 + 1 (4 koin)

Algoritma greedy dalam menyelesaikan masalah dengan langkah per langkah “bertahap”

Dengan definisi, Pada setiap langkah algoritma greedy :1. mengambil pilihan yang terbaik yang Dapat diperoleh pada saat itu tanpa

Memperhatikan konsekuensi kedepan (prinsip“take what you can get now!”)

2. berharap bahwa dengan memilih optimum Local pada setiap langkah akan berakhir dengan optimum global.

2. Strategi solusi bawah-atas (bottom-up solution strategies) Dynamic Programming.

Dalam matematika dan ilmu komputer, pemrograman dinamis adalah metode untukmemecahkan masalah yang kompleks dengan melanggar mereka ke dalam  subproblems yang lebih sederhana. Hal ini berlaku untuk masalah menunjukkan sifat overlapping subproblem yang hanya sedikit lebih kecil dan optimal substruktur. Ketika diterapkan, metode ini membutuhkan waktu jauh lebih sedikit daripada metode naïf.

Ide kunci di balik pemograman dinamis adalah cukup sederhana. Secara umum, untuk memecahkan persoalan yang diberikan, kita perlu untuk memecahkan

Page 5: Strategi Algoritma

berbagai masalah (submasalah), kemudian menggabungkan solusi dari submasalah untuk mencapai solusi secara keseluruhan. Seringkali, banyak dari submasalah untuk mencapai solusi secara keseluruhan. Seringkali, banyak dari submasalah ini benar-benar sama. Pendekatan pemograman dinamis berusaha untuk memecahkan setiap submasalah hanya sekali, sehingga mengurangi jumlah perhitungan . hal ini sangat berguna ketika jumlah subproblem mengulangi secara eksponensial.

Dynamic Programing adalah 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:1. terdapat sejumlah berhingga pilihan yang mungkin,2. solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya,3. kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah

pilihan yang harus dipertimbangkan pada suatu tahap. Tinjau graf di bawah ini. Kita ingin menemukan lintasan terpendek dari 1 ke 10.

Prinsip Optimalitas• Pada program dinamis, rangkaian keputusan yang optimal dibuat dengan

menggunakan Prinsip Optimalitas. • Prinsip Optimalitas: jika solusi total optimal, maka bagian solusi sampai tahap ke-k

juga optimal.

Page 6: Strategi Algoritma

• Prinsip optimalitas berarti bahwa jika kita bekerja dari tahap k ke tahap k + 1, kita dapat menggunakan hasil optimal dari tahap k tanpa harus kembali ke tahap awal.

• ongkos pada tahap k +1 = (ongkos yang dihasilkan pada tahap k ) + (ongkos dari tahap k ke tahap k + 1)

• Dengan prinsip optimalitas ini dijamin bahwa pengambilan keputusan pada suatu tahap adalah keputusan yang benar untuk tahap-tahap selanjutnya.

• Pada metode greedy hanya satu rangkaian keputusan yang pernah dihasilkan, sedangkan pada metode program dinamis lebih dari satu rangkaian keputusan. Hanya rangkaian keputusan yang memenuhi prinsip optimalitas yang akan dihasilkan.

Karakteristik Persoalan Program Dinamis1. 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.

Graf multitahap (multistage graph). Tiap simpul di dalam graf tersebut menyatakan status, sedangkan V1, V2, … menyatakan tahap.

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.

Page 7: Strategi Algoritma

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.

Dua pendekatan Program Dinamis (dynamic programming) Dua pendekatan yang digunakan dalam PD: maju (forward atau up-down)

dan mundur (backward atau bottom-up). Misalkan x1, x2, …, xn menyatakan peubah (variable) keputusan yang harus

dibuat masing-masing untuk tahap 1, 2, …, n. Maka, 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.

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.

Langkah-langkah Pengembangan Algoritma Program Dinamis (dynamic programming). Karakteristikkan struktur solusi optimal. Definisikan secara rekursif nilai solusi optimal. Hitung nilai solusi optimal secara maju atau mundur. Konstruksi solusi optimal.

Contoh Kasus:Masalahnya adalah menentukan rute yang paling aman dari state 1 sampai state 10. Ini sama saja dengan menentukan rute yang meminimumkan harga polis. Alasan yang diperlukan untuk mendapatkan penyelesaian program dinamik disajikan dalam langkah-langkah berikut.

Penyelesaian dengan Program Dinamis Mundur

Page 8: Strategi Algoritma

Misalkan x1, x2, …, x4 adalah simpul-simpul yang dikunjungi pada tahap k (k = 1, 2, 3, 4).

Maka rute yang dilalui adalah 1x1x2x3x4 , yang dalam hal ini x4 = 10.

Pada persoalan ini,

1. Tahap (k) adalah proses memilih simpul tujuan berikutnya (ada 4 tahap). 2. Status (s) yang berhubungan dengan masing-masing tahap adalah simpul-

simpul di dalam graf.Relasi rekurens berikut menyatakan lintasan terpendek dari status s ke x4

pada tahap k:

f 4 (s )=csx4 (basis)

f k( s )=minxk

¿¿, (rekurens)

k = 1, 2, 3

Keterangan:

a. xk : peubah keputusan pada tahap k (k = 1, 2, 3).

csx k : bobot (cost) sisi dari s ke xfk(s, xk) : total bobot lintasan dari s ke xk

b. fk(s) : nilai minimum dari fk(s, xk) Tujuan program dinamis mundur: mendapatkan f1(1) dengan cara mencari f4(s), f3(s), f2(s) terlebih dahulu.

Tahap 4:

f 4 (s )=csx4

Catatan: xk* adalah

nilai xk yang meminimumkan fk(s,

xk).

Tahap 3:

f 3( s )=minx3

¿¿

S

Solusi Optimum

f4(s) x4*

8 3 10

9 4 10

Page 9: Strategi Algoritma

x3

s

f3(s, x3) = cs,x3 + f4(x3) Solusi Optimum

8 9 f3(s) x3*

5 4 8 4 8

6 9 7 7 9

7 6 7 6 8

Tahap 2:

f 2( s )=minx2

¿¿

x2

s

f2(s, x2) = cs,x2 + f3(x2) Solusi Optimum

5 6 7 f2(s) x2*

2 11 11 12 11 5 atau 6

3 7 9 10 7 5

4 8 8 11 8 5 atau 6

Tahap 1:

f 1( s )=minx1

¿¿

x1

s

f1(s, x1) = cs,x1 + f2(x1) Solusi Optimum

2 3 4 f1(s) x1*

1 13 11 11 11 3 atau 4

Solusi optimum dapat dibaca pada tabel di bawah ini:

x1 x2 x3 x4 Panjang Lintasan Terpendek

Page 10: Strategi Algoritma

1

3

4

5

5

6

8

8

9

10

10

10

11

11

11

Jadi ada tiga lintasan terpendek dari 1 ke 10, yaitu

1 3 5 8 101 4 5 8 10

1 4 6 9 10

yang mana panjang ketiga lintasan tersebut sama, yaitu 11.