Научная статья на тему 'Решение логических задач'

Решение логических задач Текст научной статьи по специальности «Математика»

CC BY
727
56
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЛОГИКА / БУЛЕВА АЛГЕБРА

Аннотация научной статьи по математике, автор научной работы — Есипов Александр Сергеевич

В статье рассмотрены решения трех логических задач с использованием законов и правил преобразования формул булевой алгебры. Дан краткий обзор истории развития логики.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Решение логических задач»

РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ

При решении логических задач наиболее интересен и важен этап формализации высказываний. На этом этапе желательно по возможности не вводить лишних переменных, которые будут увеличивать длину наборов значений аргументов и усложнять формулы функций. Например, каждую пару высказываний: тепло и холодно, большой и маленький остров, острый и тупой угол и тому подобных - можно закодировать одной переменной и ее инверсией.

В условии задачи может быть задано или получено в процессе решения несколько простых или сложных высказываний/1, /2, ..., /, истинность которых известна. В этом случае достаточно взять конъюнкцию этих высказываний ¥ = /1 • /2 • ... • / и определить набор простых высказываний, на котором эта конъюнкция принимает значение «истина». Этот набор и будет решением задачи. Возможно, что такой набор будет не один, что укажет на наличие нескольких решений. Возможен также вариант отсутствия решения.

Платон (427-347 гг. до н. э.) и Сократ (ок. 469 - 399 гг. до н. э.)

Создателем логики считают Аристотеля. Но элементы логики просматриваются уже в сочинениях Платона, созданных задолго до Аристотеля. Так главный герой «Диалогов» Платона его учитель Сократ в своих беседах и рассуждениях выстраивает стройные и логически обоснованные последовательности аргументаций, подводя слушателей к желаемому выводу. От этих логических построений до формальной логики оставался один шаг, который и сделал Аристотель.

Может быть задано в постановке задачи или получено при ее решении несколько высказываний, о которых известно, что из них только некоторое количество истинно. В этом случае организуется «перебор вариантов». Например, заданы высказывания а и Ь, о которых известно, что из них только одно истинно. В этом случае записывают следующую функцию: ¥ = а■ Ь Vа ■ Ь.

Если заданы высказывания а, Ь, с, й, из которых только одно истинно, то это соответствует следующей формуле:

¥ = а ■ Ь ■ с ■ й V а ■ Ь ■ с ■ й V V а ■ Ь ■ с ■ й V а ■ Ь ■ с ■ й .

Если сказано, что из этих высказываний истинны лишь какие-то два, то имеем следующую формулу: ¥ = а ■ Ь ■ с ■ й V а ■ Ь ■ с ■ й V а ■ Ь ■ с ■ й V V а ■ Ь ■ с ■ й V а ■ Ь ■ с ■ й V а ■ Ь ■ с ■ й .

При решении логических задач без использования компьютера приходится выполнять тождественные преобразования сложных логических формул. При этом используются законы и правила преобразования формул булевой алгебры. Напомним их.

1. Переместительные законы (коммутативность) х ■ у = у ■ X,

X V у = у V X.

2. Сочетательные законы (ассоциативность) х ■ (у ■ г) = (х ■ у) ■ г,

х V (у V г) = (х V у) V г.

3. Распределительные законы (дистрибутивность)

х ■ (у V г) = х • у V х • г, х V у ■ г = (х V у)(х V г).

4. Законы тавтологии (идемпотентность)

х ■ х = х, х V х = х.

5. Законы доминирования

х ■ 1 = х, х V 0 = х, х ■ 0 = 0, х V 1 = 1.

6. Законы исключенного третьего

х ■ х = 0 х V х = 1.

7. Законы де Моргана

х ■ у = х V у, х V у = х ■ у .

8. Законы склеивания

х ■ у V х ■ у = х, (х V у)(х V у) = х .

9. Законы поглощения

х V х ■ у = х , х ■ (х V у) = х .

