Jump to content

Программирование набора ответов

Программирование множества ответов ( ASP ) — это форма декларативного программирования, ориентированная на решение сложных (в первую очередь NP-трудных ) задач поиска . Он основан на семантике устойчивой модели (множества ответов) логического программирования . В ASP задачи поиска сводятся к вычислению устойчивых моделей, а решатели множества ответов для выполнения поиска используются — программы для генерации устойчивых моделей. Вычислительный процесс, используемый при разработке многих решателей множества ответов, является усовершенствованием алгоритма DPLL и, в принципе, всегда завершается (в отличие от оценки запроса Пролога , которая может привести к бесконечному циклу ).

В более общем смысле ASP включает в себя все приложения наборов ответов для представления знаний и рассуждений. [1] [2] и использование оценки запросов в стиле Пролога для решения проблем, возникающих в этих приложениях.

Ранним примером программирования набора ответов был метод планирования , предложенный в 1997 году Димопулосом, Небелем и Кёлером. [3] [4] Их подход основан на взаимосвязи между планами и стабильными моделями. [5] В 1998 году Сойнинен и Ниемеля [6] применил то, что теперь известно как программирование набора ответов, к проблеме конфигурации продукта . [4] В 1999 году термин «программирование множества ответов» впервые появился в книге «Парадигма логического программирования» как название сборника из двух статей. [4] Первая из этих статей определила использование решателей множества ответов для поиска как новую парадигму программирования . [7] В том же году Ниемеля также предложила «логические программы со стабильной семантикой модели» в качестве новой парадигмы. [8]

Язык программирования набора ответов AnsProlog

[ редактировать ]

Lparse — это название программы, которая изначально была создана как базовый инструмент (интерфейс) для smodels решателя набора ответов . Язык, который принимает Lparse, теперь обычно называют AnsProlog. [9] сокращение от «Программирование набора ответов в логике» . [10] Теперь он используется таким же образом во многих других решателях наборов ответов, включая assat , clasp , cmodels , gNt , nomore++ и pbmodels . ( dlv является исключением; синтаксис программ ASP, написанных для dlv, несколько иной.)

Программа AnsProlog состоит из правил вида

<head> :- <body> .

Символ :- ("if") отбрасывается, если <body> пусто; такие правила называются фактами . Самый простой вид правил Lparse — это правила с ограничениями .

Еще одна полезная конструкция, включенная в этот язык, — это выбор . Например, правило выбора

{p,q,r}.

говорит: выберите произвольно, какой из атомов включить в стабильную модель. Программа Lparse, содержащая это правило выбора и не содержащая других правил, имеет 8 стабильных моделей — произвольных подмножеств . Определение устойчивой модели было обобщено на программы с правилами выбора. [11] Правила выбора можно рассматривать также как сокращения пропозициональных формул в рамках семантики устойчивой модели . [12] Например, приведенное выше правило выбора можно рассматривать как сокращение для соединения трех формул « исключенного среднего »:

Язык Lparse позволяет нам также писать «ограниченные» правила выбора, такие как

1{p,q,r}2.

Это правило гласит: выберите хотя бы 1 из атомов , но не более 2. Смысл этого правила в семантике устойчивой модели представлен пропозициональной формулой

Границы мощности также можно использовать в тексте правила, например:

:- 2{p,q,r}.

Добавление этого ограничения в программу Lparse исключает стабильные модели, содержащие как минимум два атома. . Смысл этого правила можно представить пропозициональной формулой

Переменные (написанные с заглавной буквы, как в Прологе ) используются в Lparse для сокращения наборов правил, следующих одному и тому же шаблону, а также для сокращения наборов атомов в рамках одного и того же правила. Например, программа Lparse

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)

где начало и конец — арифметические выражения с постоянным знаком. Диапазон — это сокращенное обозначение, которое в основном используется для совместимого определения числовых доменов. Например, факт

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)}.

Создание стабильных моделей

[ редактировать ]

Чтобы найти стабильную модель программы Lparse, хранящуюся в файле ${filename} мы используем команду

