रन-टाइम एल्गोरिदम विशेषज्ञता: Difference between revisions

From Vigyanwiki
(Created page with "कंप्यूटर विज्ञान में, रन-टाइम एल्गोरिथम विशेषज्ञता कुछ प्रकार क...")
 
No edit summary
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[कंप्यूटर विज्ञान]] में, रन-टाइम एल्गोरिथम विशेषज्ञता कुछ प्रकार के महंगे संगणना कार्यों के लिए कुशल एल्गोरिदम बनाने की एक पद्धति है। कार्यप्रणाली स्वचालित प्रमेय साबित करने के क्षेत्र में उत्पन्न होती है, और अधिक विशेष रूप से, [[मैं पिशाच सिद्धांत को सिद्ध करूंगा]] प्रोजेक्ट में।
कंप्यूटर विज्ञान में, '''रन-टाइम एल्गोरिथम विशेषज्ञता''' कुछ प्रकार के कीमती संगणना कार्यों के लिए उपयुक्त एल्गोरिदम (कलन विधि) बनाने की एक पद्धति है। कार्यप्रणाली स्वचालित प्रमेय प्रमाणित करने के क्षेत्र में और विशेष रूप से वैम्पायर प्रमेय प्रोवर परियोजना में उत्पन्न होती है।


यह विचार प्रोग्राम अनुवाद के अनुकूलन में [[आंशिक मूल्यांकन]] के उपयोग से प्रेरित है।
यह विचार प्रोग्राम अनुवाद के अनुकूलन में आंशिक मूल्यांकन के उपयोग से प्रेरित है। प्रमेय सिद्ध करने वालों में कई मुख्य संक्रियाएँ निम्नलिखित प्रतिरूप प्रदर्शित करती हैं। मान लीजिए कि हमें कुछ एल्गोरिदम <math>\mathit{alg}(A,B)</math> ऐसी स्थिति में कार्यान्वयन करने की आवश्यकता है जहां <math>A</math> के संभावित कई अलग-अलग मानों के लिए <math>B</math> का मान नियत है। इसे कुशलतापूर्वक करने के लिए, हम प्रत्येक नियत <math>A</math> के लिए <math>\mathit{alg}</math> की विशेषज्ञता जाँचने का प्रयास कर सकते हैं, अर्थात, ऐसा एल्गोरिदम <math>\mathit{alg}_A</math>, जो <math>\mathit{alg}_A(B)</math> को क्रियान्वित कर रहा है, कार्यान्वयन <math>\mathit{alg}(A,B)</math> के समतुल्य है।
प्रमेय सिद्ध करने वालों में कई मुख्य संक्रियाएँ निम्नलिखित पैटर्न प्रदर्शित करती हैं।
मान लीजिए कि हमें कुछ एल्गोरिदम निष्पादित करने की आवश्यकता है <math>\mathit{alg}(A,B)</math> ऐसी स्थिति में जहां का मूल्य <math>A</math> के संभावित रूप से कई अलग-अलग मानों के लिए नियत है <math>B</math>. इसे कुशलतापूर्वक करने के लिए, हम एक विशेषज्ञता खोजने का प्रयास कर सकते हैं <math>\mathit{alg}</math> प्रत्येक निश्चित के लिए <math>A</math>, यानी, ऐसा एल्गोरिदम <math>\mathit{alg}_A</math>, वह क्रियान्वित <math>\mathit{alg}_A(B)</math> क्रियान्वित करने के बराबर है <math>\mathit{alg}(A,B)</math>.


विशिष्ट एल्गोरिथ्म सामान्य की तुलना में अधिक कुशल हो सकता है, क्योंकि यह निश्चित मूल्य के कुछ विशेष गुणों का फायदा उठा सकता है <math>A</math>. आमतौर पर, <math>\mathit{alg}_A(B)</math> कुछ ऑपरेशनों से बच सकते हैं <math>\mathit{alg}(A,B)</math> प्रदर्शन करना होगा, अगर उन्हें इस विशेष पैरामीटर के लिए बेमानी माना जाता है <math>A</math>.
विशिष्ट एल्गोरिथ्म सामान्य की तुलना में अधिक उपयुक्त हो सकता है, क्योंकि यह नियत मान <math>A</math> के कुछ विशेष गुणों का समुपयोजन कर सकता है। सामान्य रूप से, <math>\mathit{alg}_A(B)</math> कुछ संक्रियाओ से बच सकते हैं जिन्हे <math>\mathit{alg}(A,B)</math> प्रदर्शन करना होगा, यदि वे इस विशेष पैरामीटर <math>A</math> के लिए अनावश्यक माने जाते हैं। विशेष रूप से, हम प्रायः कुछ परीक्षणों की पहचान कर सकते हैं जो <math>A</math>, अनियंत्रित लूप और रिकर्सन (पुनरावर्तन) इत्यादि के लिए सत्य या असत्य हैं।
विशेष रूप से, हम अक्सर कुछ परीक्षणों की पहचान कर सकते हैं जो सही या गलत हैं <math>A</math>, अनरोल लूप और रिकर्सन इत्यादि।


