My first Magazine pemrograman-kompetitif-dasar | Page 70

6 Greedy Gambar 6.12: Langkah 7: Memilih interval h13, 14i. Gambar 6.13: Langkah 8: Sudah tidak ada pilihan tersedia. Langkah selesai. Dengan melakukan proses tersebut, kita bisa mendapatkan 4 interval. Tidak ada cara lain yang memberikan hasil lebih optimal. Implementasi dari algoritma tersebut dapat dilihat pada Algoritma 26: Algoritma 26 Penyelesaian activity selection. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: function SOLVE A CTIVITY S ELECTION (a, N) SORT B Y E ND T IME (a, N) . Urutkan a secara menaik berdasarkan a[i].end selectedCount ← 0 startTime ← 0 for i ← 1, N do if (a[i].start ≥ startTime) then selectedCount ← selectedCount + 1 startTime ← a[i].end end if end for return selectedCount end function Mari kita analisis kompleksitas dari algoritma tersebut. Mengurutkan aktivitas berdasarkan waktu berakhirnya dapat dilakukan dalam O(N log N). Setelah diurutkan, pemilihan aktivitas dapat dilakukan dalam O(N). Maka, kompleksitas akhirnya adalah O(N log N). 6.5 Permasalahan pada Algoritma Greedy Greedy choice memungkinkan kita untuk memilih suatu keputusan yang dijamin akan mengha- silkan solusi optimal, tanpa peduli ke depannya seperti apa. Hal ini memberi kesan "rakus", yaitu hanya mementingkan masalah yang sedang dihadapi dan selalu mengambil keputusan terbaik saat ini. Inilah sebabnya teknik ini dinamakan greedy . Karena sifatnya yang "rakus", ada persoalan-persoalan yang tidak dapat diselesaikan dengan greedy . Perhatikan contoh soal berikut: 60