% lparse ${filename} | smodels

Вариант 0 предписывает smodels найти все стабильные модели программы. Например, если файл 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

Примеры программ ASP

[ редактировать ]

Раскраска графа

[ редактировать ]

Ан - раскраска графика это функция такой, что для каждой пары смежных вершин . Мы хотели бы использовать ASP для поиска -раскраска заданного графа (или определение того, что его не существует).

Это можно сделать с помощью следующей программы Lparse:

c(1..n).                                           
1 {color(X,I) : c(I)} 1 :- v(X).             
:- color(X,I), color(Y,I), e(X,Y), c(I).

Строка 1 определяет числа быть цветами. Согласно правилу выбора в строке 2, уникальный цвет должно быть присвоено каждой вершине . Ограничение в строке 3 запрещает присваивать вершинам один и тот же цвет. и если есть ребро, соединяющее их.

Если мы объединим этот файл с определением , такой как

v(1..100). % 1,...,100 are vertices
e(1,55). % there is an edge from 1 to 55
. . .

и запустите на нем smodels с числовым значением указанный в командной строке, то атомы вида в выводе smodels будет представлять собой -раскраска .

Программа в этом примере иллюстрирует организацию «генерация и тестирование», которая часто встречается в простых программах ASP. Правило выбора описывает набор «потенциальных решений» — простое расширенное множество решений данной задачи поиска. За ним следует ограничение, которое исключает все возможные неприемлемые решения. Однако процесс поиска, используемый smodels и другими решателями наборов ответов, не основан на методе проб и ошибок .

Большой щелчок

[ редактировать ]

Кликой в ​​графе называется множество попарно смежных вершин. Следующая программа Lparse находит клику размером в заданном ориентированном графе или определяет, что его не существует:

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

Это еще один пример организации «генерация и тестирование». Правило выбора в строке 1 «генерирует» все множества, состоящие из вершины. Ограничение в строке 2 «отсеивает» множества, не являющиеся кликами.

гамильтонов цикл

[ редактировать ]

в Гамильтонов цикл ориентированном графе — это цикл , проходящий через каждую вершину графа ровно один раз. Следующая программа Lparse может использоваться для поиска гамильтонова цикла в заданном ориентированном графе, если он существует; мы предполагаем, что 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

[ редактировать ]

Рабочая группа по стандартизации ASP разработала стандартную спецификацию языка, названную ASP-Core-2. [14] к чему приближаются последние системы ASP. ASP-Core-2 — это эталонный язык для соревнований по программированию наборов ответов, в ходе которых решатели ASP периодически тестируются по ряду эталонных задач.

Сравнение реализаций

[ редактировать ]

Ранние системы, такие как smodels, использовали обратный поиск для поиска решений. По мере развития теории и практики использования логических решателей SAT на базе решателей SAT был построен ряд решателей ASP, включая ASSAT и Cmodels. Они преобразовали формулу ASP в предложения SAT, применили решатель SAT, а затем преобразовали решения обратно в форму ASP. Более поздние системы, такие как Clasp, используют гибридный подход, используя алгоритмы, управляемые конфликтами, вдохновленные SAT, без полного преобразования в форму булевой логики. Эти подходы позволяют значительно повысить производительность, часто на порядок, по сравнению с более ранними алгоритмами поиска с возвратом.

Проект Potassco выступает в качестве зонтика для многих из представленных ниже систем, включая clasp , системы заземления ( gringo ), инкрементальные системы ( iclingo ), средства решения ограничений ( clingcon ), язык действий для компиляторов ASP ( coala ), реализации распределенного интерфейса передачи сообщений ( класпар ) и многие другие.

Большинство систем поддерживают переменные, но только косвенно, путем принудительного заземления, используя систему заземления, такую ​​как Lparse или гринго в качестве внешнего интерфейса . Необходимость в обосновании может вызвать комбинаторный взрыв предложений; таким образом, системы, выполняющие заземление «на лету», могут иметь преимущество. [15]