== आंशिक मूल्यांकन से अंतर ==
== आंशिक मूल्यांकन से अंतर ==
रन-टाइम विशेषज्ञता और आंशिक मूल्यांकन के बीच मुख्य अंतर यह है कि <math>A</math> जिस पर <math>\mathit{alg}</math> विशिष्ट हैं, स्थिर रूप से ज्ञात नहीं हैं, इसलिए विशेषज्ञता रन-टाइम पर होती है।
रन-टाइम विशेषज्ञता और आंशिक मूल्यांकन के बीच मुख्य अंतर यह है कि <math>A</math> का मान जिस पर <math>\mathit{alg}</math> विशिष्ट है, सांख्यिकीय रूप से ज्ञात नहीं है, इसलिए विशेषज्ञता रन-टाइम पर होती है।


एक महत्वपूर्ण तकनीकी अंतर भी है। कुछ प्रोग्रामिंग भाषा में कोड के रूप में स्पष्ट रूप से दर्शाए गए एल्गोरिदम पर आंशिक मूल्यांकन लागू होता है। रन-टाइम में, हमें किसी ठोस प्रतिनिधित्व की आवश्यकता नहीं होती है <math>\mathit{alg}</math>. हमें केवल कल्पना करनी है <math>\mathit{alg}</math> जब हम विशेषज्ञता प्रक्रिया को प्रोग्राम करते हैं।
एक महत्वपूर्ण तकनीकी अंतर भी है। कुछ प्रोग्रामिंग भाषा में कोड के रूप में स्पष्ट रूप से दर्शाए गए एल्गोरिदम पर आंशिक मूल्यांकन लागू होता है। रन-टाइम में, हमें <math>\mathit{alg}</math> के किसी मूर्त प्रतिनिधित्व की आवश्यकता नहीं होती है। हमें केवल <math>\mathit{alg}</math> की कल्पना करनी है जब हम विशेषज्ञता प्रक्रिया की योजना बनाते हैं। हमें केवल विशिष्ट संस्करण <math>\mathit{alg}_A</math>का एक मूर्त प्रतिनिधित्व चाहिए। इसका यह भी अर्थ है कि हम एल्गोरिदम को विशिष्ट बनाने के लिए किसी भी सार्वभौमिक तरीके का उपयोग नहीं कर सकते हैं, जो सामान्य रूप से आंशिक मूल्यांकन के स्थिति में होता है। इसके अतिरिक्त, हमें प्रत्येक विशेष एल्गोरिथम <math>\mathit{alg}</math> के लिए एक विशेषज्ञता प्रक्रिया को प्रोग्राम बनाना होगा ऐसा करने का एक महत्वपूर्ण लाभ यह है कि हम <math>\mathit{alg}</math> की विशिष्टताओं और <math>A</math> और <math>B</math>, के प्रतिनिधित्व का समुपयोजन करने वाली कुछ शक्तिशाली हॉक योजना का उपयोग कर सकते हैं, जो किसी भी सार्वभौमिक विशेषज्ञता विधियों की पहुंच से बाहर हैं।
हम सभी की जरूरत है विशेष संस्करण का एक ठोस प्रतिनिधित्व है <math>\mathit{alg}_A</math>. इसका यह भी अर्थ है कि हम एल्गोरिदम को विशिष्ट बनाने के लिए किसी भी सार्वभौमिक तरीके का उपयोग नहीं कर सकते हैं, जो आमतौर पर आंशिक मूल्यांकन के मामले में होता है। इसके बजाय, हमें प्रत्येक विशेष एल्गोरिथम के लिए एक विशेषज्ञता प्रक्रिया को प्रोग्राम करना होगा <math>\mathit{alg}</math>. ऐसा करने का एक महत्वपूर्ण लाभ यह है कि हम विशिष्टताओं का फायदा उठाने के लिए कुछ शक्तिशाली तदर्थ तरकीबों का उपयोग कर सकते हैं <math>\mathit{alg}</math> और का प्रतिनिधित्व <math>A</math> और <math>B</math>, जो किसी भी सार्वभौमिक विशेषज्ञता विधियों की पहुंच से बाहर हैं।


