तर्क और घोषणात्मक प्रोग्रामिंग
तर्क और घोषणात्मक प्रोग्रामिंग समस्याओं को संबंधों, तथ्यों और नियमों के रूप में व्यक्त करती है, समाधान खोजने का काम अनुमान इंजन पर छोड़ देती है, बजाय स्पष्ट चरण-दर-चरण निर्देशों के।
Definition
तर्क प्रोग्रामिंग एक घोषणात्मक प्रतिमान है जिसमें एक प्रोग्राम तार्किक क्लॉज़ (तथ्यों और नियमों) का एक सेट होता है, और गणना स्वचालित कटौती द्वारा आगे बढ़ती है, आमतौर पर एकीकरण के साथ रेज़ोल्यूशन, उस ज्ञान के विरुद्ध प्रश्नों का उत्तर देने के लिए।
Scope
यह विषय हॉर्न क्लॉज़ और रेज़ोल्यूशन (जैसे प्रोलॉग में) पर आधारित तर्क प्रोग्रामिंग, कंस्ट्रेंट लॉजिक प्रोग्रामिंग, और इसे कैसे कंप्यूट किया जाए, इसके बजाय क्या होना चाहिए, यह निर्दिष्ट करने के व्यापक घोषणात्मक विचार को शामिल करता है। इसमें एकीकरण (unification), बैकट्रैकिंग खोज, तर्क कार्यक्रमों के मॉडल-सैद्धांतिक और प्रमाण-सैद्धांतिक अर्थ विज्ञान, और नियंत्रण से तार्किक विनिर्देश का पृथक्करण शामिल है।
Core questions
- तार्किक क्लॉज़ से एक लक्ष्य को सिद्ध करके गणना करने का क्या अर्थ है?
- एकीकरण और बैकट्रैकिंग एक संबंधपरक प्रोग्राम पर खोज को कैसे साकार करते हैं?
- नियंत्रण से तर्क का पृथक्करण कैसे सटीक बनाया जाता है?
- कंस्ट्रेंट शुद्ध तर्क प्रोग्रामिंग का विस्तार कैसे करते हैं?
Key theories
- रेज़ोल्यूशन सिद्धांत
- रॉबिन्सन का रेज़ोल्यूशन प्रथम-क्रम तर्क के लिए एक एकल, मशीन-उन्मुख अनुमान नियम देता है, जो निगमनात्मक इंजन प्रदान करता है जो तर्क प्रोग्रामिंग को कम्प्यूटेशनल रूप से व्यवहार्य बनाता है।
- तर्क और नियंत्रण
- कोवाल्स्की का विश्लेषण एक प्रोग्राम की तार्किक सामग्री (जो सत्य है) को उसके नियंत्रण घटक (प्रमाण की खोज कैसे की जाती है) से अलग करता है, तर्क प्रोग्रामिंग को तर्क को स्थिर रखते हुए नियंत्रण को बदलने के तरीके के रूप में तैयार करता है।
- तर्क कार्यक्रमों के घोषणात्मक और प्रक्रियात्मक अर्थ विज्ञान
- लॉयड निश्चित तर्क कार्यक्रमों के मॉडल-सैद्धांतिक, फिक्सपॉइंट और परिचालन अर्थ विज्ञान को औपचारिक रूप देता है और उनके पत्राचार को सिद्ध करता है, तर्क कार्यक्रमों के अर्थ को आधार बनाता है।
Clinical relevance
घोषणात्मक और तर्क-आधारित तकनीकें डेटाबेस क्वेरी भाषाओं, कंस्ट्रेंट सॉल्वर, ज्ञान प्रतिनिधित्व और नियम इंजनों का आधार हैं। एल्गोरिदम के बजाय समस्याओं को निर्दिष्ट करने पर उनका जोर उन्हें संयोजनात्मक खोज, कॉन्फ़िगरेशन और तर्क कार्यों के लिए अच्छी तरह से अनुकूल बनाता है।
History
रॉबिन्सन के 1965 के रेज़ोल्यूशन सिद्धांत ने निगमनात्मक आधारशिला रखी। 1970 के दशक की शुरुआत में कोल्मेराउर और रसेल ने प्रोलॉग बनाया, और कोवाल्स्की ने हॉर्न क्लॉज़ की प्रक्रियात्मक व्याख्या को स्पष्ट किया। यह प्रतिमान 1980 के दशक में फला-फूला, जिसने जापान की पांचवीं पीढ़ी की परियोजना को प्रभावित किया, और बाद में कंस्ट्रेंट लॉजिक प्रोग्रामिंग और आंसर-सेट प्रोग्रामिंग में विस्तारित हुआ।
Debates
- शुद्धता बनाम व्यावहारिक नियंत्रण
- तर्क प्रोग्रामिंग भाषाएँ शुद्ध घोषणात्मक तर्क के आदर्श को स्पष्ट नियंत्रण की व्यावहारिक आवश्यकताओं के साथ संतुलित करती हैं, जैसे कि कट और ऑर्डरिंग, जो दक्षता में सुधार करते हैं लेकिन स्वच्छ तर्क/नियंत्रण पृथक्करण से समझौता करते हैं।
Key figures
- Robert Kowalski
- Alain Colmerauer
- J. Alan Robinson
- John Lloyd
- Philippe Roussel
Related topics
Seminal works
- kowalski1979
- robinson1965
- lloyd1987
- colmerauer1993
Frequently asked questions
- तर्क प्रोग्रामिंग अनिवार्य प्रोग्रामिंग से कैसे भिन्न है?
- संचालनों के अनुक्रम को निर्दिष्ट करने के बजाय, एक तर्क प्रोग्राम तथ्यों और नियमों की घोषणा करता है, और एक अनुमान इंजन उन प्रमाणों की खोज करता है जो प्रश्नों का उत्तर देते हैं, इसलिए प्रोग्रामर इस बात पर ध्यान केंद्रित करता है कि क्या सत्य है, बजाय इसके कि इसे कैसे कंप्यूट किया जाए।
- एकीकरण क्या है?
- एकीकरण एक प्रतिस्थापन खोजने की प्रक्रिया है जो दो तार्किक शब्दों को समान बनाती है; यह मुख्य तंत्र है जिसके द्वारा तर्क प्रोग्राम क्लॉज़ हेड्स के विरुद्ध लक्ष्यों का मिलान करते हैं।