Algoritma Greedy (Greedy Algorithm) di Java: Dijelaskan dengan Contoh

Algoritma Greedy merupakan suatu teknik optimasi dalam Java pemrograman yang ditandai dengan pemilihan solusi terbaik pada setiap langkah tanpa meninjau kembali atau mempertimbangkan masa depan. Daripada memeriksa seluruh ruang keadaan, algoritma ini memilih opsi terbaik saat ini dan berharap bahwa hal ini akan menghasilkan solusi optimal global.

Cara Kerja Algoritma Greedy

  1. Langkah 1: Mulai dari keadaan awal.

  2. Langkah 2: Pada setiap langkah, algoritme memilih opsi terbaik di antara opsi yang tersedia berdasarkan fungsi evaluasi.

  3. Langkah 3: Algoritme berpindah ke keadaan baru dengan memilih opsi terbaik.

  4. Langkah 4: Proses berlanjut hingga kondisi terminasi terpenuhi atau tidak ada lagi opsi yang dapat dipilih.

  5. Langkah 5: Kembalikan solusi yang ditemukan.

Kelebihan dan Kekurangan Algoritma Greedy

Keuntungan:

  • Kesederhanaan: Mudah dipahami dan diterapkan.
  • Efisiensi: Seringkali memerlukan lebih sedikit waktu komputasi dan memori dibandingkan dengan beberapa algoritma optimasi lainnya.
  • Ideal untuk permasalahan suboptimal: Cocok untuk permasalahan yang mempertimbangkan semua kemungkinan terlalu rumit.

Kekurangan:

  • Tidak ada jaminan optimal global: Algoritme mungkin berhenti pada solusi optimal lokal tanpa menemukan solusi optimal global.
  • Kurangnya pandangan ke depan: Algoritme sering kali tidak mempertimbangkan konsekuensi dari keputusan sebelumnya.

Contoh dan Penjelasan

Contoh umum dari Algoritma Greedy adalah menemukan masalah "Elemen Terbesar ke-K". Mari kita lihat cara kerja algoritma ini:

import java.util.Arrays;  
  
public class GreedyAlgorithmExample {  
    static int findKthLargest(int[] nums, int k) {  
        Arrays.sort(nums); // Sort the array  
        return nums[nums.length- k]; // Return the kth largest element  
    }  
  
    public static void main(String[] args) {  
        int[] nums = {3, 1, 2, 4, 5};  
        int k = 2;  
        int result = findKthLargest(nums, k);  
        System.out.println("The " + k + "th largest element is: " + result);  
    }  
}  

Pada contoh di atas, kita menggunakan Algoritma Greedy untuk mencari elemen terbesar kedua dalam array bilangan bulat. Algoritma ini hanya mengurutkan array dan mengembalikan elemen terbesar ke-k. Meskipun tidak dijamin menjadi optimal global, namun ini merupakan solusi yang relatif baik untuk masalah ini.