Информатика в задачах, примерах, алгоритмах
.pdf
8. Логика
Еще одно выражение получаем из того соображения, что сосуд
либо финикийский, либо греческий: Lf Lg= 1.
Последнее выражение получаем из высказываний, что сосуд
изготовлен либо в III, либо в IV, либо в V веке.
(L3 &←L4 & ←L5) +( ←L3 & L4 & L5←) (+ L3← & L4←& L5) 1. = Если объединить все пять высказываний с помощью логиче-
ского умножения, то полученное составное высказывание будет иметь значение “истинно”.
Возможный вариант программы.
QÂasic
CLS
FOR Lg = -1 TO 0
FOR Lf = -1 TO 0
FOR L3 = -1 TO 0
FOR L4 = -1 TO 0
FOR L5 = -1 TO 0
La = Lg XOR L5
Lb = Lf XOR L3
Lc = NOT Lg XOR L4
Ld = (L3 AND NOT L4 AND NOT L5) OR (NOT L3 _
AND L4 AND NOT L5) OR_(NOT L3 AND NOT L4 AND L5) LE = Lg XOR Lf
L = La AND Lb AND Lc AND Ld AND Le IF L THEN
IF Lg THEN PRINT “сосуд изготовлен в Греции” IF Lf THEN PRINT “сосуд изготовлен в Финикии” IF L3 THEN PRINT “сосуд изготовлен в III веке” IF L4 THEN PRINT “сосуд изготовлен в IV веке” IF L5 THEN PRINT “сосуд изготовлен в V веке” END IF
NEXT L5, L4, L3, Lf, Lg
Ответ: Сосуд изготовлен в Финикии в V веке.
101
Информатика в задачах, примерах, алгоритмах
6.Четверо ребят — Алеша, Боря, Ваня, Гриша — соревновались в беге. После этого на вопрос о распределении мест они ответили так:
I. Алеша: Я не был ни первым, ни последним.
II. Ваня: Я был первым.
III. Боря: Я не был последним.
IV. Гриша: Я был последним.
Три из этих ответов правильные, а один неверный. Как распределились места, если каждый участник был единственным на своем месте?
Для решения задачи необходимо составить характеристическое уравнение.
Введем обозначения:
a1 — Алеша занял первое место;
a2 — Алеша занял второе место;
a3 — Алеша занял третье место;
a4 — Алеша занял четвертое место;
b1 — Ваня занял первое место;
b2 — Ваня занял второе место;
b3 — Ваня занял третье место;
b4 — Ваня занял четвертое место;
c1 — Борис занял первое место;
c2 — Борис занял второе место;
c3 — Борис занял третье место;
c4 — Борис занял четвертое место;
g1 — Григорий занял первое место;
g2 — Григорий занял второе место;
g3 — Григорий занял третье место;
g4 — Григорий занял четвертое место.
Тогда высказывания ребят запишутся следующими логическими выражениями:
L1 = ←a1 & ←a4 — высказывание Алексея;
L2 = b1 — высказывание Ивана;
L3 = ←c4 — высказывание Бориса;
L4 = g4 — высказывание Григория.
Условие, что из четырех логических выражений только одно ложно, запишется следующим образом:
L 21 = (←L1& L 2& L3& L 4) +(L1& ←L 2& L3& L 4) + +(L1& L 2& ←L3& L 4) +(L1& L 2& L3& ←L 4).
102
8. Логика
Условие, что каждый из участников занял какое-то одно из че- тырех мест, запишем так:
L22 |
= a1 + a2 + a3 + a4 |
— Алексей занял какое-то |
|
|
место с 1-го по 4-е; |
L23 |
= b1 + b2 + b3 + b4 |
— Иван занял какое-то место |
|
|
ñ 1-ãî ïî 4-å; |
L24 |
= c1 + c2 + c3 + c4 |
— Борис занял какое-то место |
|
|
ñ 1-ãî ïî 4-å; |
L25 |
= g1 + g2 + g3 + g4 |
— Гриша занял какое-то место |
|
|
ñ 1-ãî ïî 4-å. |
Условие, что каждый участник был единственным на своем месте, запишется так:
L5 = a1 (a2+ a3+ a4+ b1+ c1+ g1).
Это означает, что если Алексей был первым, то он не мог быть ни вторым, ни третьим, ни четвертым. Иван, Борис и Григорий тоже не могли быть первыми (операция “ИСКЛЮЧАЮЩЕЕ ИЛИ”).
Аналогичные условия для второго, третьего и четвертого мест
Алексея. |
|
|
(a1+ |
|
c2+ g2); |
|
L6 = a2 |
a3+ a4+ b2+ |
|||||
L7 = a3 |
|
(a2+ |
a1+ a4+ b3+ |
c3+ g3); |
||
L8 = a4 |
|
(a2+ |
a3+ a1+ b4+ c4+ g4). |
|||
Аналогичные четыре уравнения для Ивана: |
||||||
L9 = b1 |
(b2+ |
b3+ b4+ a1+ |
c1+ |
g1) |
||
L10 |
= b2 |
(b1+ |
b3+ b4+ a2+ c2+ |
g2) |
||
L11 = b3 |
(b2+ |
b1+ b4+ a3+ |
c3+ |
g3) |
||
L12 |
= b4 |
(b2+ |
b3+ b1+ a4+ c4+ g4) |
|||
Еще по четыре условия для Бориса и Григория. |
||||||
L13 |
= c1 |
(c2+ |
c3+ c4+ a1+ |
b1+ |
g1) |
|
L14 |
= c2 |
|
(c1+ |
c3+ c4+ a2+ |
b2+ |
g2) |
L15 |
= c3 |
|
(c2+ |
c1+ c4+ a3+ |
b3+ |
g3) |
L16 |
= c4 |
(c2+ |
c3+ c1+ a4+ |
b4+ |
g4) |
|
L17 |
= g1 |
(g2+ |
g3+ g4+ a1+ |
b1+ |
c1) |
|
L18 |
= g2 |
(g1+ |
g3+ g4+ a2+ |
b2+ |
c2) |
|
L19 = g3 |
(g2+ |
g1+ g4+ a3+ |
b3+ |
c3) |
||
L20 = g4 |
(g2+ |
g3+ g1+ a4+ |
b4+ |
c4) |
||
Объединив все полученные логические выражения в составное логическое выражение посредством операции логического умножения, мы получим такое логическое выражение, которое будет иметь значение “истинно” тогда и только тогда, когда входящие в
103
Информатика в задачах, примерах, алгоритмах
него логические выражения будут иметь значение “истинно”. Обозначим его логической переменной LL. Следовательно,
LL= L5 & L6 & L7 & L8 & L9 & L10 & L11 & L12 & L13 &
&L14 & L15 & L16 & L17 & L18 & L19 & L20 & L21 & L22 & L23 &
&L24 & L25.
Заметим, что логические выражения L1, L2, L3, L4 отсутствуют, так как они вошли в логическое выражение L21.
Перед тем, как писать программу, напомним следующее:
—логическая величина принимает только два значения: “true” — в Бейсике “-1” и “false” — в Бейсике “0”;
—логическое умножение (&) — это оператор AND;
—логическое сложение (+) — это оператор OR;
—исключающее или ( ) — это оператор XOR
—логическое отрицание (←)— это оператор NOT
Чтобы решить полученное характеристическое уравнение, нам нужно перебрать значения логических переменных (a1-a4, b1-b4, c1-c4, g1-g4), чтобы найти такое их сочетание, при котором полу- чим LL= –1, и проанализировать значение этих логических переменных.
Возможный вариант программы.
QBasic
CLS ' чистим экран
FOR a1 = -1 TO 0: FOR a2 = -1 TO 0: FOR a3 = -1 TO 0 FOR a4 = -1 TO 0
FOR b1 = -1 TO 0: FOR b2 = -1 TO 0: FOR b3 = -1 TO 0 FOR b4 = -1 TO 0
FOR c1 = -1 TO 0: FOR c2 = -1 TO 0: FOR c3 = -1 TO 0
FOR c4 = -1 |
TO 0 |
||
FOR g1 |
= -1 |
TO 0: FOR g2 = -1 TO 0: FOR g3 = -1 TO 0 |
|
FOR g4 |
= -1 |
TO 0 |
|
L1 |
= NOT a1 AND NOT a4 ' Алексей |
||
L2 |
= b1 ' Èâàí |
||
L3=NOT c4 ' Борис |
|||
L4 |
= g4 |
|
' Григорий |
104
|
|
8. Логика |
|
|
|
|
|
|
L22 |
= a1 OR a2 OR a3 OR a4 |
'Алексей занял какое-то |
|
|
'место с 1-го по 4-ое |
L23 |
= b1 OR b2 OR b3 OR b4 |
'Иван занял какое-то |
|
|
'место с 1-го по 4-ое |
L24 |
= c1 OR c2 OR c3 OR c4 |
'Борис занял какое-то |
|
|
'место с 1-го по 4-ое |
L25 |
= g1 OR g2 OR g3 OR g4 |
'Гриша занял какое-то |
|
|
'место с 1-го по 4-ое |
'условие, что из четырех логических выражений одно ложно |
||
L21 = (NOT L1 AND L2 AND L3 AND L4) OR (L1 AND NOT L2 AND L3 AND L4) OR_ (L1 AND L2 AND NOT L3 AND L4) OR (L1 AND L2 AND L3 AND NOT L4)
'условие, что если Алексей занял первое место, то он не занял 'никакое другое, и больше никто из участников не мог 'занять 'первое место
L5 = a1 XOR (a2 OR a3 OR a4 OR b1 OR c1 OR g1)
'условие, аналогичное предыдущему, только относительно 'второго места
L6 = a2 XOR (a1 OR a3 OR a4 OR b2 OR c2 OR g2)
'условие, аналогичное предыдущему, только относительно 'третьего места
L7 = a3 XOR (a2 OR a1 OR a4 OR b3 OR c3 OR g3)
'условие, аналогичное предыдущему, только относительно 'четвертого места
L8 = a4 XOR (a2 OR a3 OR a1 OR b4 OR c4 OR g4)
'условие, что если Иван занял первое место, то он не занял 'никакое другое, и больше никто из участников не мог 'занять первое место
L9 = b1 XOR (b2 OR b3 OR b4 OR a1 OR c1 OR g1)
'условие, аналогичное предыдущему, только относительно 'второго места
L10 = b2 XOR (b1 OR b3 OR b4 OR a2 OR c2 OR g2)
'условие, аналогичное предыдущему, только относительно 'третьего места
L11 = b3 XOR (b2 OR b1 OR b4 OR a3 OR c3 OR g3)
'условие, аналогичное предыдущему, только относительно 'четвертого места
105
Информатика в задачах, примерах, алгоритмах
L12 = b4 XOR (b2 OR b3 OR b1 OR a4 OR c4 OR g4)
'условие, что если Борис занял первое место, то он не занял 'никакое другое, и больше никто из участников не мог занять 'первое место
L13 = c1 XOR (c2 OR c3 OR c4 OR a1 OR b1 OR g1)
'условие, аналогичное предыдущему, только относительно 'второго места
L14 = c2 XOR (c1 OR c3 OR c4 OR a2 OR b2 OR g2)
'условие, аналогичное предыдущему, только относительно 'третьего места
L15 = c3 XOR (c2 OR c1 OR c4 OR a3 OR b3 OR g3)
'условие, аналогичное предыдущему, только относительно 'четвертого места
L16 = c4 XOR (c2 OR c3 OR c1 OR a4 OR b4 OR g4)
'условие, что если Гриша занял первое место, то он не занял 'никакое другое, и больше никто из участников не мог занять 'первое место
L17 = g1 XOR (g2 OR g3 OR g4 OR a1 OR b1 OR c1)
'условие, аналогичное предыдущему, только относительно 'второго места
L18 = g2 XOR (g1 OR g3 OR g4 OR a2 OR b2 OR c2)
'условие, аналогичное предыдущему, только относительно 'третьего места
L19 = g3 XOR (g2 OR g1 OR g4 OR a3 OR b3 OR c3)
'условие, аналогичное предыдущему, только относительно 'четвертого места
L20 = g4 XOR (g2 OR g3 OR g1 OR a4 OR b4 OR c4)
'Характеристическое уравнение — оно истинно, когда 'истинны все входящие в него логические выражения
LL = L5 AND L6 AND L7 AND L8 AND L9 AND L10 AND L11 AND L12 AND L13 AND L14 AND L15 AND L16 AND L17 AND L18 AND L19 AND L20 AND L21 AND L22 AND L23 AND L24 AND L25
IF LL THEN 'Если LL истинно, то анализируем 'логические величины
PRINT 'разделяем результаты пустой строкой
IF a1 THEN PRINT “Алеша-первый” IF a2 THEN PRINT “Алеша-второй”
106
8. Логика
IF a3 THEN PRINT “Алеша-третий”
IF a4 THEN PRINT “Алеша-четвертый” IF b1 THEN PRINT “Ваня-первый”
IF b2 THEN PRINT “Ваня-второй” IF b3 THEN PRINT “Ваня-третий”
IF b4 THEN PRINT “Ваня-четвертый” IF c1 THEN PRINT “Боря-первый” IF c2 THEN PRINT “Боря-второй”
IF c3 THEN PRINT “Боря-третий”
IF c4 THEN PRINT “Боря-четвертый” IF g1 THEN PRINT “Григорий-первый” IF g2 THEN PRINT “Григорий-второй” IF g3 THEN PRINT “Григорий-третий”
IF g4 THEN PRINT “Григорий-четвертый” END IF
NEXT: NEXT: NEXT: NEXT: NEXT: NEXT: NEXT: NEXT NEXT
NEXT: NEXT: NEXT: NEXT: NEXT: NEXT: NEXT END
Ответ:
1.Боря первый, Ваня второй, Алеша третий, Григорий четвертый.
2.Боря первый, Алеша второй, Ваня третий, Григорий чет-
вертый.
Программа нашла два ответа, которые не противоречат условию задачи. Для получения единственного ответа нужно дополнительное условие, но это не значит, что задача некорректна.
8.2. Основные законы логики
1. |
Закон двойного отри- |
←( ←A) =À |
|
|
цания |
|
|
|
|
|
|
2. |
|
←0 =1; 1 = 0 |
|
3. |
Закон идемпотентно- |
À + À = À; À & A = A |
|
сти (равносильности) |
|
||
|
|
|
|
4. |
Закон исключения |
À + 0 = À; À + 1 = 1 |
A & 1 = A; |
констант |
A & 0 = 0 |
||
|
|
|
|
107
Информатика в задачах, примерах, алгоритмах
5. |
|
A + ¬A =1 |
A & ¬A =0 |
6. |
Переместительный |
A + B=B + A |
A & B=B & A |
(коммутативный) |
|||
|
|
|
|
7. |
Сочетательный (ассо- |
(À + Â) + Ñ = À + (Â + Ñ) |
A & (B + C) = |
циативный) |
= A & B + A & C |
||
|
|
|
|
8. |
Распределительный |
(À & B) & C = |
A + B & C = |
|
|
||
|
(дистрибутивный) |
= A & (B & C) |
= (A + B) & (A + C) |
|
|
|
|
9. |
Закон ислючения |
A & B + A & ¬B =A |
(A + B) & ( A + ¬B) = A |
|
(склеивания) |
|
|
|
|
¬(A +B) = ¬A & ¬B; |
|
10. |
Законы де Моргана |
¬(A & B) = ¬A + ¬B; |
|
¬( ¬A + ¬B) =A & B; |
|
||
|
|
|
|
|
|
¬A & B =A +B |
|
|
|
|
|
11. |
Законы поглощения |
A + A & B = A; |
|
A & (A + B) = A |
|
||
|
|
|
|
|
|
|
|
12. |
|
A → B= ¬ A+ B |
|
|
|
|
|
13. |
|
A B= A & B+ ¬ A & B= |
|
|
= (¬A +B) & (A +B) |
|
|
|
|
|
|
14. |
|
A B= A &¬ B+ ¬ A & B |
|
|
|
|
|
Задачи
272.Кто из студентов A, B, C, D играет, а кто не играет в шахматы, если известно:
если А или В играет, то С не играет; если В не играет, то играют С и D; C играет.
Ответ: C и D играют, А и В не играют.
273.Вернувшись домой, Мегрэ позвонил на набережную Орфевр.
—Говорит Мегрэ. Есть новости?
—Да, шеф. Поступили сообщения от инспекторов. Торранс установил, что если Франсуа был пьян, то либо Этьен убийца, либо Франсуа лжет. Жульен считает, что или Этьен убийца, или Франсуа не был пьян и убийство произошло после полуночи. Инспектор Люка просил передать вам, что если убийство произошло после полуночи, то либо Этьен убийца, либо Франсуа лжет. Затем звонила ...
—Все. Спасибо. Этого достаточно.
108
8. Логика
Комиссар положил трубку. Он знал, что трезвый Франсуа никогда не лжет. Теперь он знал все. Что знал Мегрэ?
Ответ: Этьен убийца.
274. Семья состоит из пяти человек: Алексея, Веры, Даши, Глеба и Евгении. Когда семья смотрит телевизор, то соблюдаются следующие условия:
I. Смотрят либо Даша, либо Евгения, либо обе вместе. II. Смотрят либо Глеб, либо Вера, но не вместе.
III.Даша и Глеб либо смотрят вместе, либо вместе не смотрят.
IV.Если телевизор смотрит Алексей, то смотрит и Вера.
V.Если телевизор смотрит Евгения, то смотрят Алексей и Даша.
Кто смотрит телевизор?
Ответ: телевизор смотрят Глеб и Даша.
275. В соревнованиях по плаванию участвуют Наташа, Вера, Света и Люда. Болельщики высказали следующие предположения:
—первой будет Наташа, второй — Вера;
—первой будет Света, третьей — Люда;
—второй будет Света, третьей — Вера.
По окончании соревнования выяснилось, что каждый из болельщиков в одном из двух своих предположений оказался прав, в другом — не прав. Кто из девушек оказался призером и какие места они заняли?
Ответ: На первом месте — Наташа, на втором — Света, на третьем — Люда.
276. В соревнованиях по гимнастике участвуют Алла, Валя, Сима и Даша. Болельщики высказали предположение о возможных победителях:
—первой будет Сима, второй — Валя;
—второй будет Сима, третьей — Даша;
—второй будет Алла, четвертой — Даша.
По окончании соревнования выяснилось, что в каждом предположении одно из высказываний истинно, другое — ложно. Какое место заняла каждая из девушек, если все они оказались на разных местах?
Ответ: На первом месте — Сима, на втором — Алла, на третьем — Даша, на четвертом — Валя.
109
Информатика в задачах, примерах, алгоритмах
277. Брауну, Джонсу и Смиту предъявлено обвинение в ограблении банка. Похитители скрылись на поджидавшем их автомобиле. На следствии Браун показал, что преступники скрылись на синем “Бьюике”, Джонс сказал, что это был “Форд-мустанг” и ни в коем случае не синий. Смит заявил, что это была не синяя “Тойота”. Стало известно, что, желая запутать следствие, каждый из них указал правильно либо только марку машины, либо ее цвет. Какого цвета и какой марки был автомобиль?
Ответ: Не синий “Бьюик”.
278. Четыре ученика: Витя, Петя, Юра и Сережа — заняли в соревнованиях первые четыре места. На вопрос, какие места они заняли, были даны ответы:
—Петя на втором месте, Витя на третьем;
—Сергей на втором, Петя на первом;
—Юра на втором, Витя на четвертом.
Указать, кто какое место занял, если в каждом ответе правильна лишь одна часть.
Ответ: На первом месте — Петя, на втором — Юра, на третьем — Витя, на четвертом — Сергей.
279. Четыре приятеля — Андрей, Борис, Виктор, Григорий живут — в разных комнатах общежития. На вопрос, где они живут, трое дали по два ответа, один из которых истинный, другой — ложный.
I.Андрей: — Я живу в первой комнате, Григорий — во второй;
II.Борис: — Я живу в третьей комнате, Андрей — во второй;
III.Виктор: — Я живу во второй комнате, Борис — в четвертой.
Кто в какой комнате живет?
Ответ: Андрей — в первой комнате, Виктор — во второй, Борис — в третьей, Григорий — в четвертой.
280. В финал шахматного турнира вышли Аркадий, Володя, Саша. Перед финалом болельщики высказали предположения:
I. Первое место займет Аркадий; II. Саша не будет последним;
III. Володя не будет на первом месте.
110
