खोज एल्गोरिदम: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{short description|Any algorithm which solves the search problem}}
{{short description|Any algorithm which solves the search problem}}
[[File:Hash table 3 1 1 0 1 0 0 SP.svg|thumb|upright=1.2|एक [[हैश तालिका]] का दृश्य प्रतिनिधित्व, एक [[डेटा संरचना]] जो सूचना के तेजी से पुनर्प्राप्ति की अनुमति देती है]][[कंप्यूटर विज्ञान]] में, एक खोज [[ कलन विधि ]] एक एल्गोरिथम है जिसे एक [[खोज समस्या]] को हल करने के लिए डिज़ाइन किया गया है। खोज एल्गोरिदम विशेष डेटा संरचना के भीतर संग्रहीत जानकारी को पुनः प्राप्त करने के लिए काम करते हैं, या किसी समस्या डोमेन के व्यवहार्य क्षेत्र में [[निरंतर या असतत चर]] के साथ गणना की जाती है।
[[File:Hash table 3 1 1 0 1 0 0 SP.svg|thumb|upright=1.2|एक [[हैश तालिका]] का दृश्य प्रतिनिधित्व, एक [[डेटा संरचना]] जो सूचना के तेजी से पुनर्प्राप्ति की अनुमति देती है]][[कंप्यूटर विज्ञान]] में, एक सर्च [[ कलन विधि ]] एक एल्गोरिथम है जिसे एक [[खोज समस्या|सर्च समस्या]] को हल करने के लिए डिज़ाइन किया गया है। सर्च एल्गोरिदम विशेष डेटा संरचना के अन्दर संग्रहीत जानकारी को पुनः प्राप्त करने के लिए काम करते हैं, या किसी समस्या डोमेन के व्यवहार्य क्षेत्र में [[निरंतर या असतत चर]] के साथ गणना की जाती है।


हालांकि [[खोज इंजन (कंप्यूटिंग)]] खोज एल्गोरिदम का उपयोग करते हैं, वे सूचना पुनर्प्राप्ति के अध्ययन से संबंधित हैं, एल्गोरिथम नहीं।


उपयोग करने के लिए उपयुक्त खोज एल्गोरिदम अक्सर खोजी जा रही डेटा संरचना पर निर्भर करता है, और इसमें डेटा के बारे में पूर्व ज्ञान भी शामिल हो सकता है। विशेष रूप से निर्मित डेटाबेस संरचनाओं, जैसे [[ खोज पेड़ ]], [[हैश मैप]] और [[ डेटाबेस सूचकांक ]] द्वारा खोज एल्गोरिदम को तेज या अधिक कुशल बनाया जा सकता है।{{Sfn|Beame|Fich|2002|p=39}}{{Sfn|Knuth|1998|loc=§6.5 ("Retrieval on Secondary Keys")}}
चूँकि [[खोज इंजन (कंप्यूटिंग)|सर्च इंजन (कंप्यूटिंग)]] एल्गोरिदम का उपयोग करते हैं, किन्तु वे सूचना पुनर्प्राप्ति के अध्ययन से संबंधित हैं, एल्गोरिथम के अध्ययन से संबंधित नहीं हैं।


खोज एल्गोरिदम को तीन प्रकार के एल्गोरिदम में खोज करने के उनके तंत्र के आधार पर वर्गीकृत किया जा सकता है: रैखिक, बाइनरी और हैशिंग। रेखीय खोज एल्गोरिदम एक रेखीय फैशन में लक्ष्य कुंजी से जुड़े प्रत्येक रिकॉर्ड की जांच करता है।{{Sfn|Knuth|1998|loc=§6.1 ("Sequential Searching")}} बाइनरी खोज एल्गोरिद्म|बाइनरी, या आधा-अंतराल, खोज बार-बार खोज संरचना के केंद्र को लक्षित करती है और खोज स्थान को आधे में विभाजित करती है। तुलना खोज एल्गोरिदम लक्ष्य रिकॉर्ड मिलने तक कुंजियों की तुलना के आधार पर क्रमिक रूप से रिकॉर्ड को समाप्त करके रैखिक खोज में सुधार करते हैं, और एक परिभाषित क्रम के साथ डेटा संरचनाओं पर लागू किया जा सकता है।{{Sfn|Knuth|1998|loc=§6.2 ("Searching by Comparison of Keys")}} डिजिटल खोज एल्गोरिथम संख्यात्मक कुंजियों का उपयोग करके डेटा संरचनाओं में अंकों के गुणों के आधार पर कार्य करता है।{{Sfn|Knuth|1998|loc=§6.3 (Digital Searching)}} अंत में, हैश तालिका सीधे कुंजी को [[हैश फंकशन]] के आधार पर रिकॉर्ड करने के लिए मैप करती है।{{Sfn|Knuth|1998|loc=§6.4, (Hashing)}}
उपयोग करने के लिए उपयुक्त सर्च एल्गोरिदम अधिकांशतः खोजी जा रही डेटा संरचना पर निर्भर करता है, और इसमें डेटा के बारे में पूर्व ज्ञान भी सम्मिलित हो सकता है। विशेष रूप से निर्मित डेटाबेस संरचनाओं, जैसे [[ खोज पेड़ | सर्च ट्री]] , [[हैश मैप]] और [[ डेटाबेस सूचकांक | डेटाबेस सूचकांक]] द्वारा सर्च एल्गोरिदम को तेज या अधिक कुशल बनाया जा सकता है।{{Sfn|Beame|Fich|2002|p=39}}{{Sfn|Knuth|1998|loc=§6.5 ("Retrieval on Secondary Keys")}}


