आंसर सेट प्रोग्रामिंग: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:
{{Programming paradigms}}
{{Programming paradigms}}


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


अधिक सामान्य अर्थ में, एएसपी में ज्ञान प्रतिनिधित्व के उत्तर सेट के सभी अनुप्रयोग शामिल हैं<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> और इन अनुप्रयोगों में उत्पन्न होने वाली समस्याओं को हल करने के लिए प्रोलॉग-शैली क्वेरी मूल्यांकन का उपयोग।
अधिक सामान्य अर्थ में, उत्तर सेट प्रोग्रामिंग (एएसपी) ज्ञान प्रतिनिधित्व के लिए उत्तर सेट के सभी अनुप्रयोग सम्मलित करता हैं<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>
उत्तर सेट प्रोग्रामिंग का एक प्रारंभिक उदाहरण 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> लागू किया जिसे अब [[उत्पाद कॉन्फ़िगरेशन]] की समस्या के लिए उत्तर सेट प्रोग्रामिंग के रूप में जाना जाता है।<ref name="WhatIs"/>1999 में, उत्तर सेट प्रोग्रामिंग शब्द पहली बार एक पुस्तक द लॉजिक प्रोग्रामिंग पैराडाइम में दो पत्रों के संग्रह के शीर्षक के रूप में दिखाई दिया।<ref name="WhatIs"/>इन पत्रों में से पहले ने एक नए [[प्रोग्रामिंग प्रतिमान]] के रूप में खोज के लिए उत्तर सेट सॉल्वरों के उपयोग की पहचान की।<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> उसी वर्ष नीमेला ने एक नए प्रतिमान के रूप में स्थिर मॉडल शब्दार्थ के साथ तर्क कार्यक्रम भी प्रस्तावित किए।<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>
|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 ==
== उत्तर सेट प्रोग्रामिंग भाषा AnsProlog ==
[http://www.tcs.hut.fi/Software/smodels/lparse.ps Lparse] उस प्रोग्राम का नाम है जिसे मूल रूप से उत्तर सेट सॉल्वर के लिए [[प्रतीक ग्राउंडिंग]] टूल (फ्रंट-एंड) के रूप में बनाया गया था [http: //www.tcs.hut.fi/Software/smodels/ smodels]। Lparse जिस भाषा को स्वीकार करता है उसे अब आम तौर पर 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> तर्क में उत्तर सेट प्रोग्रामिंग के लिए संक्षिप्त।<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/ asसैट], [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] एक अपवाद है; dlv के लिए लिखे गए एएसपी प्रोग्राम का सिंटैक्स कुछ अलग है।)
[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><body></code> खाली है; ऐसे नियमों को तथ्य कहा जाता है। सबसे सरल प्रकार के Lparse नियम स्थिर मॉडल शब्दार्थ हैं # बाधाओं के साथ कार्यक्रम।
प्रतीक <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> स्थिर मॉडल में शामिल करने के लिए। Lparse प्रोग्राम जिसमें यह पसंद नियम है और कोई अन्य नियम नहीं है, के 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,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>
Lparse की भाषा हमें विवश विकल्प नियम लिखने की भी अनुमति देती है, जैसे कि
लपरसे की भाषा हमें "प्रतिबद्ध" चयन नियम भी लिखने की अनुमति देती है, जैसे कि:-


<syntaxhighlight lang="prolog">
<syntaxhighlight lang="prolog">
1{p,q,r}2.
1{p,q,r}2.
</syntaxhighlight>
</syntaxhighlight>
यह नियम कहता है: कम से कम 1 परमाणु चुनें <math>p,q,r</math>, लेकिन 2 से अधिक नहीं। स्थिर मॉडल शब्दार्थ के तहत इस नियम का अर्थ प्रस्ताविक सूत्र द्वारा दर्शाया गया है
यह नियम कहता है: पूर्णांकों  <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>
इस बाधा को Lparse प्रोग्राम में जोड़ने से स्थिर मॉडल समाप्त हो जाते हैं जिनमें कम से कम 2 परमाणु होते हैं <math>p,q,r</math>. इस नियम का अर्थ प्रस्ताविक सूत्र द्वारा दर्शाया जा सकता है
एक लपरसे प्रोग्राम में इस प्रतिबंध को जोड़ने से उन स्थिर मॉडल्स को छोड़ दिया जाता है जिनमें <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>
चर (पूंजीकृत, जैसा कि प्रोलॉग # डेटा प्रकार में है) का उपयोग Lparse में नियमों के संग्रह को संक्षिप्त करने के लिए किया जाता है जो समान पैटर्न का पालन करते हैं, और उसी नियम के भीतर परमाणुओं के संग्रह को संक्षिप्त करने के लिए भी। उदाहरण के लिए, Lparse प्रोग्राम
लपरसे में प्राथमिक नियमों के समान पैटर्न का पालन करने वाली नियमों की संक्षेप में छोटे रूप (मज़बूत) करने के लिए और एक ही नियम के भीतर पूर्णांकों की संक्षेप में छोटे रूप करने के लिए चर (प्रोलोग की प्रकार) का उपयोग किया जाता है। उदाहरण के लिए, लपरसे प्रोग्राम:-


<syntaxhighlight lang="prolog">
<syntaxhighlight lang="prolog">
Line 63: Line 62:
q(b). q(c).
q(b). q(c).
</syntaxhighlight>
</syntaxhighlight>
कार्यक्रम
प्रोग्राम


<syntaxhighlight lang="prolog">
<syntaxhighlight lang="prolog">
Line 79: Line 78:
(start..end)
(start..end)
</syntaxhighlight>
</syntaxhighlight>
जहां प्रारंभ और अंत निरंतर मूल्यवान अंकगणितीय अभिव्यक्तियां हैं। एक श्रेणी एक नोटेशनल शॉर्टकट है जो मुख्य रूप से संख्यात्मक डोमेन को संगत तरीके से परिभाषित करने के लिए उपयोग किया जाता है। उदाहरण के लिए, तथ्य
जहां start और end निर्धारित मान वाले अंकगणितीय व्यक्तियां हैं। रेंज एक नोटेशनल शॉर्टकट है जिसका प्रमुख रूप से उपयोग संगत विधि से संख्यात्मक डोमेन को परिभाषित करने के लिए किया जाता है। उदाहरण के लिए, तथ्य


<syntaxhighlight lang="prolog">
<syntaxhighlight lang="prolog">
Line 96: Line 95:
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> स्थिति के स्थान पर। उदाहरण के लिए,
यदि <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 110:


== स्थिर मॉडल बनाना ==
== स्थिर मॉडल बनाना ==
फ़ाइल में संग्रहीत Lparse प्रोग्राम का एक स्थिर मॉडल खोजने के लिए <code>${filename}</code> हम कमांड का उपयोग करते हैं
फ़ाइल <code>${filename}</code> में संग्रहीत लपरसे प्रोग्राम का एक स्थिर मॉडल खोजने के लिए  हम कमांड का उपयोग करते हैं


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
% lparse ${filename} | smodels
% lparse ${filename} | smodels
</syntaxhighlight>
</syntaxhighlight>
विकल्प 0 smodels को कार्यक्रम के सभी स्थिर मॉडलों को खोजने का निर्देश देता है। उदाहरण के लिए, यदि फ़ाइल <code>test</code> नियम शामिल हैं
विकल्प 0 मॉडल को कार्यक्रम के सभी स्थिर मॉडलों को खोजने का निर्देश देता है। उदाहरण के लिए, यदि फ़ाइल <code>test</code> में नियम हैं


<syntaxhighlight lang="prolog">
<syntaxhighlight lang="prolog">
Line 144: Line 143:


=== ग्राफ रंग ===
=== ग्राफ रंग ===
एक <math>n</math>-ग्राफ का रंग रंगना (असतत गणित) <math>G = \left\lang V, E\right\rang</math> एक कार्य है <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>किसी दिए गए ग्राफ का रंग (या निर्धारित करें कि यह अस्तित्व में नहीं है)।
एक -ग्राफ <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>किसी दिए गए ग्राफ का रंग (या निर्धारित करें कि यह अस्तित्व में नहीं है)।


यह निम्न Lparse प्रोग्राम का उपयोग करके पूरा किया जा सकता है:
इसे निम्नलिखित लपरसे प्रोग्राम का उपयोग करके किया जा सकता है<blockquote>
# c(1..n).                                         
# {color(X,I) : c(I)} 1 :- v(X).           
# color(X,I), color(Y,I), e(X,Y), c(I).
</blockquote>पंक्ति 1 संख्याओं  <math>1,\dots,n</math> को रंगों के रूप में परिभाषित किया जाता है। पंक्ति  2 में चयन नियम के अनुसार, प्रत्येक वर्टेक्स x को एक अद्वितीय रंग i से संबंधित किया जाना चाहिए। पंक्ति 3 में प्रतिबंध लगाती है कि वर्टेक्स <math>x</math> और <math>y</math> को एक-दूसरे से जुड़े हुए होने की स्थिति में वही रंग नहीं दिया जाना चाहिए।


<वाक्यविन्यास लैंग = प्रोलॉग लाइन = 1>
यदि हम इस फ़ाइल को एक ग्राफ <math>G</math>, की परिभाषा के साथ मिलाएं, जैसे कि निम्नलिखित हिंदी में:
सी (1..एन)।
1 {रंग(एक्स,आई) : सी(आई)} 1:-वी(एक्स).
:- रंग (एक्स, आई), रंग (वाई, आई), ई (एक्स, वाई), सी (आई)।
</वाक्यविन्यास हाइलाइट>
 
पंक्ति 1 संख्याओं को परिभाषित करती है <math>1,\dots,n</math> रंग होना। लाइन 2 में पसंद नियम के अनुसार, एक अनूठा रंग <math>i</math> प्रत्येक शीर्ष पर असाइन किया जाना चाहिए <math>x</math>. पंक्ति 3 में बाधा एक ही रंग को शीर्ष पर निर्दिष्ट करने पर रोक लगाती है <math>x</math> और <math>y</math> अगर उन्हें जोड़ने वाला कोई किनारा है।
 
अगर हम इस फ़ाइल को परिभाषा के साथ जोड़ते हैं <math>G</math>, जैसे कि


<syntaxhighlight lang="prolog">
<syntaxhighlight lang="prolog">
Line 163: Line 158:
. . .
. . .
</syntaxhighlight>
</syntaxhighlight>
और उस पर smodels चलाते हैं, के संख्यात्मक मान के साथ <math>n</math> कमांड लाइन पर निर्दिष्ट, फिर फॉर्म के परमाणु <math>\mathrm{color}(\dots,\dots)</math> smodels के आउटपुट में एक का प्रतिनिधित्व करेगा <math>n</math>- का रंग <math>G</math>.
और इस पर कमांड लाइन पर निर्दिष्ट एन के आंकड़ी मान के साथ इस पर स्मॉडेल्स (मॉडल ) को चलाएं, तो मॉडल के आउटपुट में उपविभाग के रूप में <math>\mathrm{color}(\dots,\dots)</math> के आयाम (atoms) एक <math>n</math>- रंगीकरण को <math>G</math> प्रतिष्ठित करेंगे।


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


=== बड़ा गिरोह ===
=== बड़ा गिरोह ===
एक ग्राफ़ में एक क्लिक (ग्राफ़ सिद्धांत) जोड़ीदार आसन्न शीर्षों का एक सेट है। निम्नलिखित Lparse प्रोग्राम आकार का एक समूह पाता है <math>\geq n</math> किसी दिए गए ग्राफ़ में, या यह निर्धारित करता है कि यह मौजूद नहीं है:
एक ग्राफ में एक क्लिक ( क्लिके ) एक ऐसा सेट होता है जिसमें हर दो संबंधित वर्टेक्स होते हैं। निम्नलिखित लपरसे प्रोग्राम दिए गए ग्राफ में एक आकार <math>\geq n</math> की क्लिक ढूंढता है या यह निर्धारित करता है कि ऐसी क्लिक उपस्थित नहीं है:<blockquote>
 
# n {in(X) : v(X)}.
<वाक्यविन्यास लैंग = प्रोलॉग लाइन = 1>
# :- in(X), in(Y), v(X), v(Y), X!=Y, not e(X,Y), not e(Y,X).
एन {इन (एक्स): वी (एक्स)}
</blockquote>यह एक और "उत्पन्न और परीक्षण" संगठन का उदाहरण है। पंक्ति 1 में चयन नियम "उत्पन्न करता है" सभी सेट्स को जिनमें <math>\geq n</math> वर्टेक्स होते हैं। पंक्ति 2 में प्रतिबंध "छाँट देता है" वे सेट्स जो क्लिक नहीं हैं।
:- in(X), in(Y), v(X), v(Y), X!=Y, नहीं e(X,Y), नहीं e(Y,X).
</वाक्यविन्यास हाइलाइट>
 
यह जनरेट-एंड-टेस्ट संगठन का एक और उदाहरण है। लाइन 1 में चुनाव नियम से मिलकर सभी सेट उत्पन्न होते हैं <math>\geq n</math> शिखर। लाइन 2 में बाधा उन सेटों को मात देती है जो गुट नहीं हैं।


=== [[हैमिल्टनियन चक्र]] ===
=== [[हैमिल्टनियन चक्र]] ===
[[निर्देशित ग्राफ]] में एक हैमिल्टनियन चक्र एक [[पथ (ग्राफ सिद्धांत)]] है जो ग्राफ के प्रत्येक शीर्ष से ठीक एक बार गुजरता है। यदि यह मौजूद है तो दिए गए निर्देशित ग्राफ में हैमिल्टनियन चक्र को खोजने के लिए निम्नलिखित एलपार्स प्रोग्राम का उपयोग किया जा सकता है; हम मानते हैं कि 0 शीर्षों में से एक है।
[[निर्देशित ग्राफ]] में एक हैमिल्टनियन चक्र एक [[पथ (ग्राफ सिद्धांत)]] है जो ग्राफ के प्रत्येक शीर्ष से ठीक एक बार गुजरता है। यदि यह उपस्थित है तो दिए गए निर्देशित ग्राफ में हैमिल्टनियन चक्र को खोजने के लिए निम्नलिखित एलपार्स प्रोग्राम का उपयोग किया जा सकता है; हम मानते हैं कि 0 शीर्षों में से एक है।<blockquote>
 
# {in(X,Y)} :- e(X,Y).
<वाक्यविन्यास लैंग = प्रोलॉग लाइन = 1>
#
{इन (एक्स, वाई)} :- (एक्स, वाई)
# :- 2 {in(X,Y) : e(X,Y)}, v(X).
 
# :- 2 {in(X,Y) : e(X,Y)}, v(Y).
:- 2 {इन (एक्स, वाई): (एक्स, वाई)}, वी (एक्स)
#
:- 2 {इन (एक्स, वाई): (एक्स, वाई)}, वी (वाई)
# r(X) :- in(0,X), v(X).
 
# r(Y) :- r(X), in(X,Y), e(X,Y).
आर(एक्स) :- में(0,एक्स), वी(एक्स).
#
आर(वाई) :- आर(एक्स), में(एक्स,वाई), (एक्स,वाई).
# :- not r(X), v(X).
 
</blockquote>चयन नियम जो पंक्ति 1 में है "सभी संबंधों के सभी उपसेट उत्पन्न करता है"। तीन प्रतिबंध "वे उपसेट छाँट देते हैं" जो हैमिल्टोनियन साइकिल नहीं हैं। उनमें से आखिरी प्रतिबंध में सहायक प्रेडिकेट <math>r(x)</math> (<math>x</math> 0 से पहुँचयोग्य है") का उपयोग करके वर्टेक्स को रोकता है जो इस शर्त को पूरा नहीं करते हैं। यह प्रेडिकेट पंक्ति 6 और 7 में पुनर्निर्धारित रूप से परिभाषित है।
: नहीं आर(एक्स), वी(एक्स).
</वाक्यविन्यास हाइलाइट>
 
लाइन 1 में पसंद नियम किनारों के सेट के सभी सबसेट उत्पन्न करता है। तीन बाधाओं ने उन उपसमुच्चय को हटा दिया जो हैमिल्टनियन चक्र नहीं हैं। उनमें से अंतिम सहायक विधेय का उपयोग करता है <math>r(x)</math> (<math>x</math> 0 से पहुंच योग्य है) उन शीर्षों को प्रतिबंधित करने के लिए जो इस शर्त को पूरा नहीं करते हैं। यह विधेय रेखा 6 और 7 में पुनरावर्ती रूप से परिभाषित किया गया है।


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


=== निर्भरता [[ पदच्छेद ]] ===
=== निर्भरता [[ पदच्छेद ]] ===
[[प्राकृतिक भाषा प्रसंस्करण]] में, पार्सिंग | निर्भरता-आधारित पार्सिंग को एएसपी समस्या के रूप में तैयार किया जा सकता है।<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>
[[प्राकृतिक भाषा प्रसंस्करण]] में, डिपेंडेंसी-आधारित पार्सिंग एक 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 238: Line 222:
एएसपी मानकीकरण कार्यसमूह ने एक मानक भाषा विनिर्देशिका प्रस्तुत की है, जिसे 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 सॉल्वर्स को नियमित अंतराल पर संदर्भ समस्याओं के उपरी मानक के साथ मान्यांकित किया जाता है।
एएसपी मानकीकरण कार्यसमूह ने एक मानक भाषा विनिर्देशिका प्रस्तुत की है, जिसे 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>
Line 322: Line 306:
|{{no}}
|{{no}}
|{{yes}}
|{{yes}}
|Lparse संगत नहीं है
|लपरसे संगत नहीं है
|-
|-
| {{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 316:
|{{yes}}
|{{yes}}
|{{yes}}
|{{yes}}
|[[DLV]] के शीर्ष पर निर्मित — Lparse संगत नहीं
|[[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 346:
|
|
|
|
|वितरित, बहु-थ्रेडेड nomore++, smodels
|वितरित, बहु-थ्रेडेड 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 358:
|[[pseudo-boolean|छद्म-बूलियन]] सॉल्वर आधारित
|[[pseudo-boolean|छद्म-बूलियन]] सॉल्वर आधारित
|-
|-
| {{rh}} class="table-rh" |[http://www.tcs.hut.fi/Software/smodels/ 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 368:
|
|
|-
|-
| {{rh}} class="table-rh" |[http://www.nku.edu/~wardj1/Research/smodels_cc.html Smodels-cc]
| {{rh}} class="table-rh" |[http://www.nku.edu/~wardj1/Research/smodels_cc.html मॉडल -cc]
|[[Linux|लिनक्स]]
|[[Linux|लिनक्स]]
|?
|?

Revision as of 11:21, 19 May 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) एक ऐसा फ़ंक्शन होता है जहां आसन्न शीर्षों की प्रत्येक जोड़ी के लिए . हम एक खोजने के लिए एएसपी का उपयोग करना चाहेंगे किसी दिए गए ग्राफ का रंग (या निर्धारित करें कि यह अस्तित्व में नहीं है)।

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

  1. c(1..n).
  2. {color(X,I) : c(I)} 1 :- v(X).
  3. 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) एक - रंगीकरण को प्रतिष्ठित करेंगे।

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

बड़ा गिरोह

एक ग्राफ में एक क्लिक ( क्लिके ) एक ऐसा सेट होता है जिसमें हर दो संबंधित वर्टेक्स होते हैं। निम्नलिखित लपरसे प्रोग्राम दिए गए ग्राफ में एक आकार की क्लिक ढूंढता है या यह निर्धारित करता है कि ऐसी क्लिक उपस्थित नहीं है:

  1. n {in(X) : v(X)}.
  2. :- in(X), in(Y), v(X), v(Y), X!=Y, not e(X,Y), not e(Y,X).

यह एक और "उत्पन्न और परीक्षण" संगठन का उदाहरण है। पंक्ति 1 में चयन नियम "उत्पन्न करता है" सभी सेट्स को जिनमें वर्टेक्स होते हैं। पंक्ति 2 में प्रतिबंध "छाँट देता है" वे सेट्स जो क्लिक नहीं हैं।

हैमिल्टनियन चक्र

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

  1. {in(X,Y)} :- e(X,Y).
  2. :- 2 {in(X,Y) : e(X,Y)}, v(X).
  3. :- 2 {in(X,Y) : e(X,Y)}, v(Y).
  4. r(X) :- in(0,X), v(X).
  5. r(Y) :- r(X), in(X,Y), e(X,Y).
  6. :- 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 लिनक्स ? सैट-सॉल्वर आधारित


यह भी देखें

संदर्भ

  1. Baral, Chitta (2003). ज्ञान प्रतिनिधित्व, तर्क और घोषणात्मक समस्या समाधान. Cambridge University Press. ISBN 978-0-521-81802-5.
  2. 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
  3. 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. 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.
  5. 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
  6. Soininen, T.; Niemelä, I. (1998), Formalizing configuration knowledge using rules with choices (Postscript), Laboratory of Information Processing Science, Helsinki University of Technology
  7. 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.
  8. Niemelä, I. (November 1999). "एक बाधा प्रोग्रामिंग प्रतिमान के रूप में स्थिर मॉडल शब्दार्थ के साथ तर्क कार्यक्रम" (Postscript,gzipped). Annals of Mathematics and Artificial Intelligence. 25 (3/4): 241–273. doi:10.1023/A:1018930122475. S2CID 14465318.
  9. 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.
  10. Rogelio Davila. "AnsProlog, और सिंहावलोकन" (PowerPoint).
  11. 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
  12. 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
  13. "निर्भरता विश्लेषण". Archived from the original on 2015-04-15. Retrieved 2015-04-15.
  14. "ASP-Core-2 Input Language Specification" (PDF). Retrieved 14 May 2018.
  15. 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.
  16. 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.
  17. 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. 18.0 18.1 "DLV System company page". DLVSYSTEM s.r.l. Retrieved 16 November 2011.


बाहरी संबंध