Немонотонные логики Срок выполнения: 18 ноября Answer set programming — вид логического программирования на основе семантики устойчивых моделей. В задании требуется написать программы, используя инструмент clingo, доступный по следующему адресу: http://potassco.sourceforge.net/. 1. (15 баллов) Запрограммируйте на ASP решение следующей задачи. Дан список студентов, которых требуется разбить на n команд для участия в соревновании. Размеры команд могут быть разными. Для каждого студента указан список студентов, с которыми он не прочь оказаться в одной команде. Требуется, чтобы все участники каждой команды были бы не прочь состоять в одной команде. При этом каждый студент должен попасть ровно в одну команду. Спрашивается, возможно ли разбить студентов на n команд в соответствии с заданными условиями. Продемонстрируйте работу программы на (нетривиальном) списке, содержащем не менее семи студентов, которых можно разбить на три команды. В ответе приведите код программы и распечатку одного разбиения, найденного программой. Укажите общее количество найденных решений. Программа: match(X, X) :- student(X). match(X, Y) :- student(X), student(Y), likes(X, Y), likes(Y, X). #const n = 3. 1 { team(X, 1..n) } 1 :- student(X). :- team(X, T), team(Y, T), not match(X, Y). 1 :- T = 1..n, {team(_, T)} 0. #hide. #show team/2. Пример: student(1..7). likes(1, likes(2, likes(3, likes(4, likes(5, likes(6, likes(7, 2; 1; 1; 1; 2; 3; 3; 4; 4; 4; 3; 3; 1; 5; 6; 6; 6). 6; 6; 6). 6). 5; 4; 4; 4; 5; 7). 7). 7). 7). Решение: team(7,2) team(6,1) team(5,2) team(4,3) team(3,1) team(2,3) team(1,3) Найдено 18 решений. 2. (40 баллов) Даны следующие утверждения: i Взрослые обычно работают. ii Студенты обычно взрослые. iii Студенты обычно не работают. iv Маша — студент. v Петя — взрослый. Что можно сказать о Маше и Пете? Ответьте на вопрос, используя (a) очерчивание; Решение: Будем использовать три предиката ненормальности: Abaw (x), Absa (x) и Absw (x). Запишем условия: i ii iii iv v Adult(x) & ¬Abaw (x) → W orks(x) Student(x) & ¬Absa (x) → Adult(x) Student(x) & ¬Absw (x) → ¬W orks(x) Student(M ) Adult(P ) 2 Интерпретации, минимизирующие предикаты Ab: 1. Маша — студентка, но работает: • I1 (Abaw ) = ∅ • I1 (Absa ) = ∅ • I1 (Absw ) = {M } • I1 (Adult) = {M, P } • I1 (Student) = {M } • I1 (W orks) = {M, P } 2. Маша — студентка, но не взрослая: • I2 (Abaw ) = ∅ • I2 (Absa ) = {M } • I2 (Absw ) = ∅ • I2 (Adult) = {P } • I2 (Student) = {M } • I2 (W orks) = {P } 3. Маша — взрослая, но не работает: • I3 (Abaw ) = {M } • I3 (Absa ) = ∅ • I3 (Absw ) = ∅ • I3 (Adult) = {M, P } • I3 (Student) = {M } • I3 (W orks) = {P } Заметим, что не существует интерпретации I, при которой I(Abaw ) = I(Absa ) = I(Absw ) = ∅: в таком случае, Маша должна была бы работать и не работать одновременно. Следовательно, приведенные выше три интерпретации, действительно, минимизируют «ненормальность». Кроме того, в такой минимальной интерпретации Петя не может быть студентом — иначе он окажется «ненормальным» в смысле Abaw или в смысле Absw . Итак, про Петю можно сказать, что он взрослый, не студент и работает: Adult(P ) & ¬Student(P ) & W orks(P ), 3 а про Машу — что она студентка, а также что она, возможно, работает, но только если она взрослая: Student(M ), W orks(M ) → Adult(M ). (b) логику умолчания; Решение: Запишем условия: F: • Student(M ) • Adult(P ) D (нормальные правила умолчания): • Adult(x) ⇒ W orks(x) • Student(x) ⇒ Adult(x) • Student(x) ⇒ ¬W orks(x) У hF, Di есть два расширения: i. Student(M ), Adult(P ), Adult(M ), W orks(P ), W orks(M ) ii. Student(M ), Adult(P ), Adult(M ), W orks(P ), ¬W orks(M ) Скептический подход позволяет нам заключить, что Маша — взрослая студентка, а Петя — взрослый и работает. (c) ASP. Напишите программу на ASP. В ответе приведите код программы и распечатку ее вывода. Программа: works(X) :- adult(X), not -works(X). adult(X) :- student(X), not -adult(X). -works(X) :- student(X), not works(X). student(m). adult(p). Решение: Answer: 1 student(m) adult(p) adult(m) works(m) works(p) Answer: 2 student(m) adult(p) adult(m) -works(m) works(p) SATISFIABLE Models : 2 4