Algoritma Greedy ialah teknik pengoptimuman dalam Java pengaturcaraan yang dicirikan dengan memilih penyelesaian terbaik pada setiap langkah tanpa meninjau semula atau mempertimbangkan masa depan. Daripada memeriksa keseluruhan ruang keadaan, algoritma ini memilih pilihan semasa yang terbaik dan berharap ini akan membawa kepada penyelesaian optimum global.
Bagaimana Algoritma Tamak Berfungsi
-
Langkah 1: Mulakan dari keadaan awal.
-
Langkah 2: Pada setiap langkah, algoritma memilih pilihan terbaik antara pilihan yang tersedia berdasarkan fungsi penilaian.
-
Langkah 3: Algoritma bergerak ke keadaan baharu dengan memilih pilihan terbaik.
-
Langkah 4: Proses berterusan sehingga syarat penamatan dipenuhi atau tiada lagi pilihan untuk dipilih.
-
Langkah 5: Kembalikan penyelesaian yang ditemui.
Kelebihan dan Kekurangan Algoritma Greedy
Kelebihan:
- Kesederhanaan: Mudah difahami dan dilaksanakan.
- Kecekapan: Selalunya memerlukan kurang masa pengiraan dan ingatan berbanding beberapa algoritma pengoptimuman lain.
- Ideal untuk masalah suboptimum: Sesuai untuk masalah yang menganggap semua kemungkinan adalah terlalu kompleks.
Kelemahan:
- Tiada jaminan optimum global: Algoritma mungkin berhenti pada penyelesaian optimum tempatan tanpa mencari penyelesaian optimum global.
- Kekurangan pandangan jauh: Algoritma selalunya tidak mempertimbangkan akibat keputusan sebelumnya.
Contoh dan Penerangan
Contoh biasa Algoritma Greedy ialah mencari masalah "Kth Largest Element". Mari lihat bagaimana algoritma ini berfungsi:
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);
}
}
Dalam contoh di atas, kami menggunakan Algoritma Greedy untuk mencari elemen kedua terbesar dalam tatasusunan integer. Algoritma ini hanya mengisih tatasusunan dan mengembalikan elemen terbesar ke-k. Walaupun ia tidak dijamin sebagai optimum global, ia adalah penyelesaian yang agak baik untuk masalah ini.