Algoritma Carian Rawak (Random Search) dalam Java: Pengenalan, Cara Ia Berfungsi, Contoh

Algoritma Carian Rawak, juga dikenali sebagai carian Monte Carlo, ialah kaedah carian berdasarkan rawak. Daripada menyemak secara berurutan setiap elemen dalam tatasusunan data, algoritma ini secara rawak memilih beberapa elemen untuk diperiksa. Pendekatan ini menjimatkan masa dan sumber berbanding carian berurutan.

Bagaimana ia berfungsi

  1. Langkah 1: Mulakan dengan tatasusunan data yang anda ingin cari.

  2. Langkah 2: Pilih sebilangan elemen tertentu untuk diperiksa secara rawak.

  3. Langkah 3: Semak elemen yang dipilih untuk melihat sama ada ia sepadan dengan keadaan carian.

  4. Langkah 4: Jika elemen sepadan ditemui, kembalikan hasilnya; jika tidak, kembali ke Langkah 2.

  5. Langkah 5: Teruskan proses sehingga perlawanan ditemui atau bilangan maksimum percubaan dicapai.

Kelebihan dan kekurangan

Kelebihan:

  • Cekap Sumber: Menjimatkan masa dan memori, terutamanya untuk tatasusunan data yang besar.
  • Rawak: Tidak mudah diramal, sesuai untuk situasi yang memerlukan rawak.

Kelemahan:

  • Tiada Jaminan Kejayaan: Tiada jaminan bahawa algoritma akan menemui hasil yang diingini.
  • Mungkin Mengambil Masa yang Lama: Dalam kes yang paling teruk, algoritma boleh mengambil masa yang lebih lama daripada carian berjujukan.

Contoh dan Penerangan

Pertimbangkan contoh berikut menggunakan Algoritma Carian Rawak untuk mencari integer dalam tatasusunan:

import java.util.Random;  
  
public class RandomSearchExample {  
    static int randomSearch(int[] arr, int target) {  
        Random rand = new Random();  
        int maxAttempts = arr.length; // Maximum number of attempts  
        for(int i = 0; i < maxAttempts; i++) {  
            int randomIndex = rand.nextInt(arr.length); // Randomly select an index  
            if(arr[randomIndex] == target) {  
                return randomIndex; // Return the index if found  
            }  
        }  
        return -1; // Return -1 if not found  
    }  
  
    public static void main(String[] args) {  
        int[] numbers = {1, 5, 9, 3, 7};  
        int target = 3;  
        int result = randomSearch(numbers, target);  
        if(result != -1) {  
            System.out.println("Number " + target + " found at index " + result);  
        } else {  
            System.out.println("Number " + target + " not found in the array.");  
        }  
    }  
}  

Dalam contoh ini, kami menggunakan Algoritma Carian Rawak untuk mencari integer dalam tatasusunan. Kami mengulangi tatasusunan, memilih indeks secara rawak dan menyemak sama ada elemen pada indeks itu sepadan dengan nombor sasaran. Jika dijumpai, kami mengembalikan indeks; jika tidak, kami meneruskan sehingga bilangan maksimum percubaan dicapai.