आंसर सेट प्रोग्रामिंग

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

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

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

आंसर सेट प्रोग्रामिंग भाषा AnsProlog
लपरसे उस प्रोग्राम का नाम है जिसे मूल रूप से आंसर सेट सॉल्वर के लिए प्रतीक ग्राउंडिंग टूल (फ्रंट-एंड) के रूप में बनाया गया था [http: //www.tcs.hut.fi/Software/मॉडल / मॉडल ]। लपरसे द्वारा स्वीकार की जाने वाली भाषा अब सामान्य रूप से AnsProlog के नाम से जानी जाती है, जिसका पूरा नाम है Answer Set Programming in Logic. यह अब कई अन्य आंसर सेट सॉल्वर्स में भी एक ही विधि से उपयोग की जाती है, जिनमें आसैट, [https:/ /potassco.org/क्लैप/ क्लैप], cmodels, gNt, nomore++ और pbmodels सम्मलित हैं। इसकी एक अपवाद है (dlv एके लिए लिखी गई ASP प्रोग्रामों का सिंटैक्स कुछ अलग होता है।) AnsProlog प्रोग्राम निम्नलिखित रूप के नियमों से मिलता है।

प्रतीक  (अगर) उस स्थिति में छोड़ दिया जाता है जब   खाली होता है; ऐसे नियमों को तथ्य कहा जाता है। लपरसे के सबसे सरल प्रकार के नियमों में निषेध होती हैं।

इस भाषा में सम्मलित एक और उपयोगी रचना चयन (choice) है। उदाहरण के लिए, चयन नियम।

कहता है: पूर्णांकों $$p,q,r$$ में से छांटें कि स्थिर मॉडल में सम्मलित किसे करें। इस चयन नियम वाले लपरसे प्रोग्राम में कोई अन्य नियम नहीं होते हैं, और इसके 8 स्थिर मॉडल होते हैं - $$\{p,q,r\}$$.के अन्योन्य उपसंख्यक। एक स्थिर मॉडल की परिभाषा चयन नियमों वाले प्रोग्रामों के लिए भी सामान्य रूप से की जाती है। चयन नियमों को स्थिर मॉडल सांत्वनिकता के अनुसार प्रस्तावात्मक सूत्रों के लिए संक्षेप माना जा सकता है। उदाहरण के लिए, ऊपर दिए गए चुनाव नियम को तीन बहिष्कृत मध्य सूत्रों के संयोजन के लिए आशुलिपि के रूप में देखा जा सकता है:


 * $$(p\lor\neg p)\land(q\lor\neg q)\land(r\lor\neg r).$$

लपरसे की भाषा हमें "प्रतिबद्ध" चयन नियम भी लिखने की अनुमति देती है, जैसे कि:-

यह नियम कहता है: पूर्णांकों $$p,q,r$$, में से कम से कम 1 चुनें, लेकिन 2 से अधिक नहीं। स्थिर मॉडल सांत्वनिकता के अनुसार इस नियम का अर्थ प्रस्तावात्मक सूत्र द्वारा प्रतिष्ठित है।


 * $$(p\lor\neg p)\land(q\lor\neg q)\land(r\lor\neg r)$$
 * $$\land\,(p\lor q\lor r)\land\neg(p\land q\land r).$$

गणना सीमा नियम एक नियम के शरीर में भी उपयोग की जा सकती है, उदाहरण के लिए:-

एक लपरसे प्रोग्राम में इस प्रतिबंध को जोड़ने से उन स्थिर मॉडल्स को छोड़ दिया जाता है जिनमें $$p,q,r$$.के कम से कम 2 पूर्णांक उपस्थित होते हैं। इस नियम का अर्थ प्रस्तावात्मक सूत्र द्वारा प्रतिष्ठित किया जा सकता है।


 * $$\neg((p\land q)\lor(p\land r)\lor(q\land r)).$$

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

के समान अर्थ है

प्रोग्राम

के लिए आशुलिपि है

एक श्रेणी का रूप है: जहां start और end निर्धारित मान वाले अंकगणितीय व्यक्तियां हैं। रेंज एक नोटेशनल शॉर्टकट है जिसका प्रमुख रूप से उपयोग संगत विधि से संख्यात्मक डोमेन को परिभाषित करने के लिए किया जाता है। उदाहरण के लिए, तथ्य

का शॉर्टकट है

समान शब्दार्थ वाले नियम निकायों में रेंज का भी उपयोग किया जा सकता है।

एक सशर्त शाब्दिक रूप का है:

यदि   का विस्तार  है, तो ऊपर दी गई शर्त को सांत्वनिक रूप से लिखना   के स्थान पर लिखने के समानार्थी होता है। उदाहरण के लिए,

के लिए आशुलिपि है

स्थिर मॉडल बनाना
फ़ाइल  में संग्रहीत लपरसे प्रोग्राम का एक स्थिर मॉडल खोजने के लिए  हम कमांड का उपयोग करते हैं

विकल्प 0 मॉडल को कार्यक्रम के सभी स्थिर मॉडलों को खोजने का निर्देश देता है। उदाहरण के लिए, यदि फ़ाइल   में नियम हैं

तब कमांड आउटपुट उत्पन्न करता है

ग्राफ रंग
एक -ग्राफ $$G = \left\lang V, E\right\rang$$ का एन-रंगीकरण ($$n$$-coloring) एक ऐसा फ़ंक्शन $$\mathrm{color}: V\to\{1,\dots,n\}$$ होता है जहां $$\mathrm{color}(x)\neq \mathrm{color}(y)$$ आसन्न शीर्षों की प्रत्येक जोड़ी के लिए $$(x,y)\in E$$. हम एक खोजने के लिए एएसपी का उपयोग करना चाहेंगे $$n$$किसी दिए गए ग्राफ का रंग (या निर्धारित करें कि यह अस्तित्व में नहीं है)।

इसे निम्नलिखित लपरसे प्रोग्राम का उपयोग करके किया जा सकता है

पंक्ति 1 संख्याओं $$1,\dots,n$$ को रंगों के रूप में परिभाषित किया जाता है। पंक्ति  2 में चयन नियम के अनुसार, प्रत्येक वर्टेक्स x को एक अद्वितीय रंग i से संबंधित किया जाना चाहिए। पंक्ति 3 में प्रतिबंध लगाती है कि वर्टेक्स $$x$$ और $$y$$ को एक-दूसरे से जुड़े हुए होने की स्थिति में वही रंग नहीं दिया जाना चाहिए।

यदि हम इस फ़ाइल को एक ग्राफ $$G$$, की परिभाषा के साथ मिलाएं, जैसे कि निम्नलिखित हिंदी में:

और इस पर कमांड लाइन पर निर्दिष्ट एन के आंकड़ी मान के साथ इस पर स्मॉडेल्स (मॉडल ) को चलाएं, तो मॉडल के आउटपुट में उपविभाग के रूप में $$\mathrm{color}(\dots,\dots)$$ के आयाम (atoms) एक $$n$$- रंगीकरण को $$G$$ प्रतिष्ठित करेंगे।

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

बड़ा गिरोह
एक ग्राफ में एक क्लिक ( क्लिके ) एक ऐसा सेट होता है जिसमें हर दो संबंधित वर्टेक्स होते हैं। निम्नलिखित लपरसे प्रोग्राम दिए गए ग्राफ में एक आकार $$\geq n$$ की क्लिक ढूंढता है या यह निर्धारित करता है कि ऐसी क्लिक उपस्थित नहीं है: यह एक और "उत्पन्न और परीक्षण" संगठन का उदाहरण है। पंक्ति 1 में चयन नियम "उत्पन्न करता है" सभी सेट्स को जिनमें $$\geq n$$ वर्टेक्स होते हैं। पंक्ति 2 में प्रतिबंध "छाँट देता है" वे सेट्स जो क्लिक नहीं हैं।

हैमिल्टनियन चक्र
निर्देशित ग्राफ में एक हैमिल्टनियन चक्र एक पथ (ग्राफ सिद्धांत) है जो ग्राफ के प्रत्येक शीर्ष से ठीक एक बार गुजरता है। यदि यह उपस्थित है तो दिए गए निर्देशित ग्राफ में हैमिल्टनियन चक्र को खोजने के लिए निम्नलिखित एलपार्स प्रोग्राम का उपयोग किया जा सकता है; हम मानते हैं कि 0 शीर्षों में से एक है।

चयन नियम जो पंक्ति 1 में है "सभी संबंधों के सभी उपसेट उत्पन्न करता है"। तीन प्रतिबंध "वे उपसेट छाँट देते हैं" जो हैमिल्टोनियन साइकिल नहीं हैं। उनमें से आखिरी प्रतिबंध में सहायक प्रेडिकेट $$r(x)$$ ($$x$$ 0 से पहुँचयोग्य है") का उपयोग करके वर्टेक्स को रोकता है जो इस शर्त को पूरा नहीं करते हैं। यह प्रेडिकेट पंक्ति 6 और 7 में पुनर्निर्धारित रूप से परिभाषित है।

यह प्रोग्राम एक और अधिक सामान्य "उत्पन्न करें, परिभाषित करें और परीक्षण करें" संगठन का एक उदाहरण है: इसमें एक सहायक प्रेडिकेट की परिभाषा सम्मलित है जो हमें "बुरी" पोटेंशियल समाधानों को खत्म करने में मदद करता है।

निर्भरता पदच्छेद
प्राकृतिक भाषा प्रसंस्करण में, डिपेंडेंसी-आधारित पार्सिंग एक ASP समस्या के रूप में सूत्रधारी किया जा सकता है। निम्नलिखित कोड लैटिन वाक्य "Puella pulchra in villa linguam latinam discit", "सुंदर लड़की विला में लैटिन भाषा सीख रही है" को पार्स करता है। वाक्य के शब्दों के बीच संभावित संबंधों को प्रतिष्ठित किया जाता है। गणनीय संरचना एक रेखांकित मुख्य वृक्ष के रूप में प्रदर्शित होती है।

भाषा मानकीकरण और एएसपी प्रतियोगिता
एएसपी मानकीकरण कार्यसमूह ने एक मानक भाषा विनिर्देशिका प्रस्तुत की है, जिसे ASP-Core-2 कहा जाता है, जिसकी ओर हाल के ASP सिस्टम संगत हो रहे हैं। ASP-Core-2, जो आंसर सेट प्रोग्रामिंग प्रतियोगिता के लिए संदर्भ भाषा है, जिसमें ASP सॉल्वर्स को नियमित अंतराल पर संदर्भ समस्याओं के उपरी मानक के साथ मान्यांकित किया जाता है।

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

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

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

गैलीवास्प सिस्टम जैसे आंसर सेट प्रोग्रामिंग के क्वेरी-संचालित कार्यान्वयन और एस (सीएएसपी) संकल्प (तर्क) और संयोग के संयोजन का उपयोग करके पूर्णतः ग्राउंडिंग से बचते हैं।

यह भी देखें

 * डिफ़ॉल्ट तर्क
 * तर्क प्रोग्रामिंग
 * गैर-मोनोटोनिक तर्क
 * प्रोलॉग
 * स्थिर मॉडल शब्दार्थ

बाहरी संबंध

 * ASP-Core-2 2.03c Input Language Specification
 * First एएसपी System Competition
 * Second एएसपी Competition
 * Third एएसपी Competition
 * Fourth एएसपी Competition
 * Platypus
 * A variety of answer set solvers packaged for Debian / Ubuntu
 * Clएएसपी Answer Set Solver