AI प्रोग्रामिंग के लिए Prolog क्यों अच्छा है? [बन्द है]


25

मैं एआई प्रोग्रामिंग के लिए उपयोग की जाने वाली प्रोग्रामिंग भाषाओं पर शोध कर रहा हूं। मुझे पता है कि LISP को मेरे विश्वविद्यालय में AI प्रोग्रामिंग भाषा के रूप में पढ़ाया जाता है, लेकिन Prolog शायद ही कभी होता है। मैं प्रोलॉग का शौकीन हूं, लेकिन मैं एआई प्रोग्रामर नहीं हूं, इसलिए मुझे नहीं लगता कि मैं खुद के लिए जज बनने के योग्य हूं, इसलिए प्रोलॉग LISP / स्कीम से बेहतर है। मुझे आश्चर्य हो रहा था कि क्या प्रोग्रामर्स के पास इस विषय पर कोई इनपुट है।

आप कैसे तर्क दे सकते हैं कि प्रोलॉग एआई प्रोग्रामिंग के लिए अधिक उपयोगी होगा?

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

क्या एआई में प्रोलॉग के लिए कुछ और कहा जा सकता है?


1
लिस्प में एक प्रोलॉग संकलक / दुभाषिया लिखना बहुत काम नहीं है। पॉल ग्राहम का ऑन लिस्प में एक उदाहरण है ।
लैरी कोलेमन

मेरे एक सहपाठी मुझे भी यह बता रहे थे। मुझे यह वास्तव में दिलचस्प लगा कि LISP के प्रतीकात्मक हेरफेर ने मुझे प्रोलॉग को फिर से बनाने दिया। अच्छा एक तरफ के लिए धन्यवाद!
2rs2ts

4
@ लॉरी कोलमैन: लिस्प में एक भोले प्रोल संकलक / दुभाषिया लिखना बहुत काम नहीं है। एक ऐसा बनाना जो किसी भी भाषा में कुशल और पूरी तरह कार्यात्मक हो, गैर-तुच्छ हो।
मेरे सही विकल्प

जवाबों:


19

आर्टिफिशियल इंटेलिजेंस के प्रस्तावना से लेकर प्रोग्लोग प्रोग्रामिंग तक :

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

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


यहां मेरा मामूली जोड़ यह होगा कि प्रोलोग आपको तथ्यों की घोषणा करने की अनुमति देता है , और फिर उन तथ्यों के आधार पर नियम बनाता है। आपका नियम तो Prolog द्वारा इस्तेमाल किया जा सकता कारण और तार्किक द्वारा अन्य प्रश्नों का जवाब बात का अनुमान लगाना जवाब। उदाहरण के लिए, यदि कोई तथ्य बताता है कि A, B का पूर्वज है और एक अन्य तथ्य बताता है कि B, C का पूर्वज है, तो प्रोलॉग यह कह सकता है कि A को C का पूर्वज होना चाहिए, क्योंकि आपको इसकी जाँच करने के लिए एक एल्गोरिदम लिखना होगा।
code_dredd

25

मैंने अपने अंडरग्राउंड में एआई कोर्स के लिए एक परिचय लिया, जिसने हमें एक विशेषज्ञ प्रणाली को लागू करने के लिए प्रोलॉग का इस्तेमाल किया।

एक विशेषज्ञ प्रणाली सॉफ्टवेयर का एक टुकड़ा है जिसका उपयोग एक बहुत ही विशिष्ट समस्या को हल करने के लिए किया जाता है जिसका समाधान उच्च संख्या में नियमों और चर पर निर्भर है।

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

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

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


मैंने अपने शोध में पढ़ा कि प्रोलॉग विशेषज्ञ प्रणालियों को लागू करना आसान बनाता है। कुछ स्पष्टीकरण के साथ कि समर्थन के लिए धन्यवाद :)
2rs2ts

16

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

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

एक SQL क्वेरी, यदि आप समान तर्क को C में समान रूप से लागू करने के लिए थे, तो लूपिंग की तुलना में बहुत अधिक और यदि / और सशर्त की आवश्यकता नहीं होगी।

Prolog क्वेरी, C में कार्यान्वित की जाती है, जिसे कम से कम (कम से कम) यूनियन-खोज तकनीक का उपयोग करके एक पीछे की खोज की आवश्यकता होगी। और वह, फिर से, एक भोला समाधान है।

एक निश्चित प्रकार की AI प्रोग्रामिंग में बहुत सारे प्रकार के खोज शामिल हैं जो प्रोलॉग करता है। अप्रत्याशित रूप से, वास्तव में - मूल रूप से एआई प्रोग्रामिंग लिस्प या किसी अन्य भाषा में की गई थी, लेकिन प्रोलोग को विशेष रूप से काम करने के लिए लिखा गया था।

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


3

मैंने विश्वविद्यालय में 2 प्रोलॉग मॉड्यूल लिए और भाषा में विकसित होने का बहुत आनंद लिया।

विशेषज्ञ प्रणालियों के लिए इसका विशेष रूप से अच्छा है, मैंने एक चिकित्सा सिम्पटम निदान लिखा है।

जिस तरह से यह मुझे समझाया गया था कि लिस्प कुछ देशों में अधिक इस्तेमाल किया जाता है और दूसरों में प्रोलॉग।

जिसके संदर्भ में सबसे अच्छा है, मैंने केवल लिस्प को संक्षेप में कवर किया है जब मैंने एक सैद्धांतिक कंप्यूटर विज्ञान मॉड्यूल में लैम्ब्डा कैलकुलस किया था तो मैं प्रोलॉग के लिए पक्षपाती हूं।

यदि आप उत्तर प्राप्त करने के लिए नियमों और तथ्यों से निपटने के लिए एक एप्लिकेशन विकसित कर रहे हैं तो प्रोलॉग बहुत अच्छा है और स्वाभाविक रूप से बैकट्रैकिंग का समर्थन करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.