Реализации программирования набора ответов, управляемые запросами, такие как система Galliwasp. [16] и с(КАСП) [17] вообще избегайте заземления, используя комбинацию разрешения и коиндукции .

Платформа Функции Механика
Имя ТЫ Лицензия Переменные Функциональные символы Явные множества Явные списки Дизъюнктивная (правила выбора) поддержка
ASPeRiX. Архивировано 8 ноября 2016 г. в Wayback Machine. Линукс лицензия GPL Да Нет оперативное заземление
ОЧЕНЬ Солярис Бесплатное ПО на базе SAT-солвера
Решатель набора ответов на застежку Linux , MacOS , Windows МОЯ лицензия Да, в Клинго Да Нет Нет Да инкрементный, основанный на SAT-решателе (нехороший, управляемый конфликтами)
Cмодели Линукс , Солярис лицензия GPL Требуется заземление Да инкрементный, основанный на SAT-решателе (нехороший, управляемый конфликтами)
дифф-SAT Linux , macOS , Windows ( виртуальная машина Java ) МОЯ лицензия Требуется заземление Да Вдохновлен SAT-решателем (бесполезно, вызвано конфликтом). Поддерживает решение вероятностных задач и выборку набора ответов.
ДЛВ Linux , MacOS , Windows [18] бесплатно для академического и некоммерческого образовательного использования, а также для некоммерческих организаций [18] Да Да Нет Нет Да несовместим с Lparse
ДЛВ-Комплекс Linux , MacOS , Windows лицензия GPL Да Да Да Да построен на основе DLV и не совместим с Lparse
ГнТ Линукс лицензия GPL Требуется заземление Да построен на основе моделей
нет больше++ Линукс лицензия GPL комбинированный литерал+основанный на правилах
Утконос Линукс , Солярис , Винда лицензия GPL распределенный, многопоточный nomore++, smodels
Pbмодель Линукс ? основанный на псевдобулевом решателе
Smodels Linux , MacOS , Windows лицензия GPL Требуется заземление Нет Нет Нет Нет
Smodels-cc. Архивировано 15 ноября 2015 г. в Wayback Machine. Линукс ? Требуется заземление на базе SAT-солвера; Смодели с оговорками о конфликте
Как дела Линукс ? на базе SAT-солвера

См. также

