Немонотонные логики

advertisement
Немонотонные логики
Срок выполнения: 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
Download