Algoritmi i kërkimit të rastësishëm (Random Search) në Java: Hyrje, Si funksionon, Shembull

Algoritmi i kërkimit të rastësishëm, i njohur gjithashtu si kërkimi në Monte Carlo, është një metodë kërkimi e bazuar në rastësi. Në vend që të kontrollojë në mënyrë sekuenciale çdo element në një grup të dhënash, ky algoritëm zgjedh rastësisht një numër elementësh për t'u ekzaminuar. Kjo qasje kursen kohë dhe burime në krahasim me kërkimin sekuencial.

Si punon

  1. Hapi 1: Filloni me grupin e të dhënave që dëshironi të kërkoni.

  2. Hapi 2: Zgjidhni në mënyrë të rastësishme një numër të caktuar elementësh për t'u shqyrtuar.

  3. Hapi 3: Kontrolloni elementët e zgjedhur për të parë nëse ato përputhen me kushtin e kërkimit.

  4. Hapi 4: Nëse gjendet një element që përputhet, kthejeni rezultatin; nëse jo, kthehu te hapi 2.

  5. Hapi 5: Vazhdoni procesin derisa të gjendet një ndeshje ose të arrihet numri maksimal i përpjekjeve.

Avantazhet dhe disavantazhet

Përparësitë:

  • Resurs-Efficient: Kursen kohë dhe memorie, veçanërisht për grupe të mëdha të dhënash.
  • Rastësia: Jo lehtësisht e parashikueshme, e përshtatshme për situata që kërkojnë rastësi.

Disavantazhet:

  • Nuk ka garanci suksesi: Nuk ka siguri që algoritmi do të gjejë rezultatin e dëshiruar.
  • Mund të marrë një kohë të gjatë: Në rastin më të keq, algoritmi mund të zgjasë më shumë se kërkimi sekuencial.

Shembull dhe shpjegim

Konsideroni shembullin e mëposhtëm të përdorimit të Algoritmit të Kërkimit të Rastit për të gjetur një numër të plotë në një grup:

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ë këtë shembull, ne përdorim Algoritmin e Kërkimit të Rastit për të gjetur një numër të plotë në një grup. Ne përsërisim nëpër grup, zgjedhim rastësisht një indeks dhe kontrollojmë nëse elementi në atë indeks përputhet me numrin e synuar. Nëse gjendet, ne kthejmë indeksin; nëse jo, vazhdojmë derisa të arrihet numri maksimal i përpjekjeve.