10. Закон двойного отрицания

х = х.

Показания свидетелей правонарушения значительно различались. Первый свидетель сказал, что преступник был брюнет с усами. Второй заявил, что это был блондин без усов. Третий свидетель подтвердил, что преступник был блондином, но без портфеля. Четвертый был уверен, что преступник был шатеном с портфелем.

В действительности оказалось, что каждый из свидетелей ошибся в одном из своих показаний. Каким быт правонарушитель?

Решение:

Введем обозначения: а = «С усами», b = «Брюнет», с = «Блондин», d = «С портфелем» и e =«Шатен».

Выпишем высказывания свидетелей пока без учета их ошибок.

Первый свидетель: «Ь И а», b • а.

Второй свидетель: «с И НЕ а», с • а .

Третий свидетель: «с И НЕ d», с • d .

Четвертый свидетель: «е И d», e • d.

С учетом того, что каждый из свидетелей ошибся в одном из своих показаний, запишем их показания следующими формулами:

/1 = а • b v а • b = а Xor b.

/2 = с • а v с • а = с Xor Not а.

/3 = с • d v с • d = с Xor Not d.

/4 = e • d v e • d = e Xor d.

Ограничение на то, что правонарушитель может быть одновременно только или блондином, или брюнетом, или шатеном записывается следующей формулой:

/5 = b • с • e v b • с • e v b • с • e.

Логическое произведение всех пяти функций и упрощение полученной формулы приводят к решению задачи:

/ = • /2 • /з • /4 • f5 = а • b • с • d • e.

Функция / принимает значение 1 (истина) на наборе 10110, то есть правонарушитель блондин с усами и с портфелем (листинг 1, рисунок 1).

Аристотель (384-322 гг. до н. э.)

Величайший мудрец ревности, ученик Платона и учитель Александра Македонского Аристотель обобщил все сделанное до него в построении суждений и умозаключений, систематизировал правила рассуждений и описал их в своем знаменитом труде, который назвал «Органон» (метод). Важнейшая составляющая «Органона» - это «Первая аналитика», в которой была изложена силлогистика (от греч. - выводящий умозаключение) - учение о логической дедукции.

Есипов А.С.

Листинг 1. Приметы правонарушителя Private Sub Form Load()

Show

Print "a "; "b

"; "d

Рисунок 1.

For a = 0 To 1: For b = 0 To 1: For c = 0 To 1 For d = 0 To 1: For e = 0 To 1 f1 = a Xor b f2 = Not a Xor c f3 = Not d Xor c f4 = d Xor e

f5 = (b And Not c And Not e) Or (Not b And c And Not e) Or (Not b And Not c And e) f = f1 And f2 And f3 And f4 And f5 If f <> 0 Then Print a; b; c; d; e, f Next e, d, c, b, a End Sub

Напомним, что некоторые задачи могут иметь неоднозначное решение. В этом случае итоговая функция может быть истинна не на одном наборе значений аргументов, код функции содержит несколько единиц. Возможен вариант, когда решения задачи нет - в коде функции нет единиц.

Постановка следующих двух задач взята из демонстрационных задач ЕГЭ. Обе задачи легко формализуются, имеют по одному решению. Но вторая задача связана с громоздкими формулами, большими затратами времени на их преобразования, и при дефиците времени необходимо применение компьютера.

Готфрид Лейбниц (1646-1716)

Испанец Раймунд Луллий (1235-1315) создал машину, которая перебирала и комбинировала различные понятия, оставляя анализ их сочетаний и вывод заключения за человеком.

Следующая попытка использовать логические построения в решении гениальной по замыслу и грандиозной по масштабу задачи была предпринята Готфридом Лейбницем, человеком энциклопедических знаний, с большим диапазоном интересов. Главной своей задачей Лейбниц считал придание Аристотелевой логике алгебраической формы. Он хотел создать искусственный язык науки, который должен был стать средством выражения любых мыслей, средством анализа и решения любых проблем. Попутно Лейбниц интересовался созданием вычислительных машин, использованием для вычислений двоичной системы счисления.

