ЕГЭ30сентябрь 2011 / ИНФОРМАТИКАК.Ю. Поляков,д. т. н., учительинформатики школы № 163,Санкт-ПетербургСистемылогическихуравненийВсе школьники на уроках математикизнакомятся с алгебраическимии трансцендентными уравнениями.Более экзотические логическиеуравнения, в которых все величинымогут принимать только два значения(“истина” и “ложь”), традиционнотоже относились к математике[1–3]. На практике они оказалисьполезны при разработке цифровыхлогических устройств [4–5] и в последниегоды стали появляться в заданияхЕГЭ по информатике. Так какни в одном школьном учебнике соответствующегоматериала нет, учителюприходится разбираться в этомвопросе самостоятельно. В даннойстатье мы попытаемся немного прояснитьситуацию.Далее для сокращения записиистинное значение обозначаетсяединицей, а ложное — нулем. Длялогических операций “И”, “ИЛИ”,“исключаю щее ИЛИ”, “импликация”и “эквивалентность” будем использоватьзнаки “·”, “+”, “⊕”, “→” и “≡” соответственно,а операцию “НЕ” обозначимчертой сверху.Решение логических задачНачнем с логической задачи, котораясводится к системе логическихуравнений.Задача 1. Следующие два высказыванияистинны:(1). Неверно, что если корабль Aвышел в море, то корабль C — нет.(2). В море вышел корабль B или корабльC, но не оба вместе.Определить, какие корабли вышлив море.Обозначим буквами высказывания:A — “корабль A вышел в море”,B — “корабль B вышел в море”,C — “корабль C вышел в море”.Тогда высказывание “если корабльA вышел в море, то корабль C — нет”можно записать в виде A → C = 1. Поусловию (1), это высказывание неверно,таким образом, имеем A → C=0. Крометого, из (2) получаем A ⊕ B = 1 . Итак,решение задачи сводится к решениюсистемы логических уравнений⎧A → C=0⎨⎩A ⊕ B = 1Нужно найти тройку логическихзначений A, B и C, при которых обауравнения превращаются в истинныеравенства. Покажем несколько способоврешения этой системы.
Способ 1. Сведение к одному уравнению. Сначалапреобразуем уравнения так, чтобы правые частибыли равны 1 (истинному значению). Для этогоприменим инверсию (операцию “НЕ”) к обеим частямпервого уравнения:⎧⎪A → C=1⎨⎪⎩ A ⊕ B = 1Теперь представляем импликацию и “исключающееИЛИ” через базовые операции (“И”, “ИЛИ”,“НЕ”):⎪⎧ A + C=1⎨⎪⎩ A ⋅ B + A ⋅ B = 1Поскольку необходимо, чтобы левые части обоихуравнений были равны 1, можно объединить ихс помощью операции “И” в одно уравнение, равносильноеисходной системе:( A+ C)( ⋅ A⋅ B+ A⋅ B)= 1Раскрываем инверсию в первой скобке по законуде Моргана и вносим “сомножитель” A в скобку, незабыв, что A ⋅ A = 0 и A ⋅ A = A:A ⋅C⋅( A⋅ B+ A⋅ B)= 1 ⇔ A ⋅B⋅ C=1Последнее уравнение, равносильное исходнойсистеме, имеет единственное решение: A = 1,B=0 и C=1. Таким образом, в море вышли кораблиА и C.Способ 2. Таблица истинности. Поскольку логическиевеличины имеют только два значения, можнопросто перебрать все варианты и найти срединих те, при которых выполняется данная системауравнений. Для системы с тремя переменными возможны8 вариантов:A B C A → C A ⊕ B0 0 0 1 00 0 1 1 00 1 0 1 10 1 1 1 11 0 0 1 11 0 1 0 11 1 0 1 01 1 1 0 0Зеленым цветом выделена единственнаястрочка, для которой выполняются условия задачи,то есть A → C=0 и A ⊕ B=1. Таким образом,A = 1, B=0 и C=1, это значит, что в море вышликорабли А и C. Недостаток этого метода — трудоемкостьпри большом количестве переменных(больше 4).Заметим, что такой подход особенно удобен приавтоматизации решения подобных задач. Именноон (совместно с приведением системы к одномууравнению) используется в программе для решениясистем логических уравнений, которая размещенана диске-приложении к этому номеру.Способ 3. Декомпозиция. Идея состоит в том,чтобы зафиксировать значение одной из переменных(положить ее равной 0 или 1) и за счет этогоупростить уравнения. Затем можно зафиксироватьзначение второй переменной и т.д. В нашем случаепри A = 0 получаем⎧0→ C=0⎨⎩0 ⊕ B = 1Известно, что импликация ложна только в одномслучае — когда посылка истинна, а следствие ложно( 1→ 0=0). Поэтому первое уравнение (и, следовательно,вся система) при A = 0 решений не имеет.Теперь рассмотрим второй случай, когда A = 1:⎧1→ C=0⎨⎩1 ⊕ B = 1Из первого уравнения в силу свойств импликациисразу следует, что C=0 или C=1, а из второго— B=0 ( A ⊕ B=1 означает, что A ≠ B ). Таким образом,существует единственное решение системы:A = 1 , B=0 и C=1; это значит, что в море вышликорабли А и C.Способ 4. Последовательное решение уравнений.В некоторых случаях можно решать уравнения последовательно,на каждом шаге добавляя по однойпеременной в рассматриваемый набор. Чтобы вводитьпеременные в алфавитном порядке, поменяемместами уравнения в нашей системе:⎧A⊕ B=1⎨⎩A → C = 0Мы видим, что первое уравнение зависиттолько от A и B , а в третьем подключается переменнаяC . Будем строить дерево решений и одновременнозаписывать его в свернутом виде в таблицу.Переменная A может принимать два значения:A0А011Из первого уравнения A ⊕ B=1 следует, чтоA ≠ B , поэтому при A = 0 получаем единственныйвариант B=1, а при A = 1 имеем B=0. Итак, первоеуравнение имеет два решения относительно переменныхA и B.АB01A B0 11 0Теперь “подключаем” второе уравнение A → C=0,из которого нужно определить допустимые значенияC для каждоговарианта. При A = 0А01 импликация не можетбыть ложна, тоесть первая строчкаB10 предыдущейтаблицы×не дает ни одно-го решения системыC1 двух уравнений. При1031сентябрь 2011 / ИНФОРМАТИКА