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

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

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

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

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

प्रतीक  (अगर) अगर गिरा दिया जाता है   खाली है; ऐसे नियमों को तथ्य कहा जाता है। सबसे सरल प्रकार के Lparse नियम स्थिर मॉडल शब्दार्थ हैं # बाधाओं के साथ कार्यक्रम।

इस भाषा में शामिल एक अन्य उपयोगी निर्माण पसंद है। उदाहरण के लिए, चुनाव नियम

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


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

Lparse की भाषा हमें विवश विकल्प नियम लिखने की भी अनुमति देती है, जैसे कि

यह नियम कहता है: कम से कम 1 परमाणु चुनें $$p,q,r$$, लेकिन 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).$$

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

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


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

चर (पूंजीकृत, जैसा कि प्रोलॉग # डेटा प्रकार में है) का उपयोग Lparse में नियमों के संग्रह को संक्षिप्त करने के लिए किया जाता है जो समान पैटर्न का पालन करते हैं, और उसी नियम के भीतर परमाणुओं के संग्रह को संक्षिप्त करने के लिए भी। उदाहरण के लिए, Lparse प्रोग्राम

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

कार्यक्रम

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

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

का शॉर्टकट है

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

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

यदि का विस्तार  है , उपरोक्त स्थिति शब्दार्थ की दृष्टि से लेखन के समतुल्य है   स्थिति के स्थान पर। उदाहरण के लिए,

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

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

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

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

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

यह निम्न Lparse प्रोग्राम का उपयोग करके पूरा किया जा सकता है:

<वाक्यविन्यास लैंग = प्रोलॉग लाइन = 1> सी (1..एन)। 1 {रंग(एक्स,आई) : सी(आई)} 1:-वी(एक्स).
 * - रंग (एक्स, आई), रंग (वाई, आई), ई (एक्स, वाई), सी (आई)।



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

अगर हम इस फ़ाइल को परिभाषा के साथ जोड़ते हैं $$G$$, जैसे कि

और उस पर smodels चलाते हैं, के संख्यात्मक मान के साथ $$n$$ कमांड लाइन पर निर्दिष्ट, फिर फॉर्म के परमाणु $$\mathrm{color}(\dots,\dots)$$ smodels के आउटपुट में एक का प्रतिनिधित्व करेगा $$n$$- का रंग $$G$$.

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

बड़ा गिरोह
एक ग्राफ़ में एक क्लिक (ग्राफ़ सिद्धांत) जोड़ीदार आसन्न शीर्षों का एक सेट है। निम्नलिखित Lparse प्रोग्राम आकार का एक समूह पाता है $$\geq n$$ किसी दिए गए ग्राफ़ में, या यह निर्धारित करता है कि यह मौजूद नहीं है:

<वाक्यविन्यास लैंग = प्रोलॉग लाइन = 1> एन {इन (एक्स): वी (एक्स)}।
 * - in(X), in(Y), v(X), v(Y), X!=Y, नहीं e(X,Y), नहीं e(Y,X).



यह जनरेट-एंड-टेस्ट संगठन का एक और उदाहरण है। लाइन 1 में चुनाव नियम से मिलकर सभी सेट उत्पन्न होते हैं $$\geq n$$ शिखर। लाइन 2 में बाधा उन सेटों को मात देती है जो गुट नहीं हैं।

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

<वाक्यविन्यास लैंग = प्रोलॉग लाइन = 1> {इन (एक्स, वाई)} :- ई (एक्स, वाई)।


 * - 2 {इन (एक्स, वाई): ई (एक्स, वाई)}, वी (एक्स)।
 * - 2 {इन (एक्स, वाई): ई (एक्स, वाई)}, वी (वाई)।

आर(एक्स) :- में(0,एक्स), वी(एक्स). आर(वाई) :- आर(एक्स), में(एक्स,वाई), ई(एक्स,वाई).


 * नहीं आर(एक्स), वी(एक्स).



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

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

निर्भरता पदच्छेद
प्राकृतिक भाषा प्रसंस्करण में, पार्सिंग | निर्भरता-आधारित पार्सिंग को एएसपी समस्या के रूप में तैयार किया जा सकता है। निम्नलिखित कोड विला लिंगुआम लैटिनम डिस्किट में लैटिन वाक्य पुएला पुल्चरा को पार्स करता है, सुंदर लड़की विला में लैटिन सीख रही है। सिंटैक्स ट्री को चाप विधेय द्वारा व्यक्त किया जाता है जो वाक्य के शब्दों के बीच निर्भरता का प्रतिनिधित्व करता है। गणना की गई संरचना एक रैखिक रूप से क्रमबद्ध जड़ वाला पेड़ है।

भाषा मानकीकरण और एएसपी प्रतियोगिता
एएसपी मानकीकरण कार्यसमूह ने एक मानक भाषा विनिर्देशिका प्रस्तुत की है, जिसे 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