Решение логических задач
DESCRIPTION
Решение логических задач. Курсовая работа Агеева Алексея, гимн.№5, 2002 г. Задача №1. Нужно для 4 дежурных -Антипова, Климова, Маркова, и Лебедева-составить график дежурств с соблюдением следующих условий. Условия. - PowerPoint PPT PresentationTRANSCRIPT
Решение логических задачРешение логических задач
Курсовая работа Агеева Алексея, гимн.№5, 2002 г.
Курсовая работа Агеева Алексея, гимн.№5, 2002 г.
Задача №1Задача №1
Нужно для 4 дежурных -Антипова, Климова, Маркова, и Лебедева-составить график дежурств с соблюдением следующих условий.
УсловияУсловия
1. Если Лебедев не будет дежурить в понедельник, то в понедельник согласен дежурить Климов.
2. Если Климов не сможет дежурить ни в понедельник, ни в четверг , то Антипов будет дежурить в понедельник.
3. Если Марков не сможет дежурить в четверг , то Климов будет дежурить в среду.
4. Если Лебедев придет дежурить во вторник , то Климов не будет дежурить в понедельник.
5. Если Антипов не сможет дежурить в понедельник, то Марков не сможет дежурить во вторник.
НайтиНайти
Каким должен быть график
дежурств?
РешениеРешение
Введем обозначения: L-Лебедев, K-Климов,
А-Антипов,
М-Марков. Цифры означают :1-понедельник,
2- вторник,
3-среда,
4-четверг.
Согласно условиям задачи составим систему Согласно условиям задачи составим систему логических уравненийлогических уравнений
1. Если Лебедев не будет дежурить в понедельник, то в понедельник согласен дежурить Климов.
L1K1
Так как L1 K1 равносильно L1+K1
L1 K1 L1+K1
По закону двойного отрицания (L1 L1)
L1+K1 L1+K1 Сделав все преобразования получаем
L1 K1 L1+K1 L1+K1-читается как
Лебедев дежурит в понедельник или Климов дежурит в понедельник
По закону эквивалентности
1. М4K3 M4+K3 Читается так:
Марков дежурит в четверг или Климов дежурит в среду
2. L2 K3L2+ K3 Читается так:
Лебедев не дежурит во вторник или Климов не дежурит в понедельник
3. A1 M2 A1+ M2 Читается так: Антипов дежурит в понедельник или Марков не дежурит во вторник
2. Если Климов не сможет дежурить ни в понедельник, ни в четверг, то Антипов будет дежурить в понедельник.
(K 1 *K 4) A1
Так как (K 1 *K 4) A1 эквивалентно K 1 *K 4+ A1
(K 1 *K 4) A1K 1*K 4+ A1
То по закону де Моргана (K 1*K 4 K 1+K 4)
K 1*K 4+ A1 K 1+K 4 + A1
И по закону двойного отрицания (K 1+K 4 K 1+K 4)
сделав все преобразования мы получаем
(K 1 *K 4) A1 K 1+K 4 + A1 читается так: Климов будет дежурить в понедельник или в четверг или Антипов будет дежурить в понедельник
K 1+K 4 + A1 K 1+K 4 + A1
То обстоятельство,что один и тот же человек не может дежурить дважды и в один день могут дежурить два человека
зададим формулами
LL22*L*L11 0 0 KK11*L*L11 0 0 KK11*A*A11 0 0 KK44*M*M44 0 0 LL11*A*A11 0 0
Программа для решения данной задачи (Pascal)
program z1; uses crt;var m2,k1,k3,k4,l2,l1,m4,a1,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f:integer; label 1; begin clrscr; for m2:=0 to 1 do begin for k1:=0 to 1 do begin for k3:=0 to 1 do begin for k4:=0 to 1 do begin
for l2:=0 to 1 do begin for l1:=0 to 1 do begin for m4:=0 to 1 do begin for a1:=0 to 1 do begin f1:=(l1 or k1); f2:=(k1 or k4 or a1); f3:=(m4 or k3); f4:=(not l2 or not k1); f5:=(a1 or not m2); f6:=(not(k1 and k3)) and (not(k3 and k4)) and (not (k1 and k4));
f7:=not(l2 and l1); f8:=not(k1 and l1); f9:=not(k1 and a1); f10:=not(k4 and m4); f11:= not (l1 and a1); f:=f1 and f2 and f3 and f4 and f5 and f6 and f7 and f8 and f9 and
f10 and f11; if f=1 then goto 1; end; end; end; end; end;end;end; end;1:writeln('f k1 k3 k4 l1 l2 m2 m4 a1'); writeln(f,k1:3,k3:4,k4:4,l1:4,l2:4,m2:4,m4:4,a1:4);readlnend.
Запуск программы
Анализ ответа
f1 k1 k3 k4 l1 l2 m2 m4 a1
1 1 0 0 0 0 0 1 0
Запустив программу мы получили ответ:
K A L M12
34
++
++
- - ----
--
- --
-
Из ответа следует:1. Климов дежурит в понедельник 2. Марков дежурит в четверг
3. Лебедев дежурит в среду т.к из ответа следует что тон не дежурит в
понедельник не дежурит во вторник
4. Антипов дежурит во вторник