एल्गोरिदम का मूल्यांकन अक्सर उनकी कम्प्यूटेशनल जटिलता, या अधिकतम सैद्धांतिक रन टाइम द्वारा किया जाता है। उदाहरण के लिए, बाइनरी सर्च फ़ंक्शंस की अधिकतम जटिलता है {{math|''O''(log ''n'')}}, या लघुगणकीय समय। सरल शब्दों में, खोज लक्ष्य को खोजने के लिए आवश्यक संचालन की अधिकतम संख्या खोज स्थान के आकार का लघुगणकीय कार्य है।
सर्च एल्गोरिदम को तीन प्रकार के एल्गोरिदम में सर्च करने के उनके तंत्र के आधार पर वर्गीकृत किया जा सकता है: रैखिक, बाइनरी और हैशिंग रेखीय सर्च एल्गोरिदम एक रेखीय फैशन में लक्ष्य कुंजी से जुड़े प्रत्येक आवरण की जांच करता है।{{Sfn|Knuth|1998|loc=§6.1 ("Sequential Searching")}} बाइनरी सर्च एल्गोरिद्म बाइनरी, या आधा-अंतराल, सर्च बार-बार सर्च संरचना के केंद्र को लक्षित करती है और सर्च स्पेस को आधे में विभाजित करती है। सर्च एल्गोरिदम लक्ष्य आवरण मिलने तक कुंजियों की तुलना के आधार पर क्रमिक रूप से आवरण को समाप्त करके रैखिक सर्च में सुधार करते हैं, और एक परिभाषित क्रम के साथ डेटा संरचनाओं पर प्रयुक्त किया जा सकता है।{{Sfn|Knuth|1998|loc=§6.2 ("Searching by Comparison of Keys")}} डिजिटल सर्च एल्गोरिथम संख्यात्मक कुंजियों का उपयोग करके डेटा संरचनाओं में अंकों के गुणों के आधार पर कार्य करता है।{{Sfn|Knuth|1998|loc=§6.3 (Digital Searching)}} अंत में, हैश तालिका सीधे कुंजी को [[हैश फंकशन]] के आधार पर आवरण करने के लिए मैप करती है।{{Sfn|Knuth|1998|loc=§6.4, (Hashing)}}


== खोज एल्गोरिदम के अनुप्रयोग ==
एल्गोरिदम का मूल्यांकन अधिकांशतः उनकी कम्प्यूटेशनल जटिलता, या अधिकतम सैद्धांतिक रन टाइम द्वारा किया जाता है। उदाहरण के लिए, बाइनरी सर्च फ़ंक्शंस की अधिकतम जटिलता है {{math|''O''(log ''n'')}}, या लघुगणकीय समय सरल शब्दों में, सर्च लक्ष्य को खोजने के लिए आवश्यक संचालन की अधिकतम संख्या सर्च स्पेस के आकार का लघुगणकीय कार्य है।
खोज एल्गोरिदम के विशिष्ट अनुप्रयोगों में शामिल हैं:


*[[संयोजन अनुकूलन]] में समस्याएँ, जैसे:
== सर्च एल्गोरिदम के अनुप्रयोग ==
** वाहन रूटिंग समस्या, [[सबसे छोटी पथ समस्या]] का एक रूप
सर्च एल्गोरिदम के विशिष्ट अनुप्रयोगों में सम्मिलित हैं:
** नैपसैक समस्या: वस्तुओं का एक सेट दिया गया है, प्रत्येक वजन और मूल्य के साथ, संग्रह में शामिल करने के लिए प्रत्येक आइटम की संख्या निर्धारित करें ताकि कुल वजन किसी सीमा से कम या उसके बराबर हो और कुल मूल्य हो जितना बड़ा हो सके।
 
*[[संयोजन अनुकूलन|कॉम्बिनेटरियल ऑप्टिमाइज़ेशन]] में समस्याएँ, जैसे:
** वाहन रूटिंग समस्या, [[सबसे छोटी पथ समस्या]] का एक रूप है
** नैपसैक समस्या: वस्तुओं का एक सेट दिया गया है, प्रत्येक वजन और मूल्य के साथ, संग्रह में सम्मिलित करने के लिए प्रत्येक आइटम की संख्या निर्धारित करते है जिससे कुल वजन किसी सीमा से कम या उसके समान किया जा सके और जिससे कुल मूल्य में वृद्धि की जा सकती है।
** [[नर्स शेड्यूलिंग समस्या]]
** [[नर्स शेड्यूलिंग समस्या]]
* बाधा संतुष्टि में समस्याएँ, जैसे:
* कॉन्सट्रेंट सटिस्फैक्शन में समस्याएँ, जैसे:
** नक्शा रंग समस्या
** मानचित्र में रंग भरने की समस्या
** [[सुडोकू]] या वर्ग पहेली भरना
** [[सुडोकू]] या वर्ग पहेली भरना
* [[ खेल सिद्धांत ]] और विशेष रूप से [[कॉम्बिनेटरियल गेम थ्योरी]] में, अगला बनाने के लिए सबसे अच्छा कदम चुनना (जैसे कि [[ न्यूनतम अधिकतम ]] एल्गोरिथम के साथ)
* [[ खेल सिद्धांत | खेल सिद्धांत]] और विशेष रूप से [[कॉम्बिनेटरियल गेम थ्योरी|कॉम्बिनेटरियल गेम सिद्धांत]] में, अगला बनाने के लिए सबसे अच्छा कदम चुनना (जैसे कि [[ न्यूनतम अधिकतम | न्यूनतम अधिकतम]] एल्गोरिथम के साथ)
* संभावनाओं के पूरे सेट से एक संयोजन या पासवर्ड ढूँढना
* संभावनाओं के पूरे सेट से एक संयोजन या पासवर्ड खोजना
* [[गुणन]]खंड एक पूर्णांक ([[क्रिप्टोग्राफी]] में एक महत्वपूर्ण समस्या)
* [[गुणन]]खंड एक पूर्णांक ([[क्रिप्टोग्राफी]] में एक महत्वपूर्ण समस्या)
* प्रक्रिया के मापदंडों (जैसे तापमान, दबाव और पीएच) को बदलकर एक औद्योगिक प्रक्रिया का अनुकूलन, जैसे [[रासायनिक प्रतिक्रिया]]
* प्रक्रिया के मापदंडों (जैसे तापमान, दबाव और पीएच) को बदलकर एक औद्योगिक प्रक्रिया का अनुकूलन, जैसे [[रासायनिक प्रतिक्रिया]]
* एक [[डेटाबेस]] से एक रिकॉर्ड पुनर्प्राप्त करना
* एक [[डेटाबेस]] से एक आवरण पुनर्प्राप्त करना
* किसी [[सूची (सार डेटा प्रकार)]] या [[सरणी डेटा संरचना]] में अधिकतम या न्यूनतम मान ढूँढना
* किसी [[सूची (सार डेटा प्रकार)]] या [[सरणी डेटा संरचना]] में अधिकतम या न्यूनतम मान खोजना
* यह देखने के लिए जाँच की जा रही है कि मानों के सेट में दिया गया मान मौजूद है या नहीं
* यह देखने के लिए जाँच की जा रही है कि मानों के सेट में दिया गया मान उपस्थित है या नहीं उपस्थित है
 
