My first Magazine pemrograman-kompetitif-dasar | Page 67
6.3 Greedy Choice
sub persoalan
^
a x .start
^
a x .end
Gambar 6.1: Subpersoalan pada activity selection.
Bagaimana caranya menemukan subpersoalan dari activity selection ? Diberikan daftar
kegiatan yang dinomori 1 sampai N. Kita asumsikan daftar ini terurut berdasarkan nilai a i .start.
Asumsikan kegiatan pertama yang kita ikuti adalah kegiatan ke-x. Maka, kegiatan selanjutnya
yang diikuti haruslah memiliki waktu awal ≥ a x .end. Jika j adalah nilai terkecil yang memenuhi
a j .start ≥ a x .end, maka kita bisa mendapatkan subpersoalan activity selection dengan kegiatan
dari j sampai N, seperti yang diilustrasikan pada Gambar 6.1.
6.3 Greedy Choice
Persoalan yang dapat dicari subpersoalannya belum tentu dapat diselesaikan dengan teknik
greedy . Pada setiap subpersoalan, harus terdapat langkah yang bisa dilakukan yang mana dapat
menghasilkan solusi optimal pada subpersoalan tersebut, atau biasa disebut greedy choice .
Pada persoalan activity selection, ada beberapa langkah yang dapat dilakukan, diantaranya
memilih aktivitas dengan waktu mulai paling awal, aktivitas dengan durasi tersingkat, ataupun
aktivitas dengan waktu akhir paling awal. Namun, tidak semua pilihan tersebut merupakan pilihan
yang optimal.
• Memilih aktivitas dengan waktu mulai paling awal.
Gambar 6.2: Kasus yang mana memilih aktivitas dengan waktu mulai paling awal tidak optimal.
Sekilas, pemilihan ini merupakan langkah yang optimal. Namun, bisa jadi ada aktivitas
yang mulai lebih awal, tetapi memiliki durasi yang sangat panjang sehingga menyita waktu,
seperti yang diilustrasikan pada Gambar 6.2. Dengan kata lain, pilihan ini tidak selalu
menghasilkan solusi optimal.
• Memilih aktivitas dengan durasi paling singkat.
Gambar 6.3: Kasus yang mana memilih aktivitas dengan durasi tersingkat tidak optimal.
Serupa dengan pemilihan sebelumnya, ternyata pemilihan ini tidak menjamin solusi yang
57