== संकलन के साथ विशेषज्ञता ==
== संकलन के साथ विशेषज्ञता ==


विशेष एल्गोरिथम को एक ऐसे रूप में दर्शाया जाना चाहिए जिसकी व्याख्या की जा सके।
विशेष एल्गोरिथम को एक ऐसे रूप में दर्शाया जाना चाहिए जिसकी व्याख्या की जा सके। कई स्थितियों में, सामान्य रूप से जब <math>\mathit{alg}_A(B)</math> को कई मानों <math>B</math> पर एक ही समय में गणना करना होता है, तो हम <math>\mathit{alg}_A</math> एक विशेष [[अमूर्त मशीन]] के कोड के रूप में लिख सकते हैं, और हम प्रायः ऐसा कहते हैं कि <math>A</math> संकलित है। तब कोड को अतिरिक्त रूप से उत्तर-संरक्षण रूपांतरण द्वारा अनुकूलित किया जा सकता है जो केवल अमूर्त मशीन के निर्देशों के सिमैन्टिक (शब्दार्थ) पर निर्भर करता है।
कई स्थितियों में, आमतौर पर कब <math>\mathit{alg}_A(B)</math> कई मूल्यों पर गणना की जानी है <math>B</math> एक पंक्ति में, हम लिख सकते हैं <math>\mathit{alg}_A</math> एक विशेष [[अमूर्त मशीन]] के कोड के रूप में, और हम अक्सर ऐसा कहते हैं <math>A</math> संकलित है।
तब कोड को अतिरिक्त रूप से उत्तर-संरक्षण परिवर्तनों द्वारा अनुकूलित किया जा सकता है जो केवल अमूर्त मशीन के निर्देशों के शब्दार्थ पर निर्भर करता है।


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


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


== डेटा-और-एल्गोरिदम विशेषज्ञता ==
== डेटा-और-एल्गोरिदम विशेषज्ञता ==


ऐसे हालात हैं जब कई उदाहरण हैं <math>A</math> लंबी अवधि के भंडारण और कॉल के लिए अभिप्रेत है <math>\mathit{alg}(A,B)</math> भिन्न के साथ होता है <math>B</math> एक अप्रत्याशित क्रम में।
ऐसी स्थितियाँ होती हैं जब <math>A</math> के कई उदाहरण लंबी अवधि के संग्रहण के लिए अभिप्रेत होते हैं और <math>\mathit{alg}(A,B)</math> की कॉल एक अप्रत्याशित क्रम में अलग-अलग <math>B</math> के साथ होती हैं। उदाहरण के लिए, हमें पहले <math>\mathit{alg}(A_1,B_1)</math> और <math>\mathit{alg}(A_2,B_2)</math>, और <math>\mathit{alg}(A_1,B_3)</math>, इत्यादि को जांचना पड़ सकता है। ऐसी परिस्थितियों में, मेमोरी के अत्यधिक उपयोग के कारण संकलन के साथ पूर्ण-स्तरीय विशेषज्ञता उपयुक्त नहीं हो सकती है। हालाँकि, हम कभी-कभी प्रत्येक मान <math>A</math> के लिए सुसम्बद्ध विशेष प्रतिनिधित्व <math>A^{\prime}</math>प्राप्त कर सकते है, जिसे <math>A</math> के साथ या इसके अतिरिक्त संग्रहीत किया जा सकता है हम एक वैरिएंट <math>\mathit{alg}^{\prime}</math> को भी परिभाषित करते हैं जो इस प्रतिनिधित्व पर काम करता है और <math>\mathit{alg}(A,B)</math> के लिए कोई भी कॉल <math>\mathit{alg}^{\prime}(A^{\prime},B)</math>, द्वारा प्रतिस्थापित किया जाता है, जो उसी काम को तीव्रता से करने के लिए अभिप्रेत है।
उदाहरण के लिए, हमें जाँच करनी पड़ सकती है <math>\mathit{alg}(A_1,B_1)</math> पहले तो <math>\mathit{alg}(A_2,B_2)</math>, तब <math>\mathit{alg}(A_1,B_3)</math>, और इसी तरह।
ऐसी परिस्थितियों में, अत्यधिक स्मृति उपयोग के कारण संकलन के साथ पूर्ण पैमाने पर विशेषज्ञता उपयुक्त नहीं हो सकती है।
हालाँकि, हम कभी-कभी एक कॉम्पैक्ट विशेष प्रतिनिधित्व पा सकते हैं <math>A^{\prime}</math>
हरएक के लिए <math>A</math>, जिसे इसके साथ या इसके बजाय संग्रहीत किया जा सकता है <math>A</math>.
हम एक प्रकार को भी परिभाषित करते हैं <math>\mathit{alg}^{\prime}</math> जो इस प्रतिनिधित्व पर काम करता है
और कोई भी कॉल <math>\mathit{alg}(A,B)</math> द्वारा प्रतिस्थापित किया जाता है <math>\mathit{alg}^{\prime}(A^{\prime},B)</math>, उसी कार्य को तेज़ी से करने का इरादा रखता है.


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


