Algoritmul de căutare aleatorie (Random Search) în Java: Introducere, Cum funcționează, Exemplu

Algoritmul de căutare aleatorie, cunoscut și sub numele de căutare Monte Carlo, este o metodă de căutare bazată pe aleatorie. În loc să verifice secvenţial fiecare element dintr-o matrice de date, acest algoritm selectează aleatoriu un număr de elemente de examinat. Această abordare economisește timp și resurse în comparație cu căutarea secvențială.

Cum functioneaza

  1. Pasul 1: Începeți cu matricea de date pe care doriți să o căutați.

  2. Pasul 2: selectați aleatoriu un anumit număr de elemente de examinat.

  3. Pasul 3: Verificați elementele selectate pentru a vedea dacă se potrivesc cu condiția de căutare.

  4. Pasul 4: Dacă se găsește un element potrivit, returnați rezultatul; dacă nu, reveniți la Pasul 2.

  5. Pasul 5: Continuați procesul până când se găsește o potrivire sau se atinge numărul maxim de încercări.

Avantaje și dezavantaje

Avantaje:

  • Eficient din punct de vedere al resurselor: economisește timp și memorie, în special pentru matrice mari de date.
  • Aleatorie: nu este ușor de previzibil, potrivit pentru situații care necesită aleatoriu.

Dezavantaje:

  • Nicio garanție de succes: nu există nicio asigurare că algoritmul va găsi rezultatul dorit.
  • Poate dura mult timp: în cel mai rău caz, algoritmul poate dura mai mult decât căutarea secvențială.

Exemplu și explicație

Luați în considerare următorul exemplu de utilizare a algoritmului de căutare aleatorie pentru a găsi un număr întreg într-o matrice:

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.");  
        }  
    }  
}  

În acest exemplu, folosim algoritmul de căutare aleatorie pentru a găsi un număr întreg într-o matrice. Iterăm prin matrice, selectăm aleatoriu un index și verificăm dacă elementul de la acel index se potrivește cu numărul țintă. Dacă este găsit, returnăm indexul; dacă nu, continuăm până la atingerea numărului maxim de încercări.