Algoritam slučajnog pretraživanja, poznat i kao Monte Carlo pretraživanje, metoda je pretraživanja koja se temelji na slučajnosti. Umjesto uzastopne provjere svakog elementa u nizu podataka, ovaj algoritam nasumično odabire niz elemenata za ispitivanje. Ovaj pristup štedi vrijeme i resurse u usporedbi sa sekvencijalnim pretraživanjem.
Kako radi
-
Korak 1: Započnite s nizom podataka koji želite pretraživati.
-
Korak 2: Nasumično odaberite određeni broj elemenata za ispitivanje.
-
Korak 3: Provjerite odabrane elemente da vidite odgovaraju li uvjetu pretraživanja.
-
Korak 4: Ako je pronađen odgovarajući element, vratite rezultat; ako nije, vratite se na korak 2.
-
Korak 5: Nastavite s postupkom dok se ne pronađe podudaranje ili dok se ne dosegne najveći broj pokušaja.
Prednosti i nedostatci
Prednosti:
- Učinkovitost resursa: Štedi vrijeme i memoriju, posebno za velika polja podataka.
- Slučajnost: Nije lako predvidljivo, pogodno za situacije koje zahtijevaju slučajnost.
Nedostaci:
- Nema jamstva za uspjeh: Ne postoji jamstvo da će algoritam pronaći željeni rezultat.
- Može potrajati dugo: U najgorem slučaju, algoritam može potrajati dulje od sekvencijalnog pretraživanja.
Primjer i objašnjenje
Razmotrite sljedeći primjer korištenja algoritma nasumičnog pretraživanja za pronalaženje cijelog broja u nizu:
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.");
}
}
}
U ovom primjeru koristimo algoritam nasumičnog pretraživanja za pronalaženje cijelog broja u nizu. Iteriramo nizom, nasumično odabiremo indeks i provjeravamo odgovara li element na tom indeksu ciljnom broju. Ako se nađe, vraćamo indeks; ako ne, nastavljamo dok se ne postigne maksimalan broj pokušaja.