यादृच्छिक खोज (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.");  
        }  
    }  
}  

इस उदाहरण में, हम किसी सरणी में पूर्णांक खोजने के लिए रैंडम सर्च एल्गोरिदम का उपयोग करते हैं। हम सरणी के माध्यम से पुनरावृति करते हैं, बेतरतीब ढंग से एक सूचकांक का चयन करते हैं, और जांचते हैं कि उस सूचकांक का तत्व लक्ष्य संख्या से मेल खाता है या नहीं। यदि पाया जाता है, तो हम सूचकांक वापस कर देते हैं; यदि नहीं, तो हम प्रयासों की अधिकतम संख्या तक पहुंचने तक जारी रखते हैं।