შემთხვევითი ძიების (Random Search) ალგორითმი Java: შესავალი, როგორ მუშაობს, მაგალითი

შემთხვევითი ძიების ალგორითმი, რომელიც ასევე ცნობილია როგორც მონტე კარლოს ძებნა, არის ძიების მეთოდი, რომელიც დაფუძნებულია შემთხვევითობაზე. მონაცემთა მასივის თითოეული ელემენტის თანმიმდევრული შემოწმების ნაცვლად, ეს ალგორითმი შემთხვევით ირჩევს რამდენიმე ელემენტს შესამოწმებლად. ეს მიდგომა დაზოგავს დროსა და რესურსებს თანმიმდევრულ ძიებასთან შედარებით.

Როგორ მუშაობს

  1. ნაბიჯი 1: დაიწყეთ მონაცემთა მასივით, რომლის მოძიებაც გსურთ.

  2. ნაბიჯი 2: შემთხვევით შეარჩიეთ ელემენტების გარკვეული რაოდენობა შესამოწმებლად.

  3. ნაბიჯი 3: შეამოწმეთ არჩეული ელემენტები, რათა ნახოთ, შეესაბამება თუ არა ისინი საძიებო მდგომარეობას.

  4. ნაბიჯი 4: თუ შესატყვისი ელემენტია ნაპოვნი, დააბრუნეთ შედეგი; თუ არა, დაუბრუნდით მე-2 ნაბიჯს.

  5. ნაბიჯი 5: გააგრძელეთ პროცესი მანამ, სანამ არ მოიძებნება მატჩი ან არ მიაღწევთ მცდელობების მაქსიმალურ რაოდენობას.

Დადებითი და უარყოფითი მხარეები

უპირატესობები:

  • რესურს-ეფექტური: დაზოგავს დროსა და მეხსიერებას, განსაკუთრებით დიდი მონაცემთა მასივებისთვის.
  • შემთხვევითობა: არ არის ადვილად პროგნოზირებადი, შესაფერისი სიტუაციებისთვის, რომლებიც საჭიროებენ შემთხვევითობას.

ნაკლოვანებები:

  • წარმატების გარანტია არ არსებობს: არ არსებობს გარანტია, რომ ალგორითმი იპოვის სასურველ შედეგს.
  • შეიძლება დიდი დრო დასჭირდეს: უარეს შემთხვევაში, ალგორითმს შეიძლება მეტი დრო დასჭირდეს, ვიდრე თანმიმდევრული ძიება.

მაგალითი და ახსნა

განვიხილოთ შემთხვევითი ძიების ალგორითმის გამოყენების შემდეგი მაგალითი მასივში მთელი რიცხვის მოსაძებნად:

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

ამ მაგალითში ვიყენებთ შემთხვევითი ძიების ალგორითმს, რათა ვიპოვოთ მთელი რიცხვი მასივში. ჩვენ ვიმეორებთ მასივის მეშვეობით, შემთხვევით ვირჩევთ ინდექსს და ვამოწმებთ, ემთხვევა თუ არა ამ ინდექსის ელემენტი სამიზნე რიცხვს. თუ აღმოვაჩინეთ, ჩვენ ვაბრუნებთ ინდექსს; თუ არა, ვაგრძელებთ მცდელობების მაქსიმალურ რაოდენობას.