Решение логических задач Курсовая работа Агеева Алексея, гимн.5, 2002 г.
Задача 1 4 Нужно для 4 дежурных - Антипова, Климова, Маркова, и Лебедева-составить график дежурств с соблюдением следующих условий.
Условия 4 1. Если Лебедев не будет дежурить в понедельник, то в понедельник согласен дежурить Климов Если Климов не сможет дежурить ни в понедельник, ни в четверг, то Антипов будет дежурить в понедельник Если Марков не сможет дежурить в четверг, то Климов будет дежурить в среду Если Лебедев придет дежурить во вторник, то Климов не будет дежурить в понедельник Если Антипов не сможет дежурить в понедельник, то Марков не сможет дежурить во вторник.
Найти 4 Каким должен быть график дежурств?
Решение 4 Введем обозначения: L-Лебедев, K-Климов, А-Антипов, М-Марков. 4 Цифры означают :1-понедельник, 2- вторник, 3-среда, 4-четверг.
Согласно условиям задачи составим систему логических уравнений 4 1. Если Лебедев не будет дежурить в понедельник, то в понедельник согласен дежурить Климов. L 1 K 1 Так как L 1 K 1 равносильно L 1 +K 1 L 1 K 1 L 1 +K 1 По закону двойного отрицания (L 1 L 1 ) L 1 +K 1 Сделав все преобразования получаем L 1 K 1 L 1 +K 1 L 1 +K 1 -читается как Лебедев дежурит в понедельник или Климов дежурит в понедельник
По закону эквивалентности 1. М 4 K 3 M 4 +K 3 Читается так: Марков дежурит в четверг или Климов дежурит в среду 2. L 2 K 3 L 2 + K 3 Читается так: Лебедев не дежурит во вторник или Климов не дежурит в понедельник 3. A 1 M 2 A 1 + M 2 Читается так: Антипов дежурит в понедельник или Марков не дежурит во вторник
4 2. Если Климов не сможет дежурить ни в понедельник, ни в четверг, то Антипов будет дежурить в понедельник. (K 1 *K 4 ) A 1 Так как (K 1 *K 4 ) A 1 эквивалентно K 1 *K 4 + A 1 (K 1 *K 4 ) A 1 K 1 *K 4 + A 1 То по закону де Моргана (K 1 *K 4 K 1 +K 4 ) K 1 *K 4 + A 1 K 1 +K 4 + A 1 И по закону двойного отрицания (K 1 +K 4 K 1 +K 4 ) сделав все преобразования мы получаем (K 1 *K 4 ) A 1 K 1 +K 4 + A 1 читается так: Климов будет дежурить в понедельник или в четверг или Антипов будет дежурить в понедельник K 1 +K 4 + A 1
То обстоятельство,что один и тот же человек не может дежурить дважды и в один день могут дежурить два человека зададим формулами 4 L 2 *L K 1 *L K 1 *A K 4 *M L 1 *A 1 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); readln end. Запуск программы
Анализ ответа f1 k1 k3 k4 l1 l2 m2 m4 a Запустив программу мы получили ответ: KALM Из ответа следует: 1. Климов дежурит в понедельник 2. Марков дежурит в четверг 3. Лебедев дежурит в среду т.к из ответа следует что тон не дежурит в понедельник не дежурит во вторник 4. Антипов дежурит во вторник