आंसर सेट प्रोग्रामिंग: Difference between revisions
No edit summary |
No edit summary |
||
(7 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{distinguish|सक्रिय सर्वर पेज}} | {{distinguish|सक्रिय सर्वर पेज}}'''आंसर सेट प्रोग्रामिंग (एएसपी)''' कठिन (मुख्य रूप से एनपी कठिन) [[खोज एल्गोरिदम]] की ओर उन्मुख डेक्लेरेटिव प्रोग्रामिंग का एक रूप है। यह [[ तर्क प्रोग्रामिंग ]] के [[स्थिर मॉडल शब्दार्थ]] (आंसर सेट) शब्दार्थ पर आधारित है। एएसपी में, स्थिर मॉडल की गणना करने के लिए अविष्कार समस्याओं को कम कर दिया जाता है, और 'आंसर सेट सॉल्वर' - स्थिर मॉडल बनाने के लिए प्रोग्राम - का उपयोग खोज करने के लिए किया जाता है। कई आंसर सेट सॉल्वरों के डिजाइन में नियोजित कम्प्यूटेशनल प्रक्रिया [[डीपीएलएल एल्गोरिदम]] की वृद्धि है और सिद्धांत रूप में, यह सदैव समाप्त हो जाती है ([[प्रोलॉग]] क्वेरी मूल्यांकन के विपरीत, जो [[अनंत लूप]] का कारण बन सकता है)। | ||
अधिक सामान्य अर्थ में, आंसर सेट प्रोग्रामिंग (एएसपी) ज्ञान प्रतिनिधित्व के लिए आंसर सेट के सभी अनुप्रयोग सम्मलित करता हैं<ref>{{cite book |first=Chitta |last=Baral |title=ज्ञान प्रतिनिधित्व, तर्क और घोषणात्मक समस्या समाधान|url=https://archive.org/details/knowledgereprese00bara |url-access=registration |year=2003 |publisher=Cambridge University Press |isbn=978-0-521-81802-5}}</ref><ref>{{cite book |first=Michael |last=Gelfond |chapter=Answer sets |editor1-first=Frank |editor1-last=van Harmelen |editor2-first=Vladimir |editor2-last=Lifschitz |editor3-first=Bruce |editor3-last=Porter |title=ज्ञान प्रतिनिधित्व की पुस्तिका|chapter-url=https://books.google.com/books?id=xwBDylHhJhYC&pg=PA285 |year=2008 |publisher=Elsevier |isbn=978-0-08-055702-1 |pages=285–316 }} [http://www.depts.ttu.edu/cs/research/krlab/pdfs/papers/gel07b.pdf as PDF] {{Webarchive|url=https://web.archive.org/web/20160303231241/http://www.depts.ttu.edu/cs/research/krlab/pdfs/papers/gel07b.pdf |date=2016-03-03 }}</ref> और इन अनुप्रयोगों में उत्पन्न होने वाली समस्याओं के हल के लिए प्रोलॉग-शैली क्वेरी मूल्यांकन का उपयोग करता है। | |||
== इतिहास == | == इतिहास == | ||
आंसर सेट प्रोग्रामिंग का एक प्रारंभिक उदाहरण 1997 में डिमोपोलोस, नेबेल और कोहलर द्वारा प्रस्तावित [[स्वचालित योजना और शेड्यूलिंग]] पद्धति थी।<ref> | |||
{{cite book |first1=Y. |last1=Dimopoulos |author2-link=Bernhard Nebel |first2=B. |last2=Nebel |first3=J. |last3=Köhler |chapter=Encoding planning problems in non-monotonic logic programs |pages=273–285 |editor1-first=Sam |editor1-last=Steel |editor2-first=Rachid |editor2-last=Alami |title=Recent Advances in AI Planning: 4th European Conference on Planning, ECP'97, Toulouse, France, September 24–26, 1997, Proceedings |url=https://books.google.com/books?id=QSBoQgAACAAJ |year=1997 |publisher=Springer |isbn=978-3-540-63912-1 |volume=1348 |series=Lecture Notes in Computer Science: Lecture Notes in Artificial Intelligence}} [https://web.archive.org/web/20170705062155/ftp://ftp.informatik.uni-freiburg.de/documents/papers/ki/dimopoulos-etal-ecp97.ps.gz as Postscript]</ref><ref name="WhatIs">{{cite journal |last1=Lifschitz |first1=Vladimir |title=What is answer set programming? |journal=Proceedings of the 23rd National Conference on Artificial Intelligence |date=13 July 2008 |volume=3 |pages=1594–1597 |url=https://www.cs.utexas.edu/users/vl/papers/wiasp.pdf |publisher=AAAI Press}}</ref> उनका दृष्टिकोण योजनाओं और स्थिर मॉडलों के बीच संबंध पर आधारित है।<ref> | {{cite book |first1=Y. |last1=Dimopoulos |author2-link=Bernhard Nebel |first2=B. |last2=Nebel |first3=J. |last3=Köhler |chapter=Encoding planning problems in non-monotonic logic programs |pages=273–285 |editor1-first=Sam |editor1-last=Steel |editor2-first=Rachid |editor2-last=Alami |title=Recent Advances in AI Planning: 4th European Conference on Planning, ECP'97, Toulouse, France, September 24–26, 1997, Proceedings |url=https://books.google.com/books?id=QSBoQgAACAAJ |year=1997 |publisher=Springer |isbn=978-3-540-63912-1 |volume=1348 |series=Lecture Notes in Computer Science: Lecture Notes in Artificial Intelligence}} [https://web.archive.org/web/20170705062155/ftp://ftp.informatik.uni-freiburg.de/documents/papers/ki/dimopoulos-etal-ecp97.ps.gz as Postscript]</ref><ref name="WhatIs">{{cite journal |last1=Lifschitz |first1=Vladimir |title=What is answer set programming? |journal=Proceedings of the 23rd National Conference on Artificial Intelligence |date=13 July 2008 |volume=3 |pages=1594–1597 |url=https://www.cs.utexas.edu/users/vl/papers/wiasp.pdf |publisher=AAAI Press}}</ref> उनका दृष्टिकोण योजनाओं और स्थिर मॉडलों के बीच संबंध पर आधारित है।<ref> | ||
{{cite book |first1=V.S. |last1=Subrahmanian |first2=C. |last2=Zaniolo |chapter=Relating stable models and AI planning domains |editor-first=Leon |editor-last=Sterling |title=Logic Programming: Proceedings of the Twelfth International Conference on Logic Programming |chapter-url=https://books.google.com/books?id=vpGEyZWP1dYC&pg=PA233 |year=1995 |publisher=MIT Press |isbn=978-0-262-69177-2 |pages=233–247}} [http://www.cs.ucla.edu/%7Ezaniolo/papers/iclp95.ps as Postscript]</ref> | {{cite book |first1=V.S. |last1=Subrahmanian |first2=C. |last2=Zaniolo |chapter=Relating stable models and AI planning domains |editor-first=Leon |editor-last=Sterling |title=Logic Programming: Proceedings of the Twelfth International Conference on Logic Programming |chapter-url=https://books.google.com/books?id=vpGEyZWP1dYC&pg=PA233 |year=1995 |publisher=MIT Press |isbn=978-0-262-69177-2 |pages=233–247}} [http://www.cs.ucla.edu/%7Ezaniolo/papers/iclp95.ps as Postscript]</ref>1998 में सोइनिनेन और नीमेला<ref>{{citation |first1=T. |last1=Soininen |first2=I. |last2=Niemelä |title=Formalizing configuration knowledge using rules with choices |number=TKO-B142 |institution=Laboratory of Information Processing Science, Helsinki University of Technology |year=1998 |url=http://www.tcs.hut.fi/~ini/papers/sn-faanmr98.ps.gz |format=Postscript}}</ref> लागू किया जिसे अब [[उत्पाद कॉन्फ़िगरेशन]] की समस्या के लिए आंसर सेट प्रोग्रामिंग के रूप में जाना जाता है।<ref name="WhatIs"/>1999 में, आंसर सेट प्रोग्रामिंग शब्द पहली बार एक पुस्तक द लॉजिक प्रोग्रामिंग पैराडाइम में दो पत्रों के संग्रह के शीर्षक के रूप में दिखाई दिया।<ref name="WhatIs"/>इन पत्रों में से पहले ने एक नए [[प्रोग्रामिंग प्रतिमान]] के रूप में खोज के लिए आंसर सेट सॉल्वर्स का उपयोग निर्धारित करता है।<ref> | ||
1998 में सोइनिनेन और नीमेला<ref>{{citation |first1=T. |last1=Soininen |first2=I. |last2=Niemelä |title=Formalizing configuration knowledge using rules with choices |number=TKO-B142 |institution=Laboratory of Information Processing Science, Helsinki University of Technology |year=1998 |url=http://www.tcs.hut.fi/~ini/papers/sn-faanmr98.ps.gz |format=Postscript}}</ref> लागू किया जिसे अब [[उत्पाद कॉन्फ़िगरेशन]] की समस्या के लिए | |||
{{cite book |first1=V. |last1=Marek |first2=M. |last2=Truszczyński |chapter=Stable models and an alternative logic programming paradigm |editor-first=Krzysztof R. |editor-last=Apt | {{cite book |first1=V. |last1=Marek |first2=M. |last2=Truszczyński |chapter=Stable models and an alternative logic programming paradigm |editor-first=Krzysztof R. |editor-last=Apt | ||
|editor-link=Krzysztof R. Apt | |editor-link=Krzysztof R. Apt | ||
|title=The Logic programming paradigm: a 25-year perspective |url=https://books.google.com/books?id=GIhQAAAAMAAJ |date=20 May 1999 |publisher=Springer |isbn=978-3-540-65463-6 |format=PDF |pages=169–181 |ref={{harvid|Apt|1999}}|arxiv=cs/9809032 }}</ref> उसी वर्ष नीमेला ने एक | |title=The Logic programming paradigm: a 25-year perspective |url=https://books.google.com/books?id=GIhQAAAAMAAJ |date=20 May 1999 |publisher=Springer |isbn=978-3-540-65463-6 |format=PDF |pages=169–181 |ref={{harvid|Apt|1999}}|arxiv=cs/9809032 }}</ref> उसी वर्ष नीमेला ने भी "स्थिर मॉडल सांत्वनिकता के साथ तार्किक प्रोग्राम" को एक नई पैराडाइम के रूप में प्रस्तावित किया।<ref>{{cite journal |first=I. |last=Niemelä |title=एक बाधा प्रोग्रामिंग प्रतिमान के रूप में स्थिर मॉडल शब्दार्थ के साथ तर्क कार्यक्रम|journal=Annals of Mathematics and Artificial Intelligence |volume=25 |issue=3/4 |pages=241–273 |date=November 1999 |doi=10.1023/A:1018930122475 |s2cid=14465318 |url=http://users.ics.aalto.fi/ini/papers/lp-csp-long.ps.gz |format=Postscript,gzipped}}</ref> | ||
== | == आंसर सेट प्रोग्रामिंग भाषा AnsProlog == | ||
[http://www.tcs.hut.fi/Software/smodels/lparse.ps | [http://www.tcs.hut.fi/Software/smodels/lparse.ps लपरसे] उस प्रोग्राम का नाम है जिसे मूल रूप से आंसर सेट सॉल्वर के लिए [[प्रतीक ग्राउंडिंग]] टूल (फ्रंट-एंड) के रूप में बनाया गया था [http: //www.tcs.hut.fi/Software/मॉडल / मॉडल ]। लपरसे द्वारा स्वीकार की जाने वाली भाषा अब सामान्य रूप से AnsProlog के नाम से जानी जाती है,<ref>{{Cite thesis |type=Ph.D. |title=Superoptimisation: Provably Optimal Code Generation using Answer Set Programming |url=http://opus.bath.ac.uk/20352/1/UnivBath_PhD_2009_T_Crick.pdf |last=Crick |first=Tom |year=2009 |publisher=University of Bath |docket=20352 |access-date=2011-05-27 |archive-url=https://web.archive.org/web/20160304035502/http://opus.bath.ac.uk/20352/1/UnivBath_PhD_2009_T_Crick.pdf |archive-date=2016-03-04 |url-status=dead }}</ref> जिसका पूरा नाम है Answer Set Programming in Logic.<ref>{{cite web |author=Rogelio Davila |title=AnsProlog, और सिंहावलोकन|url=http://www.rogeliodavila.com.mx/Programacion%20Logica/PL%20Notas/AnsProlog%20Overview.ppt |format=PowerPoint}}</ref> यह अब कई अन्य आंसर सेट सॉल्वर्स में भी एक ही विधि से उपयोग की जाती है, जिनमें [https://web.archive.org/web/20110717180541/http://assat.cs.ust.hk/ आसैट], [https:/ /potassco.org/क्लैप/ क्लैप], [http://www.cs.utexas.edu/users/tag/cmodels/ cmodels], [http://www.tcs.hut.fi/Software/gnt/ gNt ], [http://www.cs.uni-potsdam.de/nomore/ nomore++] और [http://www.cs.uky.edu/ai/pbmodels/ pbmodels] सम्मलित हैं। इसकी एक अपवाद है ([http://www.dbai.tuwien.ac.at/proj/dlv/ dlv] एके लिए लिखी गई ASP प्रोग्रामों का सिंटैक्स कुछ अलग होता है।) | ||
AnsProlog प्रोग्राम | AnsProlog प्रोग्राम निम्नलिखित रूप के नियमों से मिलता है। | ||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
<head> :- <body> . | <head> :- <body> . | ||
</syntaxhighlight> | </syntaxhighlight> | ||
प्रतीक <code>:-</code> (अगर) | प्रतीक <code>:-</code> (अगर) उस स्थिति में छोड़ दिया जाता है जब <code><body></code> खाली होता है; ऐसे नियमों को तथ्य कहा जाता है। लपरसे के सबसे सरल प्रकार के नियमों में निषेध होती हैं। | ||
इस भाषा में | इस भाषा में सम्मलित एक और उपयोगी रचना चयन (choice) है। उदाहरण के लिए, चयन नियम। | ||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
{p,q,r}. | {p,q,r}. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
कहता है: पूर्णांकों <math>p,q,r</math> में से छांटें कि स्थिर मॉडल में सम्मलित किसे करें। इस चयन नियम वाले लपरसे प्रोग्राम में कोई अन्य नियम नहीं होते हैं, और इसके 8 स्थिर मॉडल होते हैं - <math>\{p,q,r\}</math>.के अन्योन्य उपसंख्यक। एक स्थिर मॉडल की परिभाषा चयन नियमों वाले प्रोग्रामों के लिए भी सामान्य रूप से की जाती है।<ref>{{cite book |first1=I. |last1=Niemelä |first2=P. |last2=Simons |first3=T. |last3=Soinenen |chapter=Stable model semantics of weight constraint rules |editor1-first=Michael |editor1-last=Gelfond |editor2-first=Nicole |editor2-last=Leone |editor3-first=Gerald |editor3-last=Pfeifer |title=Logic Programming and Nonmonotonic Reasoning: 5th International Conference, LPNMR '99, El Paso, Texas, USA, December 2–4, 1999 Proceedings |chapter-url=https://books.google.com/books?id=Abj-OpFeDjQC&pg=PA317 |year=2000 |publisher=Springer |isbn=978-3-540-66749-0 |pages=317–331 |series=Lecture Notes in Computer Science: Lecture Notes in Artificial Intelligence |volume=1730}} [http://www.tcs.hut.fi/~ini/papers/nss-lpnmr99-www.ps.gz as Postscript]</ref> चयन नियमों को स्थिर मॉडल सांत्वनिकता के अनुसार प्रस्तावात्मक सूत्रों के लिए संक्षेप माना जा सकता है।<ref>{{cite journal |first1=P. |last1=Ferraris |first2=V. |last2=Lifschitz |title=नेस्टेड एक्सप्रेशंस के रूप में वजन की कमी|journal=Theory and Practice of Logic Programming |volume=5 |issue=1–2 |pages=45–74 |date=January 2005 |doi=10.1017/S1471068403001923 |arxiv=cs/0312045 |s2cid=5051610 }} [http://www.cs.utexas.edu/users/vl/papers/weight.ps as Postscript]</ref> उदाहरण के लिए, ऊपर दिए गए चुनाव नियम को तीन [[बहिष्कृत मध्य]] सूत्रों के संयोजन के लिए आशुलिपि के रूप में देखा जा सकता है: | |||
:<math>(p\lor\neg p)\land(q\lor\neg q)\land(r\lor\neg r).</math> | :<math>(p\lor\neg p)\land(q\lor\neg q)\land(r\lor\neg r).</math> | ||
लपरसे की भाषा हमें "प्रतिबद्ध" चयन नियम भी लिखने की अनुमति देती है, जैसे कि:- | |||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
1{p,q,r}2. | 1{p,q,r}2. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
यह नियम कहता है: | यह नियम कहता है: पूर्णांकों <math>p,q,r</math>, में से कम से कम 1 चुनें, लेकिन 2 से अधिक नहीं। स्थिर मॉडल सांत्वनिकता के अनुसार इस नियम का अर्थ प्रस्तावात्मक सूत्र द्वारा प्रतिष्ठित है। | ||
:<math>(p\lor\neg p)\land(q\lor\neg q)\land(r\lor\neg r)</math> | :<math>(p\lor\neg p)\land(q\lor\neg q)\land(r\lor\neg r)</math> | ||
::<math>\land\,(p\lor q\lor r)\land\neg(p\land q\land r).</math> | ::<math>\land\,(p\lor q\lor r)\land\neg(p\land q\land r).</math> | ||
नियम के शरीर में भी | गणना सीमा नियम एक नियम के शरीर में भी उपयोग की जा सकती है, उदाहरण के लिए:- | ||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
:- 2{p,q,r}. | :- 2{p,q,r}. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
इस | एक लपरसे प्रोग्राम में इस प्रतिबंध को जोड़ने से उन स्थिर मॉडल्स को छोड़ दिया जाता है जिनमें <math>p,q,r</math>.के कम से कम 2 पूर्णांक उपस्थित होते हैं। इस नियम का अर्थ प्रस्तावात्मक सूत्र द्वारा प्रतिष्ठित किया जा सकता है। | ||
::<math>\neg((p\land q)\lor(p\land r)\lor(q\land r)).</math> | ::<math>\neg((p\land q)\lor(p\land r)\lor(q\land r)).</math> | ||
लपरसे में प्राथमिक नियमों के समान पैटर्न का पालन करने वाली नियमों की संक्षेप में छोटे रूप (मज़बूत) करने के लिए और एक ही नियम के भीतर पूर्णांकों की संक्षेप में छोटे रूप करने के लिए चर (प्रोलोग की प्रकार) का उपयोग किया जाता है। उदाहरण के लिए, लपरसे प्रोग्राम:- | |||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
Line 63: | Line 59: | ||
q(b). q(c). | q(b). q(c). | ||
</syntaxhighlight> | </syntaxhighlight> | ||
प्रोग्राम | |||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
Line 79: | Line 75: | ||
(start..end) | (start..end) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
जहां | जहां start और end निर्धारित मान वाले अंकगणितीय व्यक्तियां हैं। रेंज एक नोटेशनल शॉर्टकट है जिसका प्रमुख रूप से उपयोग संगत विधि से संख्यात्मक डोमेन को परिभाषित करने के लिए किया जाता है। उदाहरण के लिए, तथ्य | ||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
Line 96: | Line 92: | ||
p(X):q(X) | p(X):q(X) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
यदि | यदि <code>q</code> का विस्तार<code>{q(a1), q(a2), ..., q(aN)}</code> है, तो ऊपर दी गई शर्त को सांत्वनिक रूप से लिखना <code>{p(a1), p(a2), ..., p(aN)}</code> के स्थान पर लिखने के समानार्थी होता है। उदाहरण के लिए, | ||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
Line 111: | Line 107: | ||
== स्थिर मॉडल बनाना == | == स्थिर मॉडल बनाना == | ||
फ़ाइल | फ़ाइल <code>${filename}</code> में संग्रहीत लपरसे प्रोग्राम का एक स्थिर मॉडल खोजने के लिए हम कमांड का उपयोग करते हैं | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
% lparse ${filename} | smodels | % lparse ${filename} | smodels | ||
</syntaxhighlight> | </syntaxhighlight> | ||
विकल्प 0 | विकल्प 0 मॉडल को कार्यक्रम के सभी स्थिर मॉडलों को खोजने का निर्देश देता है। उदाहरण के लिए, यदि फ़ाइल <code>test</code> में नियम हैं | ||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
Line 144: | Line 140: | ||
=== ग्राफ रंग === | === ग्राफ रंग === | ||
एक | एक -ग्राफ <math>G = \left\lang V, E\right\rang</math> का एन-रंगीकरण (<math>n</math>-coloring) एक ऐसा फ़ंक्शन <math>\mathrm{color}: V\to\{1,\dots,n\}</math> होता है जहां <math>\mathrm{color}(x)\neq \mathrm{color}(y)</math> आसन्न शीर्षों की प्रत्येक जोड़ी के लिए <math>(x,y)\in E</math>. हम एक खोजने के लिए एएसपी का उपयोग करना चाहेंगे <math>n</math>किसी दिए गए ग्राफ का रंग (या निर्धारित करें कि यह अस्तित्व में नहीं है)। | ||
इसे निम्नलिखित लपरसे प्रोग्राम का उपयोग करके किया जा सकता है<syntaxhighlight lang="prolog" line="1"> | |||
c(1..n). | |||
{color(X,I) : c(I)} 1 :- v(X). | |||
:- color(X,I), color(Y,I), e(X,Y), c(I). | |||
</syntaxhighlight> | |||
पंक्ति 1 संख्याओं | पंक्ति 1 संख्याओं <math>1,\dots,n</math> को रंगों के रूप में परिभाषित किया जाता है। पंक्ति 2 में चयन नियम के अनुसार, प्रत्येक वर्टेक्स x को एक अद्वितीय रंग i से संबंधित किया जाना चाहिए। पंक्ति 3 में प्रतिबंध लगाती है कि वर्टेक्स <math>x</math> और <math>y</math> को एक-दूसरे से जुड़े हुए होने की स्थिति में वही रंग नहीं दिया जाना चाहिए। | ||
यदि हम इस फ़ाइल को एक ग्राफ <math>G</math>, की परिभाषा के साथ मिलाएं, जैसे कि निम्नलिखित हिंदी में: | |||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
Line 163: | Line 160: | ||
. . . | . . . | ||
</syntaxhighlight> | </syntaxhighlight> | ||
और | और इस पर कमांड लाइन पर निर्दिष्ट एन के आंकड़ी मान के साथ इस पर स्मॉडेल्स (मॉडल ) को चलाएं, तो मॉडल के आउटपुट में उपविभाग के रूप में <math>\mathrm{color}(\dots,\dots)</math> के आयाम (atoms) एक <math>n</math>- रंगीकरण को <math>G</math> प्रतिष्ठित करेंगे। | ||
इस उदाहरण में प्रोग्राम | इस उदाहरण में प्रोग्राम सामान्यतः सरल एएसपी प्रोग्रामों में पाए जाने वाले "उत्पन्न और परीक्षण" संगठन को दर्शाता है। चयन नियम एक "संभावित समाधानों" की सेट का वर्णन करता है - दिए गए खोज समस्या के समाधानों के सेट का एक सरल उपसमूह। इसके बाद एक प्रतिबंध होता है, जो स्वीकार्य नहीं होने वाले सभी संभावित समाधानों को निकाल देता है। चूंकि, स्मॉडेल्स और अन्य आंसर सेट सॉल्वर्स द्वारा उपयोग की जाने वाली खोज प्रक्रिया पर प्रयोग और त्रुटि पर नहीं आधारित होती है। | ||
=== बड़ा गिरोह === | === बड़ा गिरोह === | ||
यह | एक ग्राफ में एक क्लिक ( क्लिके ) एक ऐसा सेट होता है जिसमें हर दो संबंधित वर्टेक्स होते हैं। निम्नलिखित लपरसे प्रोग्राम दिए गए ग्राफ में एक आकार <math>\geq n</math> की क्लिक ढूंढता है या यह निर्धारित करता है कि ऐसी क्लिक उपस्थित नहीं है:<syntaxhighlight lang="prolog" line="1"> | ||
n {in(X) : v(X)}. | |||
:- in(X), in(Y), v(X), v(Y), X!=Y, not e(X,Y), not e(Y,X). | |||
</syntaxhighlight>यह एक और "उत्पन्न और परीक्षण" संगठन का उदाहरण है। पंक्ति 1 में चयन नियम "उत्पन्न करता है" सभी सेट्स को जिनमें <math>\geq n</math> वर्टेक्स होते हैं। पंक्ति 2 में प्रतिबंध "छाँट देता है" वे सेट्स जो क्लिक नहीं हैं। | |||
=== [[हैमिल्टनियन चक्र]] === | === [[हैमिल्टनियन चक्र]] === | ||
[[निर्देशित ग्राफ]] में एक हैमिल्टनियन चक्र एक [[पथ (ग्राफ सिद्धांत)]] है जो ग्राफ के प्रत्येक शीर्ष से ठीक एक बार गुजरता है। यदि यह | [[निर्देशित ग्राफ]] में एक हैमिल्टनियन चक्र एक [[पथ (ग्राफ सिद्धांत)]] है जो ग्राफ के प्रत्येक शीर्ष से ठीक एक बार गुजरता है। यदि यह उपस्थित है तो दिए गए निर्देशित ग्राफ में हैमिल्टनियन चक्र को खोजने के लिए निम्नलिखित एलपार्स प्रोग्राम का उपयोग किया जा सकता है; हम मानते हैं कि 0 शीर्षों में से एक है।<syntaxhighlight lang="prolog" line="1"> | ||
{in(X,Y)} :- e(X,Y). | |||
:- 2 {in(X,Y) : e(X,Y)}, v(X). | |||
{ | :- 2 {in(X,Y) : e(X,Y)}, v(Y). | ||
r(X) :- in(0,X), v(X). | |||
:- | r(Y) :- r(X), in(X,Y), e(X,Y). | ||
:- not r(X), v(X). | |||
</syntaxhighlight> | |||
चयन नियम जो पंक्ति 1 में है "सभी संबंधों के सभी उपसेट उत्पन्न करता है"। तीन प्रतिबंध "वे उपसेट छाँट देते हैं" जो हैमिल्टोनियन साइकिल नहीं हैं। उनमें से आखिरी प्रतिबंध में सहायक प्रेडिकेट <math>r(x)</math> (<math>x</math> 0 से पहुँचयोग्य है") का उपयोग करके वर्टेक्स को रोकता है जो इस शर्त को पूरा नहीं करते हैं। यह प्रेडिकेट पंक्ति 6 और 7 में पुनर्निर्धारित रूप से परिभाषित है। | |||
यह | यह प्रोग्राम एक और अधिक सामान्य "उत्पन्न करें, परिभाषित करें और परीक्षण करें" संगठन का एक उदाहरण है: इसमें एक सहायक प्रेडिकेट की परिभाषा सम्मलित है जो हमें "बुरी" पोटेंशियल समाधानों को खत्म करने में मदद करता है। | ||
=== निर्भरता [[ पदच्छेद ]] === | === निर्भरता [[ पदच्छेद ]] === | ||
[[प्राकृतिक भाषा प्रसंस्करण]] में, | [[प्राकृतिक भाषा प्रसंस्करण]] में, डिपेंडेंसी-आधारित पार्सिंग एक ASP समस्या के रूप में सूत्रधारी किया जा सकता है।<ref>{{Cite web |url=http://loqtek.com/?id=course_pars&sec=1 |title=निर्भरता विश्लेषण|access-date=2015-04-15 |archive-url=https://archive.today/20150415155632/http://loqtek.com/?id=course_pars&sec=1 |archive-date=2015-04-15 |url-status=dead }}</ref>निम्नलिखित कोड लैटिन वाक्य "Puella pulchra in villa linguam latinam discit", "सुंदर लड़की विला में लैटिन भाषा सीख रही है" को पार्स करता है। वाक्य के शब्दों के बीच संभावित संबंधों को प्रतिष्ठित किया जाता है। गणनीय संरचना एक रेखांकित मुख्य वृक्ष के रूप में प्रदर्शित होती है। | ||
निम्नलिखित कोड | |||
<syntaxhighlight lang="prolog"> | <syntaxhighlight lang="prolog"> | ||
Line 236: | Line 226: | ||
== भाषा मानकीकरण और एएसपी प्रतियोगिता == | == भाषा मानकीकरण और एएसपी प्रतियोगिता == | ||
एएसपी मानकीकरण कार्यसमूह ने एक मानक भाषा विनिर्देशिका प्रस्तुत की है, जिसे ASP-Core-2 कहा जाता है,<ref>{{cite web|url=https://www.mat.unical.it/aspcomp2013/files/ASP-CORE-2.03c.pdf|title=ASP-Core-2 Input Language Specification|access-date=14 May 2018}}</ref> जिसकी ओर हाल के ASP सिस्टम संगत हो रहे हैं। ASP-Core-2, जो | एएसपी मानकीकरण कार्यसमूह ने एक मानक भाषा विनिर्देशिका प्रस्तुत की है, जिसे ASP-Core-2 कहा जाता है,<ref>{{cite web|url=https://www.mat.unical.it/aspcomp2013/files/ASP-CORE-2.03c.pdf|title=ASP-Core-2 Input Language Specification|access-date=14 May 2018}}</ref> जिसकी ओर हाल के ASP सिस्टम संगत हो रहे हैं। ASP-Core-2, जो आंसर सेट प्रोग्रामिंग प्रतियोगिता के लिए संदर्भ भाषा है, जिसमें ASP सॉल्वर्स को नियमित अंतराल पर संदर्भ समस्याओं के उपरी मानक के साथ मान्यांकित किया जाता है। | ||
== कार्यान्वयन की | == कार्यान्वयन की समानता == | ||
प्रारंभिक प्रणालियाँ, जैसे कि स्मॉडेल्स, समाधान खोजने के लिए [[ बैक ट्रैकिंग ]] का उपयोग करती हैं। [[बूलियन सैट सॉल्वर]] के सिद्धांत और अभ्यास के विकास के साथ, कई एएसपी सॉल्वर्स सैट सॉल्वर्स के ऊपर बनाए गए, जिनमें आसैटऔर कमॉडेल्स | प्रारंभिक प्रणालियाँ, जैसे कि स्मॉडेल्स, समाधान खोजने के लिए [[ बैक ट्रैकिंग ]] का उपयोग करती हैं। [[बूलियन सैट सॉल्वर]] के सिद्धांत और अभ्यास के विकास के साथ, कई एएसपी सॉल्वर्स सैट सॉल्वर्स के ऊपर बनाए गए, जिनमें आसैटऔर कमॉडेल्स सम्मलित हैं। इन्होंने एएसपी सूत्र को सैट प्रस्तावों में परिवर्तित किया, सैट सॉल्वर का उपयोग किया, और फिर समाधानों को फिर से एएसपी रूप में परिवर्तित किया। नवीनतम सिस्टम, जैसे क्लैप, एक हाइब्रिड दृष्टिकोण का उपयोग करते हैं, सैट से प्रेरित संघर्ष-निर्धारित एल्गोरिदम का उपयोग करते हैं, जो पूर्ण रूप से बूलियन-तार्किक रूप में परिवर्तन नहीं करते हैं। ये दृष्टिकोणों का उपयोग पहले के बैकट्रैकिंग एल्गोरिदम की समानता में आदेश के कई गुना तक प्रदर्शन में महत्वपूर्ण सुधारों की अनुमति देते हैं। | ||
[https://potassco.org/ पोटास्को] परियोजना नीचे दी गई कई प्रणालियों के लिए छत्र के रूप में कार्य करती है, जिसमें क्लैप, ग्राउंडिंग सिस्टम (ग्रिंगो), इंक्रीमेंटल सिस्टम (आईसीलिंगो), कंस्ट्रेंट सॉल्वर (क्लिंगकॉन), एएसपी कंपाइलर्स के लिए [[ क्रिया भाषा | क्रिया भाषा (कोआला)]] ,वितरित एमपीआई कार्यान्वयन (क्लैस्पर), और कई अन्य | [https://potassco.org/ पोटास्को] परियोजना नीचे दी गई कई प्रणालियों के लिए छत्र के रूप में कार्य करती है, जिसमें क्लैप, ग्राउंडिंग सिस्टम (ग्रिंगो), इंक्रीमेंटल सिस्टम (आईसीलिंगो), कंस्ट्रेंट सॉल्वर (क्लिंगकॉन), एएसपी कंपाइलर्स के लिए [[ क्रिया भाषा | क्रिया भाषा (कोआला)]] ,वितरित एमपीआई कार्यान्वयन (क्लैस्पर), और कई अन्य सम्मलित हैं। | ||
अधिकांश प्रणालियाँ चर का समर्थन करती हैं, लेकिन केवल अप्रत्यक्ष रूप से ग्राउंडिंग को प्रबल करके, लपर्स या ग्रिंगो जैसे ग्राउंडिंग सिस्टम का उपयोग प्रवेश बिंदु के रूप में करके। ग्राउंडिंग की आवश्यकता क्लॉज की संख्या में एक संयोजक विस्फोट का कारण बन सकती है; इसलिए, ऑन-द-फ्लाई ग्राउंडिंग करने वाले सिस्टम का एक फायदा हो सकता है।<ref>{{Cite journal|last1=Lefèvre|first1=Claire|last2=Béatrix|first2=Christopher|last3=Stéphan|first3=Igor|last4=Garcia|first4=Laurent|date=May 2017|title=ASPeRiX, उत्तर सेट कंप्यूटिंग के लिए एक प्रथम-क्रम फ़ॉरवर्ड चेनिंग दृष्टिकोण*|url=https://www.cambridge.org/core/journals/theory-and-practice-of-logic-programming/article/abs/asperix-a-firstorder-forward-chaining-approach-for-answer-set-computing/2318F5D6647DF24A8F9A452F4C7B4D49|journal=Theory and Practice of Logic Programming|language=en|volume=17|issue=3|pages=266–310|doi=10.1017/S1471068416000569|arxiv=1503.07717 |s2cid=2371655 |issn=1471-0684}}</ref> | अधिकांश प्रणालियाँ चर का समर्थन करती हैं, लेकिन केवल अप्रत्यक्ष रूप से ग्राउंडिंग को प्रबल करके, लपर्स या ग्रिंगो जैसे ग्राउंडिंग सिस्टम का उपयोग प्रवेश बिंदु के रूप में करके। ग्राउंडिंग की आवश्यकता क्लॉज की संख्या में एक संयोजक विस्फोट का कारण बन सकती है; इसलिए, ऑन-द-फ्लाई ग्राउंडिंग करने वाले सिस्टम का एक फायदा हो सकता है।<ref>{{Cite journal|last1=Lefèvre|first1=Claire|last2=Béatrix|first2=Christopher|last3=Stéphan|first3=Igor|last4=Garcia|first4=Laurent|date=May 2017|title=ASPeRiX, उत्तर सेट कंप्यूटिंग के लिए एक प्रथम-क्रम फ़ॉरवर्ड चेनिंग दृष्टिकोण*|url=https://www.cambridge.org/core/journals/theory-and-practice-of-logic-programming/article/abs/asperix-a-firstorder-forward-chaining-approach-for-answer-set-computing/2318F5D6647DF24A8F9A452F4C7B4D49|journal=Theory and Practice of Logic Programming|language=en|volume=17|issue=3|pages=266–310|doi=10.1017/S1471068416000569|arxiv=1503.07717 |s2cid=2371655 |issn=1471-0684}}</ref> | ||
गैलीवास्प सिस्टम जैसे | गैलीवास्प सिस्टम जैसे आंसर सेट प्रोग्रामिंग के क्वेरी-संचालित कार्यान्वयन<ref> | ||
{{cite book |first1=Kyle. |last1=Marple |first2=Gopal. |last2=Gupta |chapter=Galliwasp: A Goal-Directed Answer Set Solver |editor-first=Elvira|editor-last=Albert |title=Logic-Based Program Synthesis and Transformation, 22nd International Symposium, LOPSTR 2012, Leuven, Belgium, September 18-20, 2012, Revised Selected Papers |year=2012 |publisher=Springer |pages=122–136}}</ref> और एस (सीएएसपी)<ref>{{cite journal |first1=J. |last1=Arias |first2=M. |last2=Carro |first3=E. |last3=Salazar |first4=K. |last4=Marple |first5=G. |last5=Gupta |title=ग्राउंडिंग के बिना बाधा उत्तर सेट प्रोग्रामिंग|journal=Theory and Practice of Logic Programming |volume=18 |issue=3–4 |pages=337–354 |date=2018|doi=10.1017/S1471068418000285 |s2cid=13754645 |doi-access=free }}</ref> [[संकल्प (तर्क)]] और [[संयोग]] के संयोजन का उपयोग करके पूर्णतः ग्राउंडिंग से बचते हैं। | {{cite book |first1=Kyle. |last1=Marple |first2=Gopal. |last2=Gupta |chapter=Galliwasp: A Goal-Directed Answer Set Solver |editor-first=Elvira|editor-last=Albert |title=Logic-Based Program Synthesis and Transformation, 22nd International Symposium, LOPSTR 2012, Leuven, Belgium, September 18-20, 2012, Revised Selected Papers |year=2012 |publisher=Springer |pages=122–136}}</ref> और एस (सीएएसपी)<ref>{{cite journal |first1=J. |last1=Arias |first2=M. |last2=Carro |first3=E. |last3=Salazar |first4=K. |last4=Marple |first5=G. |last5=Gupta |title=ग्राउंडिंग के बिना बाधा उत्तर सेट प्रोग्रामिंग|journal=Theory and Practice of Logic Programming |volume=18 |issue=3–4 |pages=337–354 |date=2018|doi=10.1017/S1471068418000285 |s2cid=13754645 |doi-access=free }}</ref> [[संकल्प (तर्क)]] और [[संयोग]] के संयोजन का उपयोग करके पूर्णतः ग्राउंडिंग से बचते हैं। | ||
Line 312: | Line 302: | ||
| | | | ||
|{{yes}} | |{{yes}} | ||
|एसएटी-सॉल्वर प्रेरित (कोई अच्छा नहीं, संघर्ष संचालित)। संभाव्य समस्याओं को हल करने और | |एसएटी-सॉल्वर प्रेरित (कोई अच्छा नहीं, संघर्ष संचालित)। संभाव्य समस्याओं को हल करने और आंसर सेट नमूनाकरण का समर्थन करता है | ||
|- | |- | ||
| {{rh}} class="table-rh" |[[DLV]] | | {{rh}} class="table-rh" |[[DLV]] | ||
Line 322: | Line 312: | ||
|{{no}} | |{{no}} | ||
|{{yes}} | |{{yes}} | ||
| | |लपरसे संगत नहीं है | ||
|- | |- | ||
| {{rh}} class="table-rh" |[http://www.mat.unical.it/dlv-complex/ DLV-Complex] | | {{rh}} class="table-rh" |[http://www.mat.unical.it/dlv-complex/ DLV-Complex] | ||
Line 332: | Line 322: | ||
|{{yes}} | |{{yes}} | ||
|{{yes}} | |{{yes}} | ||
|[[DLV]] के शीर्ष पर निर्मित — | |[[DLV]] के शीर्ष पर निर्मित — लपरसे संगत नहीं | ||
|- | |- | ||
| {{rh}} class="table-rh" |[http://www.tcs.hut.fi/Software/gnt/ GnT] | | {{rh}} class="table-rh" |[http://www.tcs.hut.fi/Software/gnt/ GnT] | ||
Line 362: | Line 352: | ||
| | | | ||
| | | | ||
|वितरित, बहु-थ्रेडेड nomore++, | |वितरित, बहु-थ्रेडेड nomore++, मॉडल | ||
|- | |- | ||
| {{rh}} class="table-rh" |[http://www.cs.uky.edu/ai/pbmodels/ Pbmodels] | | {{rh}} class="table-rh" |[http://www.cs.uky.edu/ai/pbmodels/ Pbmodels] | ||
Line 374: | Line 364: | ||
|[[pseudo-boolean|छद्म-बूलियन]] सॉल्वर आधारित | |[[pseudo-boolean|छद्म-बूलियन]] सॉल्वर आधारित | ||
|- | |- | ||
| {{rh}} class="table-rh" |[http://www.tcs.hut.fi/Software/smodels/ | | {{rh}} class="table-rh" |[http://www.tcs.hut.fi/Software/smodels/ मॉडल] | ||
|[[Linux|लिनक्स]], [[macOS|मैकओएस]], [[Microsoft Windows|विंडोज]] | |[[Linux|लिनक्स]], [[macOS|मैकओएस]], [[Microsoft Windows|विंडोज]] | ||
|[[GPL|जीपीएल]] | |[[GPL|जीपीएल]] | ||
Line 384: | Line 374: | ||
| | | | ||
|- | |- | ||
| {{rh}} class="table-rh" |[http://www.nku.edu/~wardj1/Research/smodels_cc.html | | {{rh}} class="table-rh" |[http://www.nku.edu/~wardj1/Research/smodels_cc.html मॉडल -cc] | ||
|[[Linux|लिनक्स]] | |[[Linux|लिनक्स]] | ||
|? | |? | ||
Line 427: | Line 417: | ||
*[http://www.cs.uni-potsdam.de/clasp/ Clएएसपी Answer Set Solver] | *[http://www.cs.uni-potsdam.de/clasp/ Clएएसपी Answer Set Solver] | ||
{{DEFAULTSORT:Answer Set Programming}} | {{DEFAULTSORT:Answer Set Programming}} | ||
[[Category: | [[Category:CS1 English-language sources (en)]] | ||
[[Category:Created On 15/05/2023]] | [[Category:Created On 15/05/2023|Answer Set Programming]] | ||
[[Category:Machine Translated Page|Answer Set Programming]] | |||
[[Category:Pages with script errors|Answer Set Programming]] | |||
[[Category:Templates Vigyan Ready|Answer Set Programming]] | |||
[[Category:Webarchive template wayback links]] | |||
[[Category:तर्क प्रोग्रामिंग|Answer Set Programming]] |
Latest revision as of 16:49, 26 October 2023
आंसर सेट प्रोग्रामिंग (एएसपी) कठिन (मुख्य रूप से एनपी कठिन) खोज एल्गोरिदम की ओर उन्मुख डेक्लेरेटिव प्रोग्रामिंग का एक रूप है। यह तर्क प्रोग्रामिंग के स्थिर मॉडल शब्दार्थ (आंसर सेट) शब्दार्थ पर आधारित है। एएसपी में, स्थिर मॉडल की गणना करने के लिए अविष्कार समस्याओं को कम कर दिया जाता है, और 'आंसर सेट सॉल्वर' - स्थिर मॉडल बनाने के लिए प्रोग्राम - का उपयोग खोज करने के लिए किया जाता है। कई आंसर सेट सॉल्वरों के डिजाइन में नियोजित कम्प्यूटेशनल प्रक्रिया डीपीएलएल एल्गोरिदम की वृद्धि है और सिद्धांत रूप में, यह सदैव समाप्त हो जाती है (प्रोलॉग क्वेरी मूल्यांकन के विपरीत, जो अनंत लूप का कारण बन सकता है)।
अधिक सामान्य अर्थ में, आंसर सेट प्रोग्रामिंग (एएसपी) ज्ञान प्रतिनिधित्व के लिए आंसर सेट के सभी अनुप्रयोग सम्मलित करता हैं[1][2] और इन अनुप्रयोगों में उत्पन्न होने वाली समस्याओं के हल के लिए प्रोलॉग-शैली क्वेरी मूल्यांकन का उपयोग करता है।
इतिहास
आंसर सेट प्रोग्रामिंग का एक प्रारंभिक उदाहरण 1997 में डिमोपोलोस, नेबेल और कोहलर द्वारा प्रस्तावित स्वचालित योजना और शेड्यूलिंग पद्धति थी।[3][4] उनका दृष्टिकोण योजनाओं और स्थिर मॉडलों के बीच संबंध पर आधारित है।[5]1998 में सोइनिनेन और नीमेला[6] लागू किया जिसे अब उत्पाद कॉन्फ़िगरेशन की समस्या के लिए आंसर सेट प्रोग्रामिंग के रूप में जाना जाता है।[4]1999 में, आंसर सेट प्रोग्रामिंग शब्द पहली बार एक पुस्तक द लॉजिक प्रोग्रामिंग पैराडाइम में दो पत्रों के संग्रह के शीर्षक के रूप में दिखाई दिया।[4]इन पत्रों में से पहले ने एक नए प्रोग्रामिंग प्रतिमान के रूप में खोज के लिए आंसर सेट सॉल्वर्स का उपयोग निर्धारित करता है।[7] उसी वर्ष नीमेला ने भी "स्थिर मॉडल सांत्वनिकता के साथ तार्किक प्रोग्राम" को एक नई पैराडाइम के रूप में प्रस्तावित किया।[8]
आंसर सेट प्रोग्रामिंग भाषा AnsProlog
लपरसे उस प्रोग्राम का नाम है जिसे मूल रूप से आंसर सेट सॉल्वर के लिए प्रतीक ग्राउंडिंग टूल (फ्रंट-एंड) के रूप में बनाया गया था [http: //www.tcs.hut.fi/Software/मॉडल / मॉडल ]। लपरसे द्वारा स्वीकार की जाने वाली भाषा अब सामान्य रूप से AnsProlog के नाम से जानी जाती है,[9] जिसका पूरा नाम है Answer Set Programming in Logic.[10] यह अब कई अन्य आंसर सेट सॉल्वर्स में भी एक ही विधि से उपयोग की जाती है, जिनमें आसैट, [https:/ /potassco.org/क्लैप/ क्लैप], cmodels, gNt , nomore++ और pbmodels सम्मलित हैं। इसकी एक अपवाद है (dlv एके लिए लिखी गई ASP प्रोग्रामों का सिंटैक्स कुछ अलग होता है।)
AnsProlog प्रोग्राम निम्नलिखित रूप के नियमों से मिलता है।
<head> :- <body> .
प्रतीक :-
(अगर) उस स्थिति में छोड़ दिया जाता है जब <body>
खाली होता है; ऐसे नियमों को तथ्य कहा जाता है। लपरसे के सबसे सरल प्रकार के नियमों में निषेध होती हैं।
इस भाषा में सम्मलित एक और उपयोगी रचना चयन (choice) है। उदाहरण के लिए, चयन नियम।
{p,q,r}.
कहता है: पूर्णांकों में से छांटें कि स्थिर मॉडल में सम्मलित किसे करें। इस चयन नियम वाले लपरसे प्रोग्राम में कोई अन्य नियम नहीं होते हैं, और इसके 8 स्थिर मॉडल होते हैं - .के अन्योन्य उपसंख्यक। एक स्थिर मॉडल की परिभाषा चयन नियमों वाले प्रोग्रामों के लिए भी सामान्य रूप से की जाती है।[11] चयन नियमों को स्थिर मॉडल सांत्वनिकता के अनुसार प्रस्तावात्मक सूत्रों के लिए संक्षेप माना जा सकता है।[12] उदाहरण के लिए, ऊपर दिए गए चुनाव नियम को तीन बहिष्कृत मध्य सूत्रों के संयोजन के लिए आशुलिपि के रूप में देखा जा सकता है:
लपरसे की भाषा हमें "प्रतिबद्ध" चयन नियम भी लिखने की अनुमति देती है, जैसे कि:-
1{p,q,r}2.
यह नियम कहता है: पूर्णांकों , में से कम से कम 1 चुनें, लेकिन 2 से अधिक नहीं। स्थिर मॉडल सांत्वनिकता के अनुसार इस नियम का अर्थ प्रस्तावात्मक सूत्र द्वारा प्रतिष्ठित है।
गणना सीमा नियम एक नियम के शरीर में भी उपयोग की जा सकती है, उदाहरण के लिए:-
:- 2{p,q,r}.
एक लपरसे प्रोग्राम में इस प्रतिबंध को जोड़ने से उन स्थिर मॉडल्स को छोड़ दिया जाता है जिनमें .के कम से कम 2 पूर्णांक उपस्थित होते हैं। इस नियम का अर्थ प्रस्तावात्मक सूत्र द्वारा प्रतिष्ठित किया जा सकता है।
लपरसे में प्राथमिक नियमों के समान पैटर्न का पालन करने वाली नियमों की संक्षेप में छोटे रूप (मज़बूत) करने के लिए और एक ही नियम के भीतर पूर्णांकों की संक्षेप में छोटे रूप करने के लिए चर (प्रोलोग की प्रकार) का उपयोग किया जाता है। उदाहरण के लिए, लपरसे प्रोग्राम:-
p(a). p(b). p(c).
q(X) :- p(X), X!=a.
के समान अर्थ है
p(a). p(b). p(c).
q(b). q(c).
प्रोग्राम
p(a). p(b). p(c).
{q(X):-p(X)}2.
के लिए आशुलिपि है
p(a). p(b). p(c).
{q(a), q(b), q(c)}2.
एक श्रेणी का रूप है:
(start..end)
जहां start और end निर्धारित मान वाले अंकगणितीय व्यक्तियां हैं। रेंज एक नोटेशनल शॉर्टकट है जिसका प्रमुख रूप से उपयोग संगत विधि से संख्यात्मक डोमेन को परिभाषित करने के लिए किया जाता है। उदाहरण के लिए, तथ्य
a(1..3).
का शॉर्टकट है
a(1). a(2). a(3).
समान शब्दार्थ वाले नियम निकायों में रेंज का भी उपयोग किया जा सकता है।
एक सशर्त शाब्दिक रूप का है:
p(X):q(X)
यदि q
का विस्तार{q(a1), q(a2), ..., q(aN)}
है, तो ऊपर दी गई शर्त को सांत्वनिक रूप से लिखना {p(a1), p(a2), ..., p(aN)}
के स्थान पर लिखने के समानार्थी होता है। उदाहरण के लिए,
q(1..2).
a :- 1 {p(X):q(X)}.
के लिए आशुलिपि है
q(1). q(2).
a :- 1 {p(1), p(2)}.
स्थिर मॉडल बनाना
फ़ाइल ${filename}
में संग्रहीत लपरसे प्रोग्राम का एक स्थिर मॉडल खोजने के लिए हम कमांड का उपयोग करते हैं
% lparse ${filename} | smodels
विकल्प 0 मॉडल को कार्यक्रम के सभी स्थिर मॉडलों को खोजने का निर्देश देता है। उदाहरण के लिए, यदि फ़ाइल test
में नियम हैं
1{p,q,r}2.
s :- not p.
तब कमांड आउटपुट उत्पन्न करता है
% lparse test | smodels 0
Answer: 1
Stable Model: q p
Answer: 2
Stable Model: p
Answer: 3
Stable Model: r p
Answer: 4
Stable Model: q s
Answer: 5
Stable Model: r s
Answer: 6
Stable Model: r q s
एएसपी कार्यक्रमों के उदाहरण
ग्राफ रंग
एक -ग्राफ का एन-रंगीकरण (-coloring) एक ऐसा फ़ंक्शन होता है जहां आसन्न शीर्षों की प्रत्येक जोड़ी के लिए . हम एक खोजने के लिए एएसपी का उपयोग करना चाहेंगे किसी दिए गए ग्राफ का रंग (या निर्धारित करें कि यह अस्तित्व में नहीं है)।
इसे निम्नलिखित लपरसे प्रोग्राम का उपयोग करके किया जा सकता है
c(1..n).
{color(X,I) : c(I)} 1 :- v(X).
:- color(X,I), color(Y,I), e(X,Y), c(I).
पंक्ति 1 संख्याओं को रंगों के रूप में परिभाषित किया जाता है। पंक्ति 2 में चयन नियम के अनुसार, प्रत्येक वर्टेक्स x को एक अद्वितीय रंग i से संबंधित किया जाना चाहिए। पंक्ति 3 में प्रतिबंध लगाती है कि वर्टेक्स और को एक-दूसरे से जुड़े हुए होने की स्थिति में वही रंग नहीं दिया जाना चाहिए।
यदि हम इस फ़ाइल को एक ग्राफ , की परिभाषा के साथ मिलाएं, जैसे कि निम्नलिखित हिंदी में:
v(1..100). % 1,...,100 are vertices
e(1,55). % there is an edge from 1 to 55
. . .
और इस पर कमांड लाइन पर निर्दिष्ट एन के आंकड़ी मान के साथ इस पर स्मॉडेल्स (मॉडल ) को चलाएं, तो मॉडल के आउटपुट में उपविभाग के रूप में के आयाम (atoms) एक - रंगीकरण को प्रतिष्ठित करेंगे।
इस उदाहरण में प्रोग्राम सामान्यतः सरल एएसपी प्रोग्रामों में पाए जाने वाले "उत्पन्न और परीक्षण" संगठन को दर्शाता है। चयन नियम एक "संभावित समाधानों" की सेट का वर्णन करता है - दिए गए खोज समस्या के समाधानों के सेट का एक सरल उपसमूह। इसके बाद एक प्रतिबंध होता है, जो स्वीकार्य नहीं होने वाले सभी संभावित समाधानों को निकाल देता है। चूंकि, स्मॉडेल्स और अन्य आंसर सेट सॉल्वर्स द्वारा उपयोग की जाने वाली खोज प्रक्रिया पर प्रयोग और त्रुटि पर नहीं आधारित होती है।
बड़ा गिरोह
एक ग्राफ में एक क्लिक ( क्लिके ) एक ऐसा सेट होता है जिसमें हर दो संबंधित वर्टेक्स होते हैं। निम्नलिखित लपरसे प्रोग्राम दिए गए ग्राफ में एक आकार की क्लिक ढूंढता है या यह निर्धारित करता है कि ऐसी क्लिक उपस्थित नहीं है:
n {in(X) : v(X)}.
:- in(X), in(Y), v(X), v(Y), X!=Y, not e(X,Y), not e(Y,X).
यह एक और "उत्पन्न और परीक्षण" संगठन का उदाहरण है। पंक्ति 1 में चयन नियम "उत्पन्न करता है" सभी सेट्स को जिनमें वर्टेक्स होते हैं। पंक्ति 2 में प्रतिबंध "छाँट देता है" वे सेट्स जो क्लिक नहीं हैं।
हैमिल्टनियन चक्र
निर्देशित ग्राफ में एक हैमिल्टनियन चक्र एक पथ (ग्राफ सिद्धांत) है जो ग्राफ के प्रत्येक शीर्ष से ठीक एक बार गुजरता है। यदि यह उपस्थित है तो दिए गए निर्देशित ग्राफ में हैमिल्टनियन चक्र को खोजने के लिए निम्नलिखित एलपार्स प्रोग्राम का उपयोग किया जा सकता है; हम मानते हैं कि 0 शीर्षों में से एक है।
{in(X,Y)} :- e(X,Y).
:- 2 {in(X,Y) : e(X,Y)}, v(X).
:- 2 {in(X,Y) : e(X,Y)}, v(Y).
r(X) :- in(0,X), v(X).
r(Y) :- r(X), in(X,Y), e(X,Y).
:- not r(X), v(X).
चयन नियम जो पंक्ति 1 में है "सभी संबंधों के सभी उपसेट उत्पन्न करता है"। तीन प्रतिबंध "वे उपसेट छाँट देते हैं" जो हैमिल्टोनियन साइकिल नहीं हैं। उनमें से आखिरी प्रतिबंध में सहायक प्रेडिकेट ( 0 से पहुँचयोग्य है") का उपयोग करके वर्टेक्स को रोकता है जो इस शर्त को पूरा नहीं करते हैं। यह प्रेडिकेट पंक्ति 6 और 7 में पुनर्निर्धारित रूप से परिभाषित है।
यह प्रोग्राम एक और अधिक सामान्य "उत्पन्न करें, परिभाषित करें और परीक्षण करें" संगठन का एक उदाहरण है: इसमें एक सहायक प्रेडिकेट की परिभाषा सम्मलित है जो हमें "बुरी" पोटेंशियल समाधानों को खत्म करने में मदद करता है।
निर्भरता पदच्छेद
प्राकृतिक भाषा प्रसंस्करण में, डिपेंडेंसी-आधारित पार्सिंग एक ASP समस्या के रूप में सूत्रधारी किया जा सकता है।[13]निम्नलिखित कोड लैटिन वाक्य "Puella pulchra in villa linguam latinam discit", "सुंदर लड़की विला में लैटिन भाषा सीख रही है" को पार्स करता है। वाक्य के शब्दों के बीच संभावित संबंधों को प्रतिष्ठित किया जाता है। गणनीय संरचना एक रेखांकित मुख्य वृक्ष के रूप में प्रदर्शित होती है।
% ********** input sentence **********
word(1, puella). word(2, pulchra). word(3, in). word(4, villa). word(5, linguam). word(6, latinam). word(7, discit).
% ********** lexicon **********
1{ node(X, attr(pulcher, a, fem, nom, sg));
node(X, attr(pulcher, a, fem, abl, sg)) }1 :- word(X, pulchra).
node(X, attr(latinus, a, fem, acc, sg)) :- word(X, latinam).
1{ node(X, attr(puella, n, fem, nom, sg));
node(X, attr(puella, n, fem, abl, sg)) }1 :- word(X, puella).
1{ node(X, attr(villa, n, fem, nom, sg));
node(X, attr(villa, n, fem, abl, sg)) }1 :- word(X, villa).
node(X, attr(linguam, n, fem, acc, sg)) :- word(X, linguam).
node(X, attr(discere, v, pres, 3, sg)) :- word(X, discit).
node(X, attr(in, p)) :- word(X, in).
% ********** syntactic rules **********
0{ arc(X, Y, subj) }1 :- node(X, attr(_, v, _, 3, sg)), node(Y, attr(_, n, _, nom, sg)).
0{ arc(X, Y, dobj) }1 :- node(X, attr(_, v, _, 3, sg)), node(Y, attr(_, n, _, acc, sg)).
0{ arc(X, Y, attr) }1 :- node(X, attr(_, n, Gender, Case, Number)), node(Y, attr(_, a, Gender, Case, Number)).
0{ arc(X, Y, prep) }1 :- node(X, attr(_, p)), node(Y, attr(_, n, _, abl, _)), X < Y.
0{ arc(X, Y, adv) }1 :- node(X, attr(_, v, _, _, _)), node(Y, attr(_, p)), not leaf(Y).
% ********** guaranteeing the treeness of the graph **********
1{ root(X):node(X, _) }1.
:- arc(X, Z, _), arc(Y, Z, _), X != Y.
:- arc(X, Y, L1), arc(X, Y, L2), L1 != L2.
path(X, Y) :- arc(X, Y, _).
path(X, Z) :- arc(X, Y, _), path(Y, Z).
:- path(X, X).
:- root(X), node(Y, _), X != Y, not path(X, Y).
leaf(X) :- node(X, _), not arc(X, _, _).
भाषा मानकीकरण और एएसपी प्रतियोगिता
एएसपी मानकीकरण कार्यसमूह ने एक मानक भाषा विनिर्देशिका प्रस्तुत की है, जिसे ASP-Core-2 कहा जाता है,[14] जिसकी ओर हाल के ASP सिस्टम संगत हो रहे हैं। ASP-Core-2, जो आंसर सेट प्रोग्रामिंग प्रतियोगिता के लिए संदर्भ भाषा है, जिसमें ASP सॉल्वर्स को नियमित अंतराल पर संदर्भ समस्याओं के उपरी मानक के साथ मान्यांकित किया जाता है।
कार्यान्वयन की समानता
प्रारंभिक प्रणालियाँ, जैसे कि स्मॉडेल्स, समाधान खोजने के लिए बैक ट्रैकिंग का उपयोग करती हैं। बूलियन सैट सॉल्वर के सिद्धांत और अभ्यास के विकास के साथ, कई एएसपी सॉल्वर्स सैट सॉल्वर्स के ऊपर बनाए गए, जिनमें आसैटऔर कमॉडेल्स सम्मलित हैं। इन्होंने एएसपी सूत्र को सैट प्रस्तावों में परिवर्तित किया, सैट सॉल्वर का उपयोग किया, और फिर समाधानों को फिर से एएसपी रूप में परिवर्तित किया। नवीनतम सिस्टम, जैसे क्लैप, एक हाइब्रिड दृष्टिकोण का उपयोग करते हैं, सैट से प्रेरित संघर्ष-निर्धारित एल्गोरिदम का उपयोग करते हैं, जो पूर्ण रूप से बूलियन-तार्किक रूप में परिवर्तन नहीं करते हैं। ये दृष्टिकोणों का उपयोग पहले के बैकट्रैकिंग एल्गोरिदम की समानता में आदेश के कई गुना तक प्रदर्शन में महत्वपूर्ण सुधारों की अनुमति देते हैं।
पोटास्को परियोजना नीचे दी गई कई प्रणालियों के लिए छत्र के रूप में कार्य करती है, जिसमें क्लैप, ग्राउंडिंग सिस्टम (ग्रिंगो), इंक्रीमेंटल सिस्टम (आईसीलिंगो), कंस्ट्रेंट सॉल्वर (क्लिंगकॉन), एएसपी कंपाइलर्स के लिए क्रिया भाषा (कोआला) ,वितरित एमपीआई कार्यान्वयन (क्लैस्पर), और कई अन्य सम्मलित हैं।
अधिकांश प्रणालियाँ चर का समर्थन करती हैं, लेकिन केवल अप्रत्यक्ष रूप से ग्राउंडिंग को प्रबल करके, लपर्स या ग्रिंगो जैसे ग्राउंडिंग सिस्टम का उपयोग प्रवेश बिंदु के रूप में करके। ग्राउंडिंग की आवश्यकता क्लॉज की संख्या में एक संयोजक विस्फोट का कारण बन सकती है; इसलिए, ऑन-द-फ्लाई ग्राउंडिंग करने वाले सिस्टम का एक फायदा हो सकता है।[15]
गैलीवास्प सिस्टम जैसे आंसर सेट प्रोग्रामिंग के क्वेरी-संचालित कार्यान्वयन[16] और एस (सीएएसपी)[17] संकल्प (तर्क) और संयोग के संयोजन का उपयोग करके पूर्णतः ग्राउंडिंग से बचते हैं।
प्लैटफ़ॉर्म | विशेषताएँ | यांत्रिकी | ||||||
---|---|---|---|---|---|---|---|---|
नाम | ओएस | लाइसेंस | चर | फंक्शन के प्रतीक | स्पष्ट सेट | स्पष्ट सूचियाँ | वियोगी (पसंद नियम) समर्थन | |
ASPeRiX | लिनक्स | जीपीएल | Yes | No | ऑन-द-फ्लाई ग्राउंडिंग | |||
ASसैट | सोलारिस | फ्रीवेयर | सैट-सॉल्वर आधारित | |||||
अकवार उत्तर सेट सॉल्वर | लिनक्स, मैकओएस, विंडोज | एमआईटी लाइसेंस | Yes, in Clingo | Yes | No | No | Yes | वृद्धिशील, एसएटी-सॉल्वर प्रेरित (कोई अच्छा नहीं, संघर्ष संचालित) |
Cmodels | लिनक्स, सोलारिस | जीपीएल | Requires grounding | Yes | वृद्धिशील, एसएटी-सॉल्वर प्रेरित (कोई अच्छा नहीं, संघर्ष संचालित) | |||
diff-सैट | लिनक्स, मैकओएस, विंडोज (जावा वर्चुअल मशीन) | एमआईटी लाइसेंस | Requires grounding | Yes | एसएटी-सॉल्वर प्रेरित (कोई अच्छा नहीं, संघर्ष संचालित)। संभाव्य समस्याओं को हल करने और आंसर सेट नमूनाकरण का समर्थन करता है | |||
DLV | लिनक्स, मैकओएस, विंडोज[18] | अकादमिक और गैर-वाणिज्यिक शैक्षिक उपयोग के लिए और गैर-लाभकारी संगठनों के लिए निःशुल्क[18] | Yes | Yes | No | No | Yes | लपरसे संगत नहीं है |
DLV-Complex | लिनक्स, मैकओएस, विंडोज | जीपीएल | Yes | Yes | Yes | Yes | DLV के शीर्ष पर निर्मित — लपरसे संगत नहीं | |
GnT | लिनक्स | जीपीएल | Requires grounding | Yes | स्मॉडेल्स के शीर्ष पर बनाया गया | |||
nomore++ | लिनक्स | जीपीएल | संयुक्त शाब्दिक + नियम-आधारित | |||||
Platypus | लिनक्स, सोलारिस, विंडोज | जीपीएल | वितरित, बहु-थ्रेडेड nomore++, मॉडल | |||||
Pbmodels | लिनक्स | ? | छद्म-बूलियन सॉल्वर आधारित | |||||
मॉडल | लिनक्स, मैकओएस, विंडोज | जीपीएल | Requires grounding | No | No | No | No | |
मॉडल -cc | लिनक्स | ? | Requires grounding | सैट-सॉल्वर आधारित; मॉडल ऑन/कॉन्फ्लिक्ट क्लॉज | ||||
Sup | लिनक्स | ? | सैट-सॉल्वर आधारित |
यह भी देखें
- डिफ़ॉल्ट तर्क
- तर्क प्रोग्रामिंग
- गैर-मोनोटोनिक तर्क
- प्रोलॉग
- स्थिर मॉडल शब्दार्थ
संदर्भ
- ↑ Baral, Chitta (2003). ज्ञान प्रतिनिधित्व, तर्क और घोषणात्मक समस्या समाधान. Cambridge University Press. ISBN 978-0-521-81802-5.
- ↑ Gelfond, Michael (2008). "Answer sets". In van Harmelen, Frank; Lifschitz, Vladimir; Porter, Bruce (eds.). ज्ञान प्रतिनिधित्व की पुस्तिका. Elsevier. pp. 285–316. ISBN 978-0-08-055702-1. as PDF Archived 2016-03-03 at the Wayback Machine
- ↑ Dimopoulos, Y.; Nebel, B.; Köhler, J. (1997). "Encoding planning problems in non-monotonic logic programs". In Steel, Sam; Alami, Rachid (eds.). Recent Advances in AI Planning: 4th European Conference on Planning, ECP'97, Toulouse, France, September 24–26, 1997, Proceedings. Lecture Notes in Computer Science: Lecture Notes in Artificial Intelligence. Vol. 1348. Springer. pp. 273–285. ISBN 978-3-540-63912-1. as Postscript
- ↑ 4.0 4.1 4.2 Lifschitz, Vladimir (13 July 2008). "What is answer set programming?" (PDF). Proceedings of the 23rd National Conference on Artificial Intelligence. AAAI Press. 3: 1594–1597.
- ↑ Subrahmanian, V.S.; Zaniolo, C. (1995). "Relating stable models and AI planning domains". In Sterling, Leon (ed.). Logic Programming: Proceedings of the Twelfth International Conference on Logic Programming. MIT Press. pp. 233–247. ISBN 978-0-262-69177-2. as Postscript
- ↑ Soininen, T.; Niemelä, I. (1998), Formalizing configuration knowledge using rules with choices (Postscript), Laboratory of Information Processing Science, Helsinki University of Technology
- ↑ Marek, V.; Truszczyński, M. (20 May 1999). "Stable models and an alternative logic programming paradigm". In Apt, Krzysztof R. (ed.). The Logic programming paradigm: a 25-year perspective (PDF). Springer. pp. 169–181. arXiv:cs/9809032. ISBN 978-3-540-65463-6.
- ↑ Niemelä, I. (November 1999). "एक बाधा प्रोग्रामिंग प्रतिमान के रूप में स्थिर मॉडल शब्दार्थ के साथ तर्क कार्यक्रम" (Postscript,gzipped). Annals of Mathematics and Artificial Intelligence. 25 (3/4): 241–273. doi:10.1023/A:1018930122475. S2CID 14465318.
- ↑ Crick, Tom (2009). Superoptimisation: Provably Optimal Code Generation using Answer Set Programming (PDF) (Ph.D.). University of Bath. Docket 20352. Archived from the original (PDF) on 2016-03-04. Retrieved 2011-05-27.
- ↑ Rogelio Davila. "AnsProlog, और सिंहावलोकन" (PowerPoint).
- ↑ Niemelä, I.; Simons, P.; Soinenen, T. (2000). "Stable model semantics of weight constraint rules". In Gelfond, Michael; Leone, Nicole; Pfeifer, Gerald (eds.). Logic Programming and Nonmonotonic Reasoning: 5th International Conference, LPNMR '99, El Paso, Texas, USA, December 2–4, 1999 Proceedings. Lecture Notes in Computer Science: Lecture Notes in Artificial Intelligence. Vol. 1730. Springer. pp. 317–331. ISBN 978-3-540-66749-0. as Postscript
- ↑ Ferraris, P.; Lifschitz, V. (January 2005). "नेस्टेड एक्सप्रेशंस के रूप में वजन की कमी". Theory and Practice of Logic Programming. 5 (1–2): 45–74. arXiv:cs/0312045. doi:10.1017/S1471068403001923. S2CID 5051610. as Postscript
- ↑ "निर्भरता विश्लेषण". Archived from the original on 2015-04-15. Retrieved 2015-04-15.
- ↑ "ASP-Core-2 Input Language Specification" (PDF). Retrieved 14 May 2018.
- ↑ Lefèvre, Claire; Béatrix, Christopher; Stéphan, Igor; Garcia, Laurent (May 2017). "ASPeRiX, उत्तर सेट कंप्यूटिंग के लिए एक प्रथम-क्रम फ़ॉरवर्ड चेनिंग दृष्टिकोण*". Theory and Practice of Logic Programming (in English). 17 (3): 266–310. arXiv:1503.07717. doi:10.1017/S1471068416000569. ISSN 1471-0684. S2CID 2371655.
- ↑ Marple, Kyle.; Gupta, Gopal. (2012). "Galliwasp: A Goal-Directed Answer Set Solver". In Albert, Elvira (ed.). Logic-Based Program Synthesis and Transformation, 22nd International Symposium, LOPSTR 2012, Leuven, Belgium, September 18-20, 2012, Revised Selected Papers. Springer. pp. 122–136.
- ↑ Arias, J.; Carro, M.; Salazar, E.; Marple, K.; Gupta, G. (2018). "ग्राउंडिंग के बिना बाधा उत्तर सेट प्रोग्रामिंग". Theory and Practice of Logic Programming. 18 (3–4): 337–354. doi:10.1017/S1471068418000285. S2CID 13754645.
- ↑ 18.0 18.1 "DLV System company page". DLVSYSTEM s.r.l. Retrieved 16 November 2011.