== वर्ग ==


== कक्षाएं ==
=== वर्चुअल सर्च स्पेस के लिए ===
{{see also|सॉल्वर}}


=== आभासी खोज स्थानों के लिए ===
वर्चुअल स्पेस की सर्च के लिए एल्गोरिदम का उपयोग [[बाधा संतुष्टि समस्या|कॉन्सट्रेंट सटिस्फैक्शन समस्या]] में किया जाता है, जहां लक्ष्य कुछ चर के लिए मान असाइनमेंट का एक सेट खोजना है जो विशिष्ट गणितीय [[समीकरण]] और [[असमानता]]ओं/समानताओं को संतुष्ट करता है। उनका उपयोग तब भी किया जाता है जब लक्ष्य एक चर असाइनमेंट खोजना होता है जो उन चरों के एक निश्चित कार्य को असतत करता है। इन समस्याओं के लिए एल्गोरिदम में मूलभूत ब्रूट-बल सर्च (जिसे भोली या बेख़बर सर्च भी कहा जाता है), और कई प्रकार के ह्यूरिस्टिक कार्य सम्मिलित हैं जो इस स्पेस की संरचना के बारे में आंशिक ज्ञान का लाभ उठाने का प्रयाश करते हैं, जैसे लीनियर रिलैक्सेशन कंस्ट्रेंट जनरेशन और कंस्ट्रेंट प्रोपेगेशन होता है। .
{{see also|Solver}}


आभासी स्थानों की खोज के लिए एल्गोरिदम का उपयोग [[बाधा संतुष्टि समस्या]] में किया जाता है, जहां लक्ष्य कुछ चर के लिए मान असाइनमेंट का एक सेट खोजना है जो विशिष्ट गणितीय [[समीकरण]]ों और [[असमानता]]ओं/समानताओं को संतुष्ट करेगा। उनका उपयोग तब भी किया जाता है जब लक्ष्य एक चर असाइनमेंट ढूंढना होता है जो उन चरों के एक निश्चित कार्य को असतत करेगा। इन समस्याओं के लिए एल्गोरिदम में बुनियादी ब्रूट-बल खोज (जिसे भोली या बेख़बर खोज भी कहा जाता है), और कई प्रकार के अनुमानी कार्य शामिल हैं जो इस स्थान की संरचना के बारे में आंशिक ज्ञान का फायदा उठाने की कोशिश करते हैं, जैसे रैखिक विश्राम, बाधा निर्माण और स्थानीय स्थिरता .
एक महत्वपूर्ण उपवर्ग [[स्थानीय खोज (अनुकूलन)|लोकल सर्च (अनुकूलन)]] विधियाँ हैं, जो सर्च स्पेस के तत्वों को ग्राफ के शीर्ष (ग्राफ़ सिद्धांत) के रूप में देखती हैं, किनारों के साथ स्थिति पर प्रयुक्त अनुमानों के एक सेट द्वारा परिभाषित है और किनारों के साथ आइटम से आइटम पर जाकर स्पेस को स्कैन करते है, उदाहरण के लिए [[ ढतला हुआ वंश | तीव्रतम अवरोहण]] या [[क्रूर-बल खोज|क्रूर-बल सर्च]] या बेस्ट-फर्स्ट मानदंड के अनुसार, या [[स्टोचैस्टिक अनुकूलन]] में इस श्रेणी में सामान्य [[मेटाह्यूरिस्टिक]] विधियों की एक विशाल विविधता सम्मिलित है, जैसे [[ तैयार किए हुयी धातु पे पानी चढाने की कला | तैयार कि हुयी धातु पे पानी चढाने की कला]] , [[तब्बू खोज|तब्बू सर्च]], ए-टीम्स और [[ आनुवंशिक प्रोग्रामिंग | जेनेटिक प्रोग्रामिंग]] है, जो विशिष्ट विधियों से मनमाने ह्यूरिस्टिक्स को जोड़ती हैं। लोकल सर्च के विपरीत वैश्विक सर्च विधियाँ होंटी है। यह विधि तब प्रयुक्त होती है जब सर्च स्पेस सीमित नहीं होता है और दिए गए नेटवर्क के सभी [[सर्वोत्तम-पहली खोज|स्टोकेस्टिक खोज]] एल्गोरिथम चलाने वाली इकाई के लिए उपलब्ध होते हैं।<ref>{{Cite journal|last1=Hunter|first1=A.H.|last2=Pippenger|first2=Nicholas|date=4 July 2013|title=चैनल ग्राफ़ में स्थानीय बनाम वैश्विक खोज|journal=Networks: An International Journey|arxiv=1004.2526}}</ref>