* [[प्स्य्को]], पायथन (प्रोग्रामिंग लैंग्वेज) के लिए एक विशेषज्ञ रन-टाइम कंपाइलर
* साइको, पायथन (प्रोग्रामिंग भाषा) के लिए एक विशेष रन-टाइम कंपाइलर
* [[मल्टी-स्टेज प्रोग्रामिंग]]
* [[मल्टी-स्टेज प्रोग्रामिंग]]


Line 54: Line 36:
* A. Riazanov and A. Voronkov, [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.8542 Efficient Instance Retrieval with Standard and Relational Path Indexing], Information and Computation, 199(1-2), 2005 (''contains another illustration of the method'')
* A. Riazanov and A. Voronkov, [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.8542 Efficient Instance Retrieval with Standard and Relational Path Indexing], Information and Computation, 199(1-2), 2005 (''contains another illustration of the method'')
* A. Riazanov, [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.2624 "Implementing an Efficient Theorem Prover"], PhD thesis, The University of Manchester, 2003 (''contains the most comprehensive description of the method and many examples'')
* A. Riazanov, [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.2624 "Implementing an Efficient Theorem Prover"], PhD thesis, The University of Manchester, 2003 (''contains the most comprehensive description of the method and many examples'')
[[Category: एल्गोरिदम]] [[Category: सॉफ्टवेयर अनुकूलन]]


[[Category: Machine Translated Page]]
[[Category:Created On 18/02/2023]]
[[Category:Created On 18/02/2023]]
[[Category:Machine Translated Page]]
[[Category:सॉफ्टवेयर अनुकूलन]]

Latest revision as of 10:33, 7 March 2023

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

यह विचार प्रोग्राम अनुवाद के अनुकूलन में आंशिक मूल्यांकन के उपयोग से प्रेरित है। प्रमेय सिद्ध करने वालों में कई मुख्य संक्रियाएँ निम्नलिखित प्रतिरूप प्रदर्शित करती हैं। मान लीजिए कि हमें कुछ एल्गोरिदम ऐसी स्थिति में कार्यान्वयन करने की आवश्यकता है जहां के संभावित कई अलग-अलग मानों के लिए का मान नियत है। इसे कुशलतापूर्वक करने के लिए, हम प्रत्येक नियत के लिए की विशेषज्ञता जाँचने का प्रयास कर सकते हैं, अर्थात, ऐसा एल्गोरिदम , जो को क्रियान्वित कर रहा है, कार्यान्वयन के समतुल्य है।

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

आंशिक मूल्यांकन से अंतर

रन-टाइम विशेषज्ञता और आंशिक मूल्यांकन के बीच मुख्य अंतर यह है कि का मान जिस पर विशिष्ट है, सांख्यिकीय रूप से ज्ञात नहीं है, इसलिए विशेषज्ञता रन-टाइम पर होती है।

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

संकलन के साथ विशेषज्ञता

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

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

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

डेटा-और-एल्गोरिदम विशेषज्ञता

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

यह भी देखें

संदर्भ


अग्रिम पठन

  • A. Riazanov and A. Voronkov, "Efficient Checking of Term Ordering Constraints", Proc. IJCAR 2004, Lecture Notes in Artificial Intelligence 3097, 2004 (compact but self-contained illustration of the method)
  • A. Riazanov and A. Voronkov, Efficient Instance Retrieval with Standard and Relational Path Indexing, Information and Computation, 199(1-2), 2005 (contains another illustration of the method)
  • A. Riazanov, "Implementing an Efficient Theorem Prover", PhD thesis, The University of Manchester, 2003 (contains the most comprehensive description of the method and many examples)