NAMA : BARNABAS SEBASTIAN
KELAS : 1IA24
NPM : 52414038
Berikan contoh soal dan penyelesaian dengan menggunakan metode greedy dan jelaskan!
Metode 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
- Prinsip Utama Algoritma Greedy
Prinsip 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.
- Elemen Algoritma Greedy
Elemen-elemen yang digunakan dalam penerapan algoritma greedy antara lain :
1. Himpunan Kandidat
Himpunan yang berisi elemen pembentuk solusi.
2. Himpunan Solusi
Himpunan yang terpilih sebagai solusi persoalan.
3. Fungsi Seleksi
Fungsi yang memilih kandidat yang paling mungkin untuk mencapai solusi optimal.
4. Fungsi Kelayakan
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
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
Fungsi yang mengoptimalkan solusi.
- Contoh Soal Metode greedy
Himpunan Kandidat = C,
Himpunan Solusi = S,
Fungsi Seleksi = select(),
Fungsi Kelayakan = feasible(),
Fungsi Solusi = solution(), dan
Fungsi Obyektif = objective().
Pertanyaan:
Tuliskan Skema umum dari algoritma greedy pada soal diatas
Jawab:
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.
Berikan contoh soal dan penyelesaian dengan menggunakan divide dan conquer dan jelaskan!
Algoritma Divide and Conquer merupakan algoritma yang sangat populer di dunia Ilmu Komputer. Divide and Conquer merupakan algoritma yang berprinsip memecah-mecah permasalahan yang terlalu besar menjadi beberapa bagian kecil sehingga lebih mudah untuk diselesaikan. Langkah-langkah umum algoritma Divide and Conquer :
- Divide : Membagi masalah menjadi beberapa upa-masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil ( idealnya berukuran hampir sama ).
- Conquer : Memecahkan ( menyelesaikan ) masing-masing upa-masalah ( secara rekursif ).
- Combine : Menggabungkan solusi masing-masing upa-masalah sehingga membentuk solusi masalah semula.
Skema Umum Algoritma Divide and Conquer
- Contoh Soal Metode greedy
Ide dasar algoritma secara Divide and Conquer :
Ukuran table hasil
pembagian dapat dibuat cukup kecil sehingga mencari minimum dan maksimum dapat
diselesaikan (SOLVE) secara lebih mudah. Dalam hal ini, ukuran kecil yang
dipilih adalah 1 elemen atau 2 elemen.
Algoritma MinMaks :
1. Untuk kasus n = 1
atau n = 2,
SOLVE : Jika n = 1, maka min
= maks = An. Jika n = 2, maka bandingkan kedua elemen untuk menentukan min dan
maks.
2. Untuk kasus n > 2,
DIVIDE : Bagi dua table A
secara rekursif menjadi dua bagian yang berukuran sama, yaitu bagian kiri dan
bagian kanan.
CONQUER : Terapkan algoritma
Divide and Conquer untuk masing-masing bagian, dalam hal ini min dan maks dari
table bagian kiri dinyatakan dalam peubah min1 dan maks1, dan min dan maks dari
table bagian kanan dinyatakan dalam peubah min2 dan maks2.
COMBINE : Bandingkan min1 dan
min2 untuk menentukan min table A, serta bandingkan maks1 dan maks2 untuk
menentukan maks table A.
Penyelesaian dengan Algoritma Divide and
Conquer secara umum :
=======================================================
a. Asumsi
: n = 2k dan titik-titik diurut berdasarkan absis (x).
b.
Algoritma Closest Pair :
- SOLVE :
jika n = 2, maka jarak kedua titik dihitung langsung dengan rumus Euclidean.
- DIVIDE
: Bagi titik-titik itu ke dalam dua bagian, PLeft dan PRight, setiap bagian
mempunyai jumlah titik yang sama
- CONQUER
:Secara rekursif, terapkan algoritma D-and-C pada masingmasing bagian.
-
Pasangan titik yang jaraknya terdekat ada tiga kemungkinan letaknya :
Pasangan
titik terdekat terdapat di bagian PLeft.
Pasangan
titik terdekat terdapat di bagian PRight.
Pasangan
titik terdekat dipisahkan oleh garis batas L, yaitu satu titik di PLeft dan
satu titik di PRight.
Jika
kasusnya adalah (c), maka lakukan tahap COMBINE untuk mendapatkan jarak dua
titik terdekat sebagai solusi persoalan semula.