एक महत्वपूर्ण उपवर्ग [[स्थानीय खोज (अनुकूलन)]] विधियाँ हैं, जो खोज स्थान के तत्वों को ग्राफ के शीर्ष (ग्राफ़ सिद्धांत) के रूप में देखती हैं, किनारों के साथ मामले पर लागू अनुमानों के एक सेट द्वारा परिभाषित; और किनारों के साथ आइटम से आइटम पर जाकर स्थान को स्कैन करें, उदाहरण के लिए [[ ढतला हुआ वंश ]] या [[क्रूर-बल खोज]] | बेस्ट-फर्स्ट मानदंड के अनुसार, या [[स्टोचैस्टिक अनुकूलन]] में। इस श्रेणी में सामान्य [[मेटाह्यूरिस्टिक]] तरीकों की एक विशाल विविधता शामिल है, जैसे [[ तैयार किए हुयी धातु पे पानी चढाने की कला ]], [[तब्बू खोज]], ए-टीम्स और [[ आनुवंशिक प्रोग्रामिंग ]], जो विशिष्ट तरीकों से मनमाने ह्यूरिस्टिक्स को जोड़ती हैं। स्थानीय खोज के विपरीत वैश्विक खोज विधियाँ होंगी। यह विधि तब लागू होती है जब खोज स्थान सीमित नहीं होता है और दिए गए नेटवर्क के सभी [[सर्वोत्तम-पहली खोज]] एल्गोरिथम चलाने वाली इकाई के लिए उपलब्ध होते हैं।<ref>{{Cite journal|last1=Hunter|first1=A.H.|last2=Pippenger|first2=Nicholas|date=4 July 2013|title=चैनल ग्राफ़ में स्थानीय बनाम वैश्विक खोज|journal=Networks: An International Journey|arxiv=1004.2526}}</ref>
इस वर्ग में विभिन्न [[ट्री ट्रैवर्सल]] भी सम्मिलित हैं, जो तत्वों को ट्री के शीर्ष के रूप में देखते हैं (ग्राफ सिद्धांत), और उस ट्री को कुछ विशेष क्रम में पार करते हैं। उत्तरार्द्ध के उदाहरणों में विस्तृत विधियाँ सम्मिलित हैं जैसे कि [[गहराई-पहली खोज|प्रूनिंग-ट्री सर्च]] और चौड़ाई-पहली सर्च, साथ ही विभिन्न ह्यूरिस्टिक-आधारित निर्णय वृक्ष विधियाँ है जैसे [[ बैक ट्रैकिंग | बैक ट्रैकिंग]] और शाखा और बाउंड या सामान्य मेटाह्यूरिस्टिक्स के विपरीत, जो केवल एक संभाव्य अर्थ में सबसे अच्छा काम करता है, इनमें से कई ट्री-सर्च विधियों को पर्याप्त समय दिए जाने पर स्पष्ट या ऑप्टीमल समाधान खोजने की गारंटी दी जाती है। इसे [[पूर्णता (तर्क)|पूर्णता]] कहते हैं।
इस वर्ग में विभिन्न [[ट्री ट्रैवर्सल]] भी शामिल हैं, जो तत्वों को पेड़ के शीर्ष के रूप में देखते हैं (ग्राफ सिद्धांत), और उस पेड़ को कुछ विशेष क्रम में पार करते हैं। उत्तरार्द्ध के उदाहरणों में विस्तृत विधियाँ शामिल हैं जैसे कि [[गहराई-पहली खोज]] और चौड़ाई-पहली खोज, साथ ही विभिन्न अनुमानी-आधारित छंटाई (निर्णय वृक्ष) विधियाँ जैसे [[ बैक ट्रैकिंग ]] और शाखा और बाउंड। सामान्य मेटाह्यूरिस्टिक्स के विपरीत, जो केवल एक संभाव्य अर्थ में सबसे अच्छा काम करता है, इनमें से कई पेड़-खोज विधियों को पर्याप्त समय दिए जाने पर सटीक या इष्टतम समाधान खोजने की गारंटी दी जाती है। इसे [[पूर्णता (तर्क)]] कहते हैं।


एक अन्य महत्वपूर्ण उप-वर्ग में [[शतरंज]] या [[चौसर]] जैसे बहु-खिलाड़ी गेम के [[ खेल का पेड़ ]] की खोज के लिए एल्गोरिदम शामिल हैं, जिनके नोड्स में सभी संभावित गेम स्थितियां शामिल हैं जो वर्तमान स्थिति से उत्पन्न हो सकती हैं। इन समस्याओं में लक्ष्य उस चाल का पता लगाना है जो प्रतिद्वंद्वी(ओं) की सभी संभावित चालों को ध्यान में रखते हुए जीत का सबसे अच्छा मौका प्रदान करती है। इसी तरह की समस्याएं तब होती हैं जब मनुष्यों या मशीनों को लगातार निर्णय लेने पड़ते हैं जिनके परिणाम पूरी तरह से किसी के नियंत्रण में नहीं होते हैं, जैसे कि [[रोबोट]] मार्गदर्शन या [[विपणन]], [[वित्त]] या [[सैन्य]] रणनीति योजना में। इस तरह की समस्या - [[संयुक्त खोज]] - का [[ कृत्रिम होशियारी ]] के संदर्भ में बड़े पैमाने पर अध्ययन किया गया है। इस वर्ग के लिए एल्गोरिदम के उदाहरण [[अल्पमहिष्ठ]], अल्फा-बीटा प्रूनिंग और ए [[ए * खोज एल्गोरिदम]] | ए * एल्गोरिदम और इसके वेरिएंट हैं।
एक अन्य महत्वपूर्ण उप-वर्ग में [[शतरंज]] या [[चौसर]] जैसे बहु-खिलाड़ी[[ खेल का पेड़ | खेल का ट्री]] की सर्च के लिए एल्गोरिदम सम्मिलित हैं, जिनके नोड्स में सभी संभावित गेम स्थितियां सम्मिलित हैं जो वर्तमान स्थिति से उत्पन्न हो सकती हैं। इन समस्याओं में लक्ष्य उस चाल का पता लगाना है जो प्रतिद्वंद्वीओं की सभी संभावित चालों को ध्यान में रखते हुए जीत का सबसे अच्छा मौका प्रदान करती है। इसी तरह की समस्याएं तब होती हैं जब मनुष्यों या मशीनों को निरंतर निर्णय लेने पड़ते हैं जिनके परिणाम पूरी तरह से किसी के नियंत्रण में नहीं होते हैं, जैसे कि [[रोबोट]] मार्गदर्शन या [[विपणन]], [[वित्त]] या [[सैन्य]] रणनीति योजना में इस तरह की समस्या [[संयुक्त खोज|संयुक्त सर्च]] का [[ कृत्रिम होशियारी | कृत्रिम इंटेलिजेंस]] के संदर्भ में बड़े मापदंड पर अध्ययन किया गया है। इस वर्ग के लिए एल्गोरिदम के उदाहरण मिनिमैक्स एल्गोरिथम अल्फा बीटा प्रूनिंग और ए * एल्गोरिथम और इसके वेरिएंट हैं।