[ редактировать ]
  1. ^ Барал, Читта (2003). Представление знаний, рассуждения и декларативное решение проблем . Издательство Кембриджского университета. ISBN  978-0-521-81802-5 .
  2. ^ Гельфонд, Майкл (2008). «Наборы ответов» . Ин ван Хармелен, Франк; Лифшиц, Владимир; Портер, Брюс (ред.). Справочник по представлению знаний . Эльзевир. стр. 285–316. ISBN  978-0-08-055702-1 . в формате PDF. Архивировано 3 марта 2016 г. на Wayback Machine.
  3. ^ Димопулос, Ю.; Небель, Б. ; Кёлер, Дж. (1997). «Задачи планирования кодирования в немонотонных логических программах». В стали, Сэм; Алами, Рашид (ред.). Последние достижения в планировании ИИ: 4-я Европейская конференция по планированию, ECP'97, Тулуза, Франция, 24–26 сентября 1997 г., Материалы . Конспекты лекций по информатике: Конспекты лекций по искусственному интеллекту. Том. 1348. Спрингер. стр. 273–285. ISBN  978-3-540-63912-1 . как постскриптум
  4. ^ Jump up to: а б с Лифшиц, Владимир (13 июля 2008 г.). «Что такое программирование набора ответов?» (PDF) . Материалы 23-й Национальной конференции по искусственному интеллекту . 3 . АААИ Пресс: 1594–1597.
  5. ^ Субрахманиан, В.С.; Заниоло, К. (1995). «Связь стабильных моделей и областей планирования ИИ» . В Стерлинге, Леон (ред.). Логическое программирование: материалы двенадцатой международной конференции по логическому программированию . МТИ Пресс. стр. 233–247. ISBN  978-0-262-69177-2 . как постскриптум
  6. ^ Сойнинен, Т.; Ниемеля, И. (1998), Формализация знаний о конфигурации с использованием правил с выбором (Постскриптум) , Лаборатория обработки информации, Хельсинкский технологический университет
  7. ^ Марек, В.; Трушинский, М. (20 мая 1999 г.). «Стабильные модели и альтернативная парадигма логического программирования». В Апте, Кшиштоф Р. (ред.). Парадигма логического программирования: перспектива на 25 лет (PDF) . Спрингер. стр. 169–181. arXiv : cs/9809032 . ISBN  978-3-540-65463-6 .
  8. ^ Ниемеля, И. (ноябрь 1999 г.). «Логические программы со стабильной семантикой модели как парадигма программирования в ограничениях» (Postscript, gzipped) . Анналы математики и искусственного интеллекта . 25 (3/4): 241–273. дои : 10.1023/А:1018930122475 . S2CID   14465318 .
  9. ^ Крик, Том (2009). Супероптимизация: доказуемо оптимальная генерация кода с использованием программирования набора ответов (PDF) (доктор философии). Университет Бата. Досье 20352. Архивировано из оригинала (PDF) 4 марта 2016 г. Проверено 27 мая 2011 г.
  10. ^ Рохелио Давила. «АнсПролог, обзор» (PowerPoint) .
  11. ^ Ниемеля, И.; Саймонс, П.; Сойненен, Т. (2000). «Семантика стабильной модели правил ограничения веса» . В Гельфонде, Майкл; Леоне, Николь; Пфайфер, Джеральд (ред.). Логическое программирование и немонотонное рассуждение: 5-я Международная конференция, LPNMR '99, Эль-Пасо, Техас, США, 2–4 декабря 1999 г., материалы . Конспекты лекций по информатике: Конспекты лекций по искусственному интеллекту. Том. 1730. Спрингер. стр. 317–331. ISBN  978-3-540-66749-0 . как постскриптум
  12. ^ Феррарис, П.; Лифшиц, В. (январь 2005 г.). «Весовые ограничения как вложенные выражения». Теория и практика логического программирования . 5 (1–2): 45–74. arXiv : cs/0312045 . дои : 10.1017/S1471068403001923 . S2CID   5051610 . как постскриптум
  13. ^ «Разбор зависимостей» . Архивировано из оригинала 15 апреля 2015 г. Проверено 15 апреля 2015 г.
  14. ^ «Спецификация языка ввода ASP-Core-2» (PDF) . Проверено 14 мая 2018 г.
  15. ^ Лефевр, Клэр; Беатрикс, Кристофер; Стефан, Игорь; Гарсия, Лоран (май 2017 г.). «ASPeRiX, подход прямого связывания первого порядка для вычисления набора ответов *» . Теория и практика логического программирования . 17 (3): 266–310. arXiv : 1503.07717 . дои : 10.1017/S1471068416000569 . ISSN   1471-0684 . S2CID   2371655 .
  16. ^ Марпл, Кайл; Гупта, Гопал. (2012). «Galliwasp: целенаправленный решатель набора ответов». В Альберте, Эльвира (ред.). Синтез и преобразование логических программ, 22-й международный симпозиум, LOPSTR 2012, Левен, Бельгия, 18-20 сентября 2012 г., Пересмотренные избранные статьи . Спрингер. стр. 122–136.
  17. ^ Ариас, Дж.; Карро, М.; Салазар, Э.; Марпл, К.; Гупта, Г. (2018). «Программирование набора ответов с ограничениями без заземления» . Теория и практика логического программирования . 18 (3–4): 337–354. arXiv : 1804.11162 . дои : 10.1017/S1471068418000285 . S2CID   13754645 .
  18. ^ Jump up to: а б «Страница компании DLV System» . Компания DLVSYSTEM srl . Проверено 16 ноября 2011 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8695ca1400375325034203991dbcda84__1715192760
URL1:https://arc.ask3.ru/arc/aa/86/84/8695ca1400375325034203991dbcda84.html
Заголовок, (Title) документа по адресу, URL1:
Answer set programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)