2010-10-13 26 views
17

कई प्रोग्रामर मैंने विश्वविद्यालय में प्रोलॉग का अध्ययन किया, लेकिन केवल बहुत कम। मैं समझता हूं कि प्रोलॉग और डेलिटल निकट से संबंधित हैं, लेकिन डेलिटल आसान है? साथ ही, मेरा मानना ​​है कि मैंने पढ़ा है कि डेलिटल तर्क खंडों के आदेश पर निर्भर नहीं है, लेकिन मुझे यकीन नहीं है कि यह फायदे क्यों हैं। CLIPS माना जाता है कि पूरी तरह से अलग है, लेकिन यह समझने के लिए मेरे लिए बहुत सूक्ष्म है। क्या कोई अन्य भाषाओं पर भाषाओं की सामान्य हाइलाइट्स प्रदान करने के लिए कृपया कर सकता है?सूची बनाम CLIPS बनाम Prolog

+0

http: //en.wikipedia है।संगठन/विकी/सूची – starblue

उत्तर

15

डेलॉग प्रोलॉग का सबसेट है। ट्यूरिंग पूरा हो गया है

  1. एक API जो नियमों का समर्थन और प्रश्नों
  2. यकीन है कि बनाना होगा सभी प्रश्नों को समाप्त

prolog अपनाने: सबसेट जो DATALOG किया जाता है मन में दो बातें हैं। सूची नहीं है।

रास्ते से बाहर निकलना, चलो देखते हैं कि प्रोलॉग क्लिप के साथ तुलना कैसे करता है।

प्रोल की विशेषज्ञता "समस्या निवारण" है जबकि क्लिप एक "विशेषज्ञ प्रणाली" है। अगर मैं सही ढंग से समझता हूं, "समस्या निवारण" में कोड और डेटा का उपयोग करके विशेषज्ञता शामिल है। "विशेषज्ञ प्रणाली" ज्यादातर विशेषज्ञता व्यक्त करने के लिए डेटा संरचनाओं का उपयोग करते हैं। http://en.wikipedia.org/wiki/Expert_system#Comparison_to_problem-solving_systems

देखना एक और तरीका है इस पर गौर करने के लिए है:

विशेषज्ञ प्रणालियों आधार है कि सबसे (यदि सभी नहीं) के परिणामों में जाना जाता है पर कार्य करते हैं। इन सभी परिणामों को डेटा में संकलित किया गया है और फिर एक विशेषज्ञ प्रणाली में खिलाया जाता है। विशेषज्ञ प्रणाली को एक परिदृश्य दें, विशेषज्ञ प्रणाली संकलित डेटा, उर्फ ​​ज्ञान आधार से परिणाम की गणना करती है। यह हमेशा एक "एक संख्या भी प्लस एक संख्या भी हमेशा" सोच की तरह है।

समस्या निवारण प्रणालियों में समस्या का अपूर्ण दृश्य है। इसलिए मॉडलिंग डेटा और व्यवहार के साथ शुरू होता है, जिसमें ज्ञान आधार शामिल होता है (यह "कोने केस" शब्द को न्याय देता है) और "अगर हम दो से छह जोड़ते हैं, तो हम आठ के साथ समाप्त होते हैं। आठ द्वारा विभाजित किया जाता है दो? तो यह भी "

+1

प्रोलॉग से संबंधित, डेलिटल में कोई फ़ंक्शन प्रतीक नहीं है (और इस प्रकार कोई वृक्ष उन्मुख संरचनाएं, केवल स्थिरांक और चर के साथ काम करने के लिए) और पूरी तरह से घोषणात्मक (कोई कटौती नहीं है, और खंडों को पुन: व्यवस्थित करके कोई भिन्न व्यवहार नहीं है)। –

+2

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

+0

... और अंत में, आप प्रोलॉग में फॉरवर्ड-चेनर को कार्यान्वित कर सकते हैं। –

21

CLIPS और Prolog/Datalog के बीच का अंतर यह है कि CLIPS एक "उत्पादन नियम प्रणाली" है जो आगे बढ़ने द्वारा संचालित होती है: तथ्यों और नियमों का एक सेट दिया जाता है, यह नए तथ्यों के हर संभव व्युत्पन्न करने की कोशिश करेगा और स्मृति में उन्हें स्टोर करें। फिर एक प्रश्न का उत्तर यह जांचकर दिया जाता है कि यह तथ्य स्टोर में कुछ मेल खाता है या नहीं। तो, क्लिप में, अगर आप (छद्म वाक्य रचना) है:

parent(X,Y) => child(Y,X) 
parent(john,mary) 

इसे तुरंत child(mary,john) निकाले जाते हैं और कहा कि वास्तव याद रखेंगे। यह बहुत तेज़ हो सकता है, लेकिन संभावित नियमों पर प्रतिबंध लगाता है और स्मृति लेता है।

प्रोलॉग और डेलिवरी पिछड़े चेनिंग द्वारा संचालित है, जिसका अर्थ है कि क्वेरी साबित करने का प्रयास करके एक क्वेरी (predicate कॉल) का उत्तर दिया जाता है, यानी Prolog/Datalog प्रोग्राम चला रहा है। प्रोलॉग एक ट्यूरिंग पूर्ण प्रोग्रामिंग भाषा है, इसलिए इसमें कोई एल्गोरिदम लागू किया जा सकता है।

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

+4

विशेष रूप से, सूची "संबंधपरक डेटाबेस पूछताछ" के लिए है और रिकर्सिव एसक्यूएल के बराबर है। [यह प्रस्तुति] देखें (http://webdam.inria.fr/College/090512Abiteboul.pdf)। [डेटामिक] (http://www.flyingmachinestudios.com/programming/datomic-for-five-year-olds/) डेटाबेस डेलिमेंट क्वेरीज़ का समर्थन करता है। –

+1

प्रोलॉग के विपरीत, सूची के अर्थशास्त्र में कुछ भी पिछड़ा चेनिंग निर्दिष्ट नहीं करता है। आगे और पीछे दोनों चेनिंग का उपयोग किया जा सकता है और उपयोग किया जा सकता है। – seanmcl

+0

@seanmcl फॉरवर्ड चेनिंग प्रोलॉग में [बाधा प्रबंधन नियम] (https://en.wikipedia.org/wiki/Constraint_Handling_Rules) का उपयोग करके भी संभव है। –