=== किसी दिए गए ढांचे के उप-संरचनाओं के लिए ===
=== किसी दिए गए रुपरेखा के उप-संरचनाओं के लिए ===
संयोजी खोज नाम आम तौर पर एल्गोरिदम के लिए उपयोग किया जाता है जो किसी दिए गए असतत गणित की एक विशिष्ट उप-संरचना की तलाश करता है, जैसे कि एक ग्राफ, एक [[स्ट्रिंग (कंप्यूटर विज्ञान)]], एक परिमित [[समूह (गणित)]], और इसी तरह। कॉम्बिनेटरियल ऑप्टिमाइज़ेशन शब्द का उपयोग आमतौर पर तब किया जाता है जब लक्ष्य कुछ पैरामीटर के अधिकतम (या न्यूनतम) मान के साथ उप-संरचना को खोजना होता है। (चूंकि उप-संरचना को आमतौर पर कंप्यूटर में बाधाओं के साथ पूर्णांक चर के एक सेट द्वारा दर्शाया जाता है, इन समस्याओं को बाधा संतुष्टि या असतत अनुकूलन के विशेष मामलों के रूप में देखा जा सकता है; लेकिन वे आमतौर पर अधिक सार सेटिंग में तैयार और हल किए जाते हैं जहां आंतरिक प्रतिनिधित्व का स्पष्ट रूप से उल्लेख नहीं किया गया है।)
संयोजी सर्च नाम सामान्यतः एल्गोरिदम के लिए उपयोग किया जाता है जो किसी दिए गए असतत गणित की एक विशिष्ट उप-संरचना की खोज करता है, जैसे कि एक ग्राफ, एक [[स्ट्रिंग (कंप्यूटर विज्ञान)]], एक परिमित [[समूह (गणित)]], और इसी तरह या कॉम्बिनेटरियल ऑप्टिमाइज़ेशन शब्द का उपयोग सामायतः तब किया जाता है जब लक्ष्य कुछ मापदंड के अधिकतम (या न्यूनतम) मान के साथ उप-संरचना को खोजना होता है। (चूंकि उप-संरचना को सामायतः कंप्यूटर में बाधाओं के साथ पूर्णांक चर के एक सेट द्वारा दर्शाया जाता है, इन समस्याओं को कॉन्सट्रेंट सटिस्फैक्शन या असतत अनुकूलन के विशेष स्थितियों के रूप में देखा जा सकता है; किन्तु वे सामायतः अधिक सार सेटिंग में तैयार और हल किए जाते हैं जहां आंतरिक प्रतिनिधित्व का स्पष्ट रूप से उल्लेख नहीं किया गया है।)


एक महत्वपूर्ण और बड़े पैमाने पर अध्ययन किए गए उपवर्ग एल्गोरिदम # ग्राफ़ एल्गोरिदम की सूची हैं, विशेष रूप से [[ग्राफ ट्रैवर्सल]] एल्गोरिदम में, किसी दिए गए ग्राफ़ में विशिष्ट उप-संरचनाओं को खोजने के लिए - [[पथ (ग्राफ सिद्धांत)]] की शब्दावली # Subgraphs, पथ (ग्राफ़ सिद्धांत), सर्किट, और जल्दी। उदाहरणों में दिज्क्स्ट्रा का एल्गोरिथ्म, क्रुस्कल का एल्गोरिथ्म, निकटतम पड़ोसी एल्गोरिथ्म और प्राइम का एल्गोरिथ्म शामिल हैं।
एक महत्वपूर्ण और बड़े मापदंड पर अध्ययन किए गए उपवर्ग एल्गोरिदम ग्राफ़ एल्गोरिदम की सूची हैं, विशेष रूप से [[ग्राफ ट्रैवर्सल]] एल्गोरिदम में, किसी दिए गए ग्राफ़ में विशिष्ट उप-संरचनाओं को खोजने के लिए [[पथ (ग्राफ सिद्धांत)]] की शब्दावली सबग्राफ, पथ (ग्राफ़ सिद्धांत), सर्किट, और इसी प्रकार उदाहरणों में दिज्क्स्ट्रा का एल्गोरिथ्म, क्रुस्कल का एल्गोरिथ्म, निकटतम समूह एल्गोरिथ्म और प्राइम का एल्गोरिथ्म सम्मिलित हैं।


इस श्रेणी का एक अन्य महत्वपूर्ण उपवर्ग [[स्ट्रिंग खोज एल्गोरिथ्म]] है, जो स्ट्रिंग्स के भीतर पैटर्न की खोज करता है। दो प्रसिद्ध उदाहरण हैं बोयर-मूर स्ट्रिंग-सर्च एल्गोरिथम | बॉयर-मूर और नुथ-मॉरिस-प्रैट एल्गोरिदम, और प्रत्यय ट्री डेटा संरचना पर आधारित कई एल्गोरिदम।
इस श्रेणी का एक अन्य महत्वपूर्ण उपवर्ग [[स्ट्रिंग खोज एल्गोरिथ्म|स्ट्रिंग सर्च एल्गोरिथ्म]] है, जो स्ट्रिंग्स के अन्दर पैटर्न की सर्च करता है। दो प्रसिद्ध उदाहरण हैं बोयर-मूर स्ट्रिंग-सर्च एल्गोरिथम या बॉयर-मूर और नुथ-मॉरिस-प्रैट एल्गोरिदम, और प्रत्यय ट्री डेटा संरचना पर आधारित कई एल्गोरिदम है।


=== किसी फ़ंक्शन के अधिकतम के लिए खोजें ===
=== किसी फ़ंक्शन के अधिकतम के लिए खोजें ===
1953 में, अमेरिकी सांख्यिकीविद् [[जैक कीफ़र (सांख्यिकीविद्)]] ने [[फाइबोनैचि खोज तकनीक]] तैयार की, जिसका उपयोग एक अनिमॉडल फ़ंक्शन का अधिकतम पता लगाने के लिए किया जा सकता है और कंप्यूटर विज्ञान में इसके कई अन्य अनुप्रयोग हैं।
1953 में, अमेरिकी सांख्यिकीविद् [[जैक कीफ़र (सांख्यिकीविद्)]] ने [[फाइबोनैचि खोज तकनीक|फाइबोनैचि सर्च विधि]] तैयार की थी, जिसका उपयोग एक अनिमॉडल फ़ंक्शन का अधिकतम पता लगाने के लिए किया जा सकता है और कंप्यूटर विज्ञान में इसके कई अन्य अनुप्रयोग हैं।


=== क्वांटम कंप्यूटर के लिए ===
=== क्वांटम कंप्यूटर के लिए ===
ग्रोवर के एल्गोरिथ्म की तरह [[ क्वांटम कम्प्यूटिंग ]] के लिए डिज़ाइन किए गए खोज तरीके भी हैं, जो डेटा संरचनाओं या ह्यूरिस्टिक्स की मदद के बिना भी सैद्धांतिक रूप से रैखिक या क्रूर-बल खोज से तेज़ हैं। जबकि क्वांटम कंप्यूटर के पीछे के विचार और अनुप्रयोग अभी भी पूरी तरह से सैद्धांतिक हैं, ग्रोवर जैसे एल्गोरिदम के साथ अध्ययन किए गए हैं जो क्वांटम कंप्यूटिंग सिस्टम के काल्पनिक भौतिक संस्करणों को सटीक रूप से दोहराते हैं।<ref>{{Cite journal|last1=López|first1=G V|last2=Gorin|first2=T|last3=Lara|first3=L|date=26 February 2008|title=पहले और दूसरे-निकटतम-पड़ोसी युग्मन के साथ एक आइसिंग-परमाणु-स्पिन-श्रृंखला क्वांटम कंप्यूटर में ग्रोवर की क्वांटम खोज एल्गोरिथ्म का अनुकरण|journal=Journal of Physics B: Atomic, Molecular and Optical Physics|volume=41|issue=5|page=055504|doi=10.1088/0953-4075/41/5/055504|arxiv=0710.3196|bibcode=2008JPhB...41e5504L|s2cid=18796310}}</ref>
ग्रोवर के एल्गोरिथ्म की तरह [[ क्वांटम कम्प्यूटिंग ]] के लिए डिज़ाइन किए गए सर्च विधि भी हैं, जो डेटा संरचनाओं या ह्यूरिस्टिक्स की सहायता के बिना भी सैद्धांतिक रूप से रैखिक या क्रूर-बल सर्च से तेज़ हैं। जबकि क्वांटम कंप्यूटर के पीछे के विचार और अनुप्रयोग अभी भी पूरी तरह से सैद्धांतिक हैं, ग्रोवर जैसे एल्गोरिदम के साथ अध्ययन किए गए हैं जो क्वांटम कंप्यूटिंग सिस्टम के काल्पनिक भौतिक संस्करणों को स्पष्ट रूप से दोहराते हैं।<ref>{{Cite journal|last1=López|first1=G V|last2=Gorin|first2=T|last3=Lara|first3=L|date=26 February 2008|title=पहले और दूसरे-निकटतम-पड़ोसी युग्मन के साथ एक आइसिंग-परमाणु-स्पिन-श्रृंखला क्वांटम कंप्यूटर में ग्रोवर की क्वांटम खोज एल्गोरिथ्म का अनुकरण|journal=Journal of Physics B: Atomic, Molecular and Optical Physics|volume=41|issue=5|page=055504|doi=10.1088/0953-4075/41/5/055504|arxiv=0710.3196|bibcode=2008JPhB...41e5504L|s2cid=18796310}}</ref>




== यह भी देखें ==
== यह भी देखें ==


*{{annotated link|Backward induction}}
*{{annotated link|बैकवर्ड इंडक्शन}}
* {{annotated link|Content-addressable memory}} हार्डवेयर
* {{annotated link|कंटेंट-एड्रेसेबल मेमोरी}} हार्डवेयर
* {{annotated link|Dual-phase evolution}}
* {{annotated link|डवल फेज एवोल्यूशन}}
* {{annotated link|Linear search problem}}
* {{annotated link|लीनियर सर्च प्रोबलम}}
* {{annotated link|No free lunch in search and optimization}}
* {{annotated link|खोज और ऑप्टिमाइज़ेशन में कोई निःशुल्क लंच नहीं}}
* {{annotated link|Recommender system}}, बहुत बड़े डेटा सेट में परिणामों को रैंक करने के लिए सांख्यिकीय विधियों का भी उपयोग करें
* {{annotated link|रेकोमेंडर सिस्टम}}, बहुत बड़े डेटा सेट में परिणामों को रैंक करने के लिए सांख्यिकीय विधियों का भी उपयोग करें
* {{annotated link|Search engine (computing)}}
* {{annotated link|सर्च इंजन (कम्प्यूटिंग)}}
* {{annotated link|Search game}}
* {{annotated link|सर्च गेम}}
* {{annotated link|Selection algorithm}}
* {{annotated link|सिलेक्शन एल्गोरिथ्म}}
* {{annotated link|Solver}}
* {{annotated link|सॉल्वर}}
* {{annotated link|Sorting algorithm}}, कुछ खोज एल्गोरिदम को क्रियान्वित करने के लिए आवश्यक है
* {{annotated link|सोर्टिंग एल्गोरिथ्म}}, कुछ सर्च एल्गोरिदम को क्रियान्वित करने के लिए आवश्यक है
* {{annotated link|Web search engine}}
* {{annotated link|वेब सर्च इंजन}}
श्रेणियाँ:
श्रेणियाँ:
* :श्रेणी:खोज एल्गोरिदम
* :श्रेणी:खोज एल्गोरिदम

Revision as of 15:05, 18 June 2023

एक हैश तालिका का दृश्य प्रतिनिधित्व, एक डेटा संरचना जो सूचना के तेजी से पुनर्प्राप्ति की अनुमति देती है

कंप्यूटर विज्ञान में, एक सर्च कलन विधि एक एल्गोरिथम है जिसे एक सर्च समस्या को हल करने के लिए डिज़ाइन किया गया है। सर्च एल्गोरिदम विशेष डेटा संरचना के अन्दर संग्रहीत जानकारी को पुनः प्राप्त करने के लिए काम करते हैं, या किसी समस्या डोमेन के व्यवहार्य क्षेत्र में निरंतर या असतत चर के साथ गणना की जाती है।


चूँकि सर्च इंजन (कंप्यूटिंग) एल्गोरिदम का उपयोग करते हैं, किन्तु वे सूचना पुनर्प्राप्ति के अध्ययन से संबंधित हैं, एल्गोरिथम के अध्ययन से संबंधित नहीं हैं।

उपयोग करने के लिए उपयुक्त सर्च एल्गोरिदम अधिकांशतः खोजी जा रही डेटा संरचना पर निर्भर करता है, और इसमें डेटा के बारे में पूर्व ज्ञान भी सम्मिलित हो सकता है। विशेष रूप से निर्मित डेटाबेस संरचनाओं, जैसे सर्च ट्री , हैश मैप और डेटाबेस सूचकांक द्वारा सर्च एल्गोरिदम को तेज या अधिक कुशल बनाया जा सकता है।[1][2]

सर्च एल्गोरिदम को तीन प्रकार के एल्गोरिदम में सर्च करने के उनके तंत्र के आधार पर वर्गीकृत किया जा सकता है: रैखिक, बाइनरी और हैशिंग रेखीय सर्च एल्गोरिदम एक रेखीय फैशन में लक्ष्य कुंजी से जुड़े प्रत्येक आवरण की जांच करता है।[3] बाइनरी सर्च एल्गोरिद्म बाइनरी, या आधा-अंतराल, सर्च बार-बार सर्च संरचना के केंद्र को लक्षित करती है और सर्च स्पेस को आधे में विभाजित करती है। सर्च एल्गोरिदम लक्ष्य आवरण मिलने तक कुंजियों की तुलना के आधार पर क्रमिक रूप से आवरण को समाप्त करके रैखिक सर्च में सुधार करते हैं, और एक परिभाषित क्रम के साथ डेटा संरचनाओं पर प्रयुक्त किया जा सकता है।[4] डिजिटल सर्च एल्गोरिथम संख्यात्मक कुंजियों का उपयोग करके डेटा संरचनाओं में अंकों के गुणों के आधार पर कार्य करता है।[5] अंत में, हैश तालिका सीधे कुंजी को हैश फंकशन के आधार पर आवरण करने के लिए मैप करती है।[6]

एल्गोरिदम का मूल्यांकन अधिकांशतः उनकी कम्प्यूटेशनल जटिलता, या अधिकतम सैद्धांतिक रन टाइम द्वारा किया जाता है। उदाहरण के लिए, बाइनरी सर्च फ़ंक्शंस की अधिकतम जटिलता है O(log n), या लघुगणकीय समय सरल शब्दों में, सर्च लक्ष्य को खोजने के लिए आवश्यक संचालन की अधिकतम संख्या सर्च स्पेस के आकार का लघुगणकीय कार्य है।

सर्च एल्गोरिदम के अनुप्रयोग

सर्च एल्गोरिदम के विशिष्ट अनुप्रयोगों में सम्मिलित हैं:

वर्ग

वर्चुअल सर्च स्पेस के लिए

वर्चुअल स्पेस की सर्च के लिए एल्गोरिदम का उपयोग कॉन्सट्रेंट सटिस्फैक्शन समस्या में किया जाता है, जहां लक्ष्य कुछ चर के लिए मान असाइनमेंट का एक सेट खोजना है जो विशिष्ट गणितीय समीकरण और असमानताओं/समानताओं को संतुष्ट करता है। उनका उपयोग तब भी किया जाता है जब लक्ष्य एक चर असाइनमेंट खोजना होता है जो उन चरों के एक निश्चित कार्य को असतत करता है। इन समस्याओं के लिए एल्गोरिदम में मूलभूत ब्रूट-बल सर्च (जिसे भोली या बेख़बर सर्च भी कहा जाता है), और कई प्रकार के ह्यूरिस्टिक कार्य सम्मिलित हैं जो इस स्पेस की संरचना के बारे में आंशिक ज्ञान का लाभ उठाने का प्रयाश करते हैं, जैसे लीनियर रिलैक्सेशन कंस्ट्रेंट जनरेशन और कंस्ट्रेंट प्रोपेगेशन होता है। .

एक महत्वपूर्ण उपवर्ग लोकल सर्च (अनुकूलन) विधियाँ हैं, जो सर्च स्पेस के तत्वों को ग्राफ के शीर्ष (ग्राफ़ सिद्धांत) के रूप में देखती हैं, किनारों के साथ स्थिति पर प्रयुक्त अनुमानों के एक सेट द्वारा परिभाषित है और किनारों के साथ आइटम से आइटम पर जाकर स्पेस को स्कैन करते है, उदाहरण के लिए तीव्रतम अवरोहण या क्रूर-बल सर्च या बेस्ट-फर्स्ट मानदंड के अनुसार, या स्टोचैस्टिक अनुकूलन में इस श्रेणी में सामान्य मेटाह्यूरिस्टिक विधियों की एक विशाल विविधता सम्मिलित है, जैसे तैयार कि हुयी धातु पे पानी चढाने की कला , तब्बू सर्च, ए-टीम्स और जेनेटिक प्रोग्रामिंग है, जो विशिष्ट विधियों से मनमाने ह्यूरिस्टिक्स को जोड़ती हैं। लोकल सर्च के विपरीत वैश्विक सर्च विधियाँ होंटी है। यह विधि तब प्रयुक्त होती है जब सर्च स्पेस सीमित नहीं होता है और दिए गए नेटवर्क के सभी स्टोकेस्टिक खोज एल्गोरिथम चलाने वाली इकाई के लिए उपलब्ध होते हैं।[7]

इस वर्ग में विभिन्न ट्री ट्रैवर्सल भी सम्मिलित हैं, जो तत्वों को ट्री के शीर्ष के रूप में देखते हैं (ग्राफ सिद्धांत), और उस ट्री को कुछ विशेष क्रम में पार करते हैं। उत्तरार्द्ध के उदाहरणों में विस्तृत विधियाँ सम्मिलित हैं जैसे कि प्रूनिंग-ट्री सर्च और चौड़ाई-पहली सर्च, साथ ही विभिन्न ह्यूरिस्टिक-आधारित निर्णय वृक्ष विधियाँ है जैसे बैक ट्रैकिंग और शाखा और बाउंड या सामान्य मेटाह्यूरिस्टिक्स के विपरीत, जो केवल एक संभाव्य अर्थ में सबसे अच्छा काम करता है, इनमें से कई ट्री-सर्च विधियों को पर्याप्त समय दिए जाने पर स्पष्ट या ऑप्टीमल समाधान खोजने की गारंटी दी जाती है। इसे पूर्णता कहते हैं।

एक अन्य महत्वपूर्ण उप-वर्ग में शतरंज या चौसर जैसे बहु-खिलाड़ी खेल का ट्री की सर्च के लिए एल्गोरिदम सम्मिलित हैं, जिनके नोड्स में सभी संभावित गेम स्थितियां सम्मिलित हैं जो वर्तमान स्थिति से उत्पन्न हो सकती हैं। इन समस्याओं में लक्ष्य उस चाल का पता लगाना है जो प्रतिद्वंद्वीओं की सभी संभावित चालों को ध्यान में रखते हुए जीत का सबसे अच्छा मौका प्रदान करती है। इसी तरह की समस्याएं तब होती हैं जब मनुष्यों या मशीनों को निरंतर निर्णय लेने पड़ते हैं जिनके परिणाम पूरी तरह से किसी के नियंत्रण में नहीं होते हैं, जैसे कि रोबोट मार्गदर्शन या विपणन, वित्त या सैन्य रणनीति योजना में इस तरह की समस्या संयुक्त सर्च का कृत्रिम इंटेलिजेंस के संदर्भ में बड़े मापदंड पर अध्ययन किया गया है। इस वर्ग के लिए एल्गोरिदम के उदाहरण मिनिमैक्स एल्गोरिथम अल्फा बीटा प्रूनिंग और ए * एल्गोरिथम और इसके वेरिएंट हैं।

किसी दिए गए रुपरेखा के उप-संरचनाओं के लिए

संयोजी सर्च नाम सामान्यतः एल्गोरिदम के लिए उपयोग किया जाता है जो किसी दिए गए असतत गणित की एक विशिष्ट उप-संरचना की खोज करता है, जैसे कि एक ग्राफ, एक स्ट्रिंग (कंप्यूटर विज्ञान), एक परिमित समूह (गणित), और इसी तरह या कॉम्बिनेटरियल ऑप्टिमाइज़ेशन शब्द का उपयोग सामायतः तब किया जाता है जब लक्ष्य कुछ मापदंड के अधिकतम (या न्यूनतम) मान के साथ उप-संरचना को खोजना होता है। (चूंकि उप-संरचना को सामायतः कंप्यूटर में बाधाओं के साथ पूर्णांक चर के एक सेट द्वारा दर्शाया जाता है, इन समस्याओं को कॉन्सट्रेंट सटिस्फैक्शन या असतत अनुकूलन के विशेष स्थितियों के रूप में देखा जा सकता है; किन्तु वे सामायतः अधिक सार सेटिंग में तैयार और हल किए जाते हैं जहां आंतरिक प्रतिनिधित्व का स्पष्ट रूप से उल्लेख नहीं किया गया है।)

एक महत्वपूर्ण और बड़े मापदंड पर अध्ययन किए गए उपवर्ग एल्गोरिदम ग्राफ़ एल्गोरिदम की सूची हैं, विशेष रूप से ग्राफ ट्रैवर्सल एल्गोरिदम में, किसी दिए गए ग्राफ़ में विशिष्ट उप-संरचनाओं को खोजने के लिए पथ (ग्राफ सिद्धांत) की शब्दावली सबग्राफ, पथ (ग्राफ़ सिद्धांत), सर्किट, और इसी प्रकार उदाहरणों में दिज्क्स्ट्रा का एल्गोरिथ्म, क्रुस्कल का एल्गोरिथ्म, निकटतम समूह एल्गोरिथ्म और प्राइम का एल्गोरिथ्म सम्मिलित हैं।

इस श्रेणी का एक अन्य महत्वपूर्ण उपवर्ग स्ट्रिंग सर्च एल्गोरिथ्म है, जो स्ट्रिंग्स के अन्दर पैटर्न की सर्च करता है। दो प्रसिद्ध उदाहरण हैं बोयर-मूर स्ट्रिंग-सर्च एल्गोरिथम या बॉयर-मूर और नुथ-मॉरिस-प्रैट एल्गोरिदम, और प्रत्यय ट्री डेटा संरचना पर आधारित कई एल्गोरिदम है।

किसी फ़ंक्शन के अधिकतम के लिए खोजें

1953 में, अमेरिकी सांख्यिकीविद् जैक कीफ़र (सांख्यिकीविद्) ने फाइबोनैचि सर्च विधि तैयार की थी, जिसका उपयोग एक अनिमॉडल फ़ंक्शन का अधिकतम पता लगाने के लिए किया जा सकता है और कंप्यूटर विज्ञान में इसके कई अन्य अनुप्रयोग हैं।

क्वांटम कंप्यूटर के लिए

ग्रोवर के एल्गोरिथ्म की तरह क्वांटम कम्प्यूटिंग के लिए डिज़ाइन किए गए सर्च विधि भी हैं, जो डेटा संरचनाओं या ह्यूरिस्टिक्स की सहायता के बिना भी सैद्धांतिक रूप से रैखिक या क्रूर-बल सर्च से तेज़ हैं। जबकि क्वांटम कंप्यूटर के पीछे के विचार और अनुप्रयोग अभी भी पूरी तरह से सैद्धांतिक हैं, ग्रोवर जैसे एल्गोरिदम के साथ अध्ययन किए गए हैं जो क्वांटम कंप्यूटिंग सिस्टम के काल्पनिक भौतिक संस्करणों को स्पष्ट रूप से दोहराते हैं।[8]


यह भी देखें

श्रेणियाँ:

  • :श्रेणी:खोज एल्गोरिदम

संदर्भ

उद्धरण

  1. Beame & Fich 2002, p. 39.
  2. Knuth 1998, §6.5 ("Retrieval on Secondary Keys").
  3. Knuth 1998, §6.1 ("Sequential Searching").
  4. Knuth 1998, §6.2 ("Searching by Comparison of Keys").
  5. Knuth 1998, §6.3 (Digital Searching).
  6. Knuth 1998, §6.4, (Hashing).
  7. Hunter, A.H.; Pippenger, Nicholas (4 July 2013). "चैनल ग्राफ़ में स्थानीय बनाम वैश्विक खोज". Networks: An International Journey. arXiv:1004.2526.
  8. López, G V; Gorin, T; Lara, L (26 February 2008). "पहले और दूसरे-निकटतम-पड़ोसी युग्मन के साथ एक आइसिंग-परमाणु-स्पिन-श्रृंखला क्वांटम कंप्यूटर में ग्रोवर की क्वांटम खोज एल्गोरिथ्म का अनुकरण". Journal of Physics B: Atomic, Molecular and Optical Physics. 41 (5): 055504. arXiv:0710.3196. Bibcode:2008JPhB...41e5504L. doi:10.1088/0953-4075/41/5/055504. S2CID 18796310.


ग्रन्थसूची

किताबें

लेख

बाहरी संबंध