Задача 2.

Мама, прибежавшая на звон разбившейся вазы, застала всех трех своих сыновей в совершенно невинных позах: Саша, Ваня и Коля делали вид, что происшедшее к ним не относится. Однако футбольный мяч среди осколков явно говорил об обратном.

- Кто это сделал? - спросила мама.

- Коля не бил по мячу, - сказал Саша. -Это сделал Ваня.

Ваня ответил: - Разбил Коля, Саша не играл в футбол дома.

- Так я и знала, что вы друг на дружку сваливать будете, - рассердилась мама. -Ну, а ты что скажешь? - спросила она Колю.

- Не сердись, мамочка! Я знаю, что Ваня не мог этого сделать. А я сегодня еще не сделал уроки, - сказал Коля.

Оказалось, что один из мальчиков оба раза солгал, а двое в каждом из своих заявлений говорили правду. Кто разбил вазу?

Решение:

Выполним формализацию задачи. Введем обозначения:

С = «Саша разбил вазу», -С = «Саша не разбивал вазу».

Аналогичное значение будут иметь логические переменные В и К для Вани и Коли.

Два ответа Саши: ^ = -К ■ В. Если он оба раза солгал, то = К ■ -В.

Два ответа Вани: = К ■ -С. Если он также в каждом ответе солгал, то

с2 = -к ■ с.

Одно заявление Коли: = -В. С3 = В. Вторым ответом Коли (он не сделал еще уроки) пренебрегаем, уменьшая при этом число логических переменных.

Итоговая функция с учетом того, что только один из мальчиков сказал неправду, записывается следующим образом:

^ = ^ ■ ^ ■ ^з V ^ ■ С2 ■ Я» V ^ ■ ^ ■ Сз.

После подстановки в формулу значений функций и преобразований получаем ответ:

^ = к ■ В ■ к ■ с ■ В V К ■ в ■ К ■ с В V V К ■ В ■ К ■ С ■ В = К ■ В С

Полученное выражение принимает значение истина только на одном наборе значений своих аргументов: К = истина, В = ложь и С = ложь (100).

Ответ: Вазу разбил Коля.

Задача 3.

Три школьника, Миша (М), Коля (Л") и Сергей (С), остававшиеся в классе на перемене, были вызваны к директору по поводу разбитого в это время окна в кабинете. На вопрос директора о том, кто это сделал, мальчики ответили следующее:

Миша: «Я не бил окно, и Коля тоже...»

Коля: «Миша не разбивал окно, это Сергей разбил футбольным мячом!»

Сергей: «Я не делал этого, стекло разбил Миша».

Стало известно, что один из ребят сказал чистую правду, второй в одной части заявления соврал, а другое его высказывание истинно, а третий оба факта исказил. Зная это, директор смог докопаться до истины.

Кто разбил стекло в классе? В ответе запишите только первую букву имени.

Решение:

Формализация высказываний:

М = «Разбил окно Миша»;

Not M = M = «Миша не разбивал окно»

К = «Разбил окно Коля»;

Not К = К = «Коля не разбивал окно»

С = «Разбил окно Сергей»;

Not С = С = «Сергей не разбивал окно»

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Обозначение заявлений школьника с номером i: Fi - чистая правда, Gi - в одной части соврал, Ht - оба факта исказил.

Миша - F1 = M • K , G1 = M • K, H1 = M • K.

Коля - F2 = M • C , G2 = M • C v M • C , H 2 = M • C .

Джордж Буль (1815-1864)

Дж. Буль родился в бедной семье. Он окончил лишь начальные классы школы для бедных. Самостоятельно изучив латынь и древнегреческий, девятнадцатилетний Буль печатает в местных изданиях свои переводы Горация. После долгих поисков работы, которая оставляла бы время для самообразования, Буль открыл маленькую школу, в которой был единственным преподавателем. К счастью, два влиятельных математика - Д. Грегори, издававший математический журнал, и О. де Морган, профессор Кембриджского университета, оценили глубину первых работ Буля. Б 1849 г. он стал профессором математики в колледже г. Корк в Ирландии. Б 1854 г. Буль опубликовал работу «Исследования законов мышления». Б ней была изложена алгебра логики высказываний, основанная на трех операциях: And (и), Or (или) и Not (не).

С точки зрения современной математики, алгебра Буля служит математической основой для решения задач анализа и синтеза релейных схем и логических схем компьютеров, использующих двоичную систему счисления.

Есипов A.C.

Сергей - ¥3 = С ■ М , в3 = С ■ М V С ■ М, Н 3 = С ■ М.

Примем естественное ограничение. Будем считать, что стекло в классе разбил один из школьников.

¥4 = М ■ К ■ С V М ■ К ■ С V М ■ К ■ С.

Сложность следующих записей в том, что каждый из школьников мог или сказать правду (¥), или полуправду (О), или в обеих частях заявления сказать ложь (Н). Поэтому итоговая функция должна учитывать все варианты ответов. Таких комбинаций шесть (см. таблицу 1).

Итоговая функция - это дизъюнкция шести конъюнкций функций из таблицы, логически умноженная на ¥4.

¥ = (¥1 ■ в2 ■ Н3 V ¥1 ■ Н2 ■ в3 V

V в1 ■ ¥2 ■ Н3 V в1 ■ Н2 ■ ¥3 V V Н1 ■ ¥2 ■ в3 V Н1 ■ в2 ■ ¥3) ■ ¥4.

На листинге 2 приведена программа решения задачи.

Ответ: М ■ К ■ С = 100.

Замечание: Если не вводить ограничение ¥4, то получим два ответа. Первый ответ - М ■ К ■ С = 100. Второй ответ -М ■ К ■ С = 011, который указывает, что окно разбили вдвоем Коля и Сергей. Заметим, что ответ в задаче 2 получен без введения ограничения. Ввод ограничения только подтверждает полученный ответ.

Листинг 2. Решение задачи о разбитом окне

Private Sub Form_Load() Show

Print " M"; " K"; " C", " F" For M = 0 To 1: For K = 0 To 1: For C = 0 To 1 F1 = Not M And Not K G1 = Not M And K Or M And Not K H1 = M And K F2 = Not M And C G2 = M And C Or Not M And Not C H2 = M And Not C F3 = Not C And M G3 = C And M Or Not C And Not M H3 = C And Not M f4 = M And Not K And Not C Or Not M And K And Not C Or _

Not M And Not K And C F = (F1 And G2 And H3 Or F1 And H2 And G3 Or G1 And F2 And H3 Or _ G1 And H2 And F3 Or H1 And F2 And G3 Or H1 And G2 And F3) And f4 If F = 1 Then Print M; K; C, F Next C, K, M End Sub

Таблица 1.

Миша Коля Сергей

Fi G2 Нз

Fi H2 G3

Gi F2 Нз

Gi H2 F3

Hi F2 G3

Hi G2 F3

Литература

1. Есипов А. С. Логические основы построения и работы компьютеров // Компьютерные инструменты в образовании, № 1, 2000.

2. Есипов А.С. Информатика и информационные технологии для учащихся школ и колледжей. СПб.: БХВ-Петербург, 2004.

3. Есипов А.С., Паньгина H.H., Громада М.И. Информатика. Сборник задач и решений для общеобразовательных учебных заведений. СПб.: Наука и Техника, 2001.

© Наши авторы, 2006 Our authors, 2006.

Есипов Александр Сергеевич, кандидат технических наук, доцент.

i Надоели баннеры? Вы всегда можете отключить рекламу.