Кіріспе

Қиын іздеу мәселелеріне бағытталған бағдарламалау парадигмасы.

Жауаптар жиынтығын бағдарламалау (ASP) — негізінен NP қиын мәселелер сияқты қиын іздеу мәселелеріне бағытталған декларативтік бағдарламалаудың бір түрі. Ол логикалық бағдарламалаудың тұрақты модель (жауаптар жиынтығы) семантикасына негізделген. ASP-да іздеу мәселелері тұрақты модельдерді есептеуге дейін тоғытылады, ал іздеуді жүзеге асыру үшін жауаптар жиынтығын шешушілер — тұрақты модельдерді құратын бағдарламалар пайдаланылады. Көптеген жауаптар жиынтығын шешушілерді жобалауда қолданылатын есептеу процесі DPLL алгоритмінің жетілдірілген нұсқасы болып табылады және принцип бойынша, ол әрқашан аяқталады (Prolog сұраныстарын бағалаудан өзгеше, ол шексіз циклға түсуі мүмкін). Әдеттегідей, ASP жауаптар жиынтығын білімді көрсету және логикалық қорыту салаларындағы қолданылуын, сондай-ақ осы салаларда туындайтын мәселелерді шешу үшін Prolog стиліндегі сұраныстарды бағалауды қамтиды.

Үлкен топ

Графиктегі клика – жұп-жұп көршілес төбелердің жиынтығы. Келесі Lparse бағдарламасы берілген бағытталған графикте белгілі бір өлшемдегі кликаны табады немесе оның жоқ екенін анықтайды: n {in(X) : v(X)}. : in(X), in(Y), X!=Y, e(X,Y) болмауы. Бұл – «жасау және тексеру» ұйымдастыру принципінің тағы бір мысалы. 1-жолдағы таңдау ережесі белгілі бір саны бар төбелерден тұратын барлық жиынтықтарды «жасайды». 2-жолдағы шектеу клика емес жиынтықтарды «іріктеп тастайды».

Гамильтон циклы

Бағытталған графтағы Гамильтон циклі – графтың әрбір төбесінен дәл бір рет өтетін цикл. Егер болса, берілген бағытталған графтағы Гамильтон циклін табу үшін келесі Lparse бағдарламасын қолдануға болады; 0 төбесінің бірі деп есептейміз. {X,Y ішінде}: e(X,Y). : 2 {X,Y ішінде: e(X,Y)}, v(X). : 2 {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 конкурсы

ASP стандарттау жұмыс тобы ASP Core 2 деп аталатын стандартты тілдің сипаттамасын жасады, соңғы ASP жүйелері оған қарай бірігіп келеді. ASP Core 2 – Жауаптар жиынтығын бағдарламалау (Answer Set Programming) жарысының анықтамалық тілі болып табылады, онда ASP шешімдегіштері бірқатар анықтамалық мәселелер бойынша үнемі салыстырылып бағаланады.

Іске асыруды салыстыру

Ертедегі жүйелер, мысалы, smodels, шешімдерді табу үшін кері іздеуді қолданды. Бульдік SAT шешімдерінің теориясы мен тәжірибесі дамыған сайын, ASSAT және Cmodels-ті қоса алғанда, көптеген ASP шешімдері SAT шешімдерінің үстіне салынды. Олар ASP формуласын SAT ұсыныстарына айналдырды, SAT шешімін қолданды, содан кейін шешімдерді ASP түріне қайта айналдырды. Clasp сияқты жақындағы жүйелер гибридтік тәсілді қолданады, SAT-тан шабыттанған, қақтығысқа негізделген алгоритмдерді пайдаланады, бірақ толығымен Бульдік логикалық формаға түрленбейді. Бұл тәсілдер өнімділіктің айтарлықтай жақсаруына мүмкіндік береді, көбінесе бұрынғы кері іздеу алгоритмдерінен бірнеше есе артық. Potassco жобасы төмендегі көптеген жүйелер үшін шатыр ретінде әрекет етеді, соның ішінде clasp, негіздеу жүйелері (gringo), инкременттік жүйелер (iclingo), шектеулерді шешушілер (clingcon), ASP компиляторларына әрекет ету тілі (coala), таратылған хабар алмасу интерфейсі (claspar) және тағы да басқалары. Көптеген жүйелер айнымалыларды қолдайды, бірақ тек жанама түрде, Lparse немесе gringo сияқты негіздеу жүйесін алдыңғы қатар ретінде пайдалану арқылы негіздеуді міндеттейді. Негіздеу қажеттілігі шарттардың комбинаторлық жарылысына әкелуі мүмкін; сондықтан, жүріс барысында негіздеуді орындайтын жүйелер артықшылыққа ие болуы мүмкін. Galliwasp жүйесі және s(CASP) сияқты жауап жиынтығын бағдарламалаудың сұрауға негізделген жүзеге асырылымдары, шешімділік және коиндукцияның комбинациясын пайдалану арқылы негіздеуден толығымен аулақ болады.

Platform Features Mechanics Name OS Licence Variables Function symbols Explicit sets Explicit lists Disjunctive (choice rules) supportASPeRiX LinuxGPLжүргізу кезінде негіздеуASSATSolarisFreewareSAT шешімдеріне негізделгенClasp Answer Set SolverLinux, macOS, WindowsMIT Licenseинкременттік, SAT шешімдерінен шабыттанған (жаман емес, қақтығысқа негізделген)CmodelsLinux, SolarisGPLинкременттік, SAT шешімдерінен шабыттанған (жаман емес, қақтығысқа негізделген)diff SATLinux, macOS, Windows (Java virtual machine)MIT LicenseSAT шешімдерінен шабыттанған (жаман емес, қақтығысқа негізделген). Ықтималдық мәселелерді шешуді және жауап жиынтығын үлгілеуді қолдайдыDLVLinux, macOS, Windowsакадемиялық және коммерциялық емес білім беру мақсатында тегін, сондай-ақ коммерциялық емес ұйымдар үшін жарамдыDLV ComplexLinux, macOS, WindowsGPLDLV-ге негізделген, Lparse-ке сәйкес келмейдіGnTLinuxGPL smodels-ке негізделгенnomore++LinuxGPLқұрама литераль+ережеге негізделгенPlatypusLinux, Solaris, WindowsGPLтаратылған, көп жіпті nomore++, smodelsPbmodelsLinux?pseudo boolean шешімдеріне негізделгенSmodelsLinux, macOS, WindowsGPLSmodels cc Linux?SAT шешімдеріне негізделген; smodels w/қақтығыс шарттарыSupLinux?SAT шешімдеріне негізделген