7.1. Логические высказывания и действия с ними
Высказыванием или суждением называют повествовательное предложение, в отношении содержания которого можно сказать, что оно истинно или ложно. В более широком смысле под высказыванием понимается выражение не только на разговорном языке, например, на языке математическом или алгоритмическом.
Примеры истинных высказываний: «Вода — жидкость», «10 — 3 = 7″и т. п.
Примеры ложных высказываний: «Кошка — насекомое», «3 > 4» и т. п.
В качестве примера высказывания, о котором ничего нельзя сказать о его истинности или ложности, можно привести высказывание «Я всегда лгу». Если допустить, что оно истинно, то истинно то, что оно утверждает, следовательно, оно ложно. И наоборот, если оно ложно, то ложно его утверждение, следовательно, оно истинно.
Высказывание «Река Нева вытекает из Ладожского озера» всегда истинное. Высказывание «Три больше четырех» всегда ложное. Такие высказывания — константы.
Истинность или ложность высказываний «Дождь идет», «Светит солнце» зависит от конкретной ситуации, месте и времени действия. То же самое можно сказать о высказываниях «х > 5», «x При решении задач на компьютере высказывания используются в качестве условий, истинность или ложность которых определяет дальнейшую последовательность выполняемых действий. Рассмотрим пример. Пусть в задаче используются числа x, a, b, с и требуется выполнить следующее действие. Если x > 0 = истина, то вычислить с = a + b. Если же х > 0 = ложь, то вычислить с = a — b. Здесь высказывание x > 0 выступает в качестве условия, истинность или ложность которого изменяет ход решения задачи. Для значений X = 5, A = 10, b = 7 имеем с = A + b = 17. В случае если x = -2, то получим с = A — B = 3. Значения «ложь»(False) и «истина»(True) часто заменяют соответственно словами «нет» и «да» (есть), буквами Л и И, а также цифрами 0 и 1 (табл. 7.1). В дальнейшем будем пользоваться в основном двоичным алфавитом: истина — 1, ложь — 0. Таблица 7.1. Значения логических переменных Ложь False Нет Л 0 Истина True Да (Есть) И 1 Уже древними философами была замечена важная роль в разговорном языке таких логических связок, как «И», «ИЛИ», отрицания «НЕ» и т. п. Эти связки выступают в качестве логических операций над высказываниями. Одни операции объединяют простые высказывания в сложные. Другие изменяют истинность высказываний. При этом истинность сложных высказываний зависит от истинности или ложности входящих в него простых высказываний. 7.2. Логические операции и функции Набор используемых в алгебре операций называют базисом алгебры. Логические операции определяют соответствующие логические функции. Базис алгебры логики содержит шесть функций: □ инверсия (отрицание); □ конъюнкция (логическое умножение); □ дизъюнкция (логическое сложение); □ импликация (операция импликация, следование); □ эквивалентность (равнозначность); □ сумма по модулю 2 (неравнозначность, отрицание равнозначности). Подробное определение перечисленных логических функций с многочисленными примерами дано в предыдущей главе. Кратко напомним особенности их записи и чтения. Операция отрицание (НЕ) определяет функцию инверсия. Варианты заПИси в булевой алгебре и алгебре логики отрицания переменной Х следующие: Х или X. В языках программирования отрицание логической переменной Х записывают так: Not X. Читаются такие записи так: «Не Х», «Не верно, что Х». С помощью связки И выполняется операция логическое умножение, которая определяет функцию конъюнкция. Варианты записи в булевой алгебре и алгебре логики конъюнкции логических переменных Х и Y следующие: X &Y, X ∙ Y, XYИ X ∧Y. На языках программирования запись следующая: X And Y. Читаются такие записи так: «X и Y». С помощью связки ИЛИ выполняется операция логическое сложение, которая определяет функцию дизъюнкция. Логическая сумма двух переменных X и Y записывается в булевой алгебре и алгебре логики так: X ∨Y. На алгоритмическом языке запись функции следующая: X Or Y. Читаются такие записи так: «X или Y». Операции импликация (следование) соответствует одноименная функция импликация. Знак операции импликации — стрелка (→). В алгебре логики импликация переменных X и Y записывается так: X → Y. В базисЕ булевой алгебры функцию импликации записывают такой формулой: X∨ Y. Можно записать X→Y=X∨Y. Такую запись называют тождеством. Элементы тождества обладают свойством равносильности. На алгоритмическом языке запись функции импликация следующая: X Imp Y. Читаются эти записи так: «Импликация от X к Y»или «Если X, то Y». Одно из полезных свойств импликации следующее: X → γ = γ → X. Операция равнозначность определяет логическую функцию эквивалентность. В алгебре логики знак операции равнозначность — двойная стрелка (θ). Функция эквивалентность формулой записывается так: X θ Y.В булевой алгебре функция записывается следующими формулами: XY ∨ XY или XY ∨ X 1 Y. На алгоритмическом языке запись функции следующая: X Eqv Y. Одно из полезных свойств равнозначности таково: X θ Y = (X → Y)(Y → X) . Логической операции сумма по модулю 2 соответствует функция неравнозначность. Используя функции булевого базиса (дизъюнкцию, конъюнкцию и инверсию), функцию неравнозначность можно записать так: XY∨XY . На алгоритмическом языке функция неравнозначность записывается следующим образом: X Xor Y. Замечание о записи формул функций Не все исторически сложившиеся варианты знаков логических операций удобны в использовании, не все приводят к простым и наглядным записям функций. Но с этим приходится мириться, т. к. многие тестовые задания для обучаемых, в том числе и задачи из ЕГЭ, содержат самые разнообразные варианты записи функций. Например, функция неравнозначность может быть записана в следующих вариантах: □ F1(X, Y) = не X и Y или X и не Y; □ F2(X, Y) = —X∧Y∨X∧-Y; □ F3(X, Y) = -X&Y∨X &-Y; □ F4(X, Y) = XY ∨XY; □ F5 (X, Y) = (Not (X) And Y) Or (X And not(y)); □ F6 (X, Y) = Not X And Y Or X And Not y; □ F7(X, Y) = X Xor Y. Заметим, что это далеко не все варианты записей. Из них наибольшей простотой и наглядностью обладает запись F4. Вариант записи F2используется в задачах по булевой алгебре и алгебре логики в ЕГЭ. Предпоследняя строка вариантов записей получена из предыдущей строки исключением скобок. В них нет необходимости, но они подчеркивали структуру формулы. Замечание об очередности выполнения операций Очередность выполнения логических операций: Not, And, Or, Xor и Eqv, Imp. Напомним также, что в сложных выражениях последовательность выполнения операций следующая: арифметические и строковые, отношения, логические. Все шесть функций алгебры логики сведены в табл. 7.2. Таблица. 7.2. Таблица функций алгебры логики Функции (операции) Разговорный язык Алгебра логики Булева алгебра Бейсик Инверсия Не А А, — А А, — А Not А Конъюнкция А и В A ∧B, AB, A &B, A ∙ B A ∧B, AB, A &B, A ∙ B A And B Дизъюнкция А или В A ∨B A ∨B А Or B Импликация (следование) Если А, то В A → B А ∨B А Imp B Эквивалентность (равнозначность) А тогда и только тогда, когда В A О B AB ∨AB А Eqv B Отрицание равнозначности (сумма по модулю 2) Или А, или В, но не вместе A О B AB ∨ AB A Xor B Логику работы логических функций принято задавать и пояснять таблицами истинности, которые связывают значение функции со значениями ее аргументов. Таблица 7.3 задает таблицу истинности функции инверсия. Таблица 7.3. Таблица истинности инверсии X Not (X) 0 1 1 0 В таблицу истинности (табл. 7.4) сведены все функции алгебры логики. К ним добавлен второй вариант функции импликации — импликация от Y к X. Таблица 7.4. Таблица истинности функций алгебры логики X Y X XY X Y X→Y Y→X XoY X О Y 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 7.3. Логические операции В программировании Логические операции широко применяются в языках программирования. При записи программ они используются для записи логических условий. Результаты операций отношения (знаки операций: =, <>, >, <, >=, <=) принимают значение "истина"(True), если условие выполняется, и "ложь"(False), если условие не выполняется. Отношения можно интерпретировать как простые высказывания, которые могут быть истинными или ложными. При работе с отношениями следует учитывать, что, как правило, имеем дело с тремя альтернативами: больше (>), меньше (<) и равно (=). Например, если (Х > 0) = True, то Not (X > 0) = (Х <= 0) = (X < 0) Or (X = 0) = False. С помощью логических операций And, Or, Not, Xor, Eqv и Imp из простых отношений можно строить сложные, составные конструкции и использовать их в качестве условий, например, в условных операторах (If), операторах цикла (Do…Loop). Программа, показанная в листинге 7.1, печатает результаты операций отношения величин чисел a, b и с (рис. 7.1). Листинг 7.1. Результаты отношений (макрос) Sub Логика_1() ‘Логика_1 Макрос A = 5: B = 3 C = 1 F1 = A >b ‘f1 = True F2 = A
‘f2 = False F3 = A
Or b >c ‘f3 = True F4 = A >b And Not (b >c) ‘f4 = False Debug. Print «f1 = «; f1, «f2 = «; f2, «f3 = «; f3, «f4 = «; f4 End Sub Рис. 7.1. Моделирование результатов отношений ПРИМЕР 7.1 Пусть условие состоит из двух отношений, из которых может одновременно выполняться только одно. Если эти отношения х = а и y >b, то условие можно записать так: (x = a) And (y < = b) Or (x <>a) And (y >b) Или так: ((x = a) And Not(y >b)) Or (Not (x = a) And (y >b)) Последняя запись представляет собой функцию неравнозначность (сумму по модулю 2). Более компактно это условие записывается с помощью логического оператора Xor: (x = a) Xor (y >b) Заметим, что скобки в формулах примера не обязательны. Но они часто подчеркивают структуру формул, делают их более наглядными. ПРИМЕР 7.2 Если условие для отношений из предыдущего примера должно быть истинным, когда оба отношения истинны или оба отношения ложны, то в этом случае удобно воспользоваться оператором Eqv (равнозначность): (x = a) And (y > b) Or Not (x = a) And (y > b) (x = a) Eqv (y > b) ПРИМЕР 7.3 Рассмотрим пример использования сложного логического условия. Пусть требуется табулировать функцию, заданную графиком на рис. 7.2. Это можно сделать с помощью программы, показанной в листинге 7.2. •2-1012 x Рис. 7.2. График функции Листинг 7.2. Табуляция функции, заданной рис. 7.2 (макрос) Sub Логика_2() ‘ Логика_2 Макрос X = InputBox(«Bβeguτe х») X = Val(x) If x < -2 Or x > -1 And x < 1 Or x > 2 Then y = 0 Else y = 1 ‘ Эту же функцию можно задать так: ‘If x > = -2 And x < = -1 Or x > = 1 And x < = 2 Then y = 1 Else y = 0 Debug. Print "При х = "; x, "y = "; y End Sub ПРИМЕР 7.4 Заданы не равные нулю длины трех отрезков прямой: a, b, c. Записать логическое условие проверки: можно ли построить треугольник со сторонами a, b, c. Решение Известно, что всякая сторона треугольника меньше суммы и больше разности двух других сторон. Поэтому треугольник можно построить, если истинным является, например, следующее логическое выражение: (a + b >c) And (a + c >b) And (b + c >a) Инверсия этого выражения будет принимать значение «истина» только в случае, если треугольник построить нельзя: (a + b < = c) Or (a + c < = b) Or (b + c < = a) Задания для самостоятельной работы ЗАДАНИЕ 7.1 Заданы стороны треугольника a, b, c. Записать логическое условие проверки: 1. Является ли треугольник равносторонним. 2. Является ли треугольник равнобедренным. 3. Является ли треугольник прямоугольным. 4. Является ли треугольник тупоугольным. 5. Является ли треугольник остроугольным. ЗАДАНИЕ 7.2 Заданы не равные нулю длины четырех отрезков прямой: a, b, c, d. Записать логическое условие проверки: могут ли эти отрезки быть сторонами квадрата или ромба? 7.4. Логические операции Над высказываниями Простые высказывания, в отношении которых можно сказать, что они истинны или ложны, в алгебре логики играют роль логических переменных. Простые высказывания с помощью логических операций связываются в сложные высказывания. Рассмотрим функции алгебры логики применительно к конкретным высказываниям. Обозначим высказывания «Дождь идет» буквой D, «На небе тучи» буквой T. Можно записать: D = «Дождь идет» и T = «На небе тучи». Конъюнкция (логическое умножение) Сложное высказывание «D И T»понимается в том смысле, что «Дождь идет И На небе тучи». Обозначим это высказывание буквой A. Используя знаки операций булевой алгебры, можно записать: A = D ∙ T. На языке программирования это запишется так: A = D And T. Дизъюнкция (логическое сложение) Сложное высказывание «D Или T»читается так: «Дождь идет Или На небе тучи». Обозначим его буквой B. Можно записать: B = D ∨T и B = D Or T. Одноместную операцию отрицание можно применить как к простому, так и сложному высказыванию. Высказывание «Не D»читается «Не верно, что Дождь идет» или «Дождь Не Идет». Это записывается формулами так: D или Not D. Если A = D ∙ T, то под высказыванием «Не A»понимается следующее: «Не верно, Что Дождь идет и на небе тучи». Соответственно, их можно записать так: A = D ∙ T или Not A = Not (D And T) = Not D Or Not T. Последнее выражение можно прочитать, например, так: «Дождь не идет или нет на небе туч». К последнему выражению приводит применение правила де Моргана (инверсия конъюнкции равна дизъюнкции инверсий). Операция импликация эквивалентна выражению на разговорном языке «Если D, То T», где D и T — некоторые высказывания. Допустим, что D и T — это те же введенные ранее высказывания: D = «Идет дождь» и T = «На небе тучи». Рассмотрим функцию D → T. Напомним, что если D = 1, то дождь идет, если же D = 0, то дождя нет. Аналогично с тучей на небе. В пятом столбце таблицы истинности (см. табл. 7.4) записано значение функции импликация на всех наборах значений аргументов. Построчно эту функцию в отношении высказываний D и Т можно интерпретировать так: □ 1-я строка. 0 → 0 = 1. «Если дождь не идет, то на небе нет тучи» — высказывание истинно; □ 2-я строка. 0 → 1 = 1. «Если дождь не идет, то на небе тучи» — высказывание истинно; □ 3-я строка. 1 → 0 = 0. «Если дождь идет, то на небе нет тучи» — высказывание ложно; □ 4-я строка. 1 → 1 = 1. «Если дождь идет, то на небе тучи» — высказывание истинно. Некоторые из строк, например вторая строка, могут вызвать вопросы. Но следует учитывать, что в алгебрах царствует формальный подход. А в алгебре логики, предназначенной для формализации богатого различными нюансами разговорного языка, отразить операциями все смысловые тонкости речи практически невозможно. Расширение базиса алгебры (набора операций) усложняет ее, что нежелательно. Но и принятый базис позволяет находить решения сложных логических задач, которые с помощью содержательных рассуждений, без использования аппарата алгебры логики, решать трудно.
Эквивалентность (равнозначность)
В принятых ранее обозначениях (D — дождь, T — тучи) эта функция записывается в булевой алгебре, алгебре логики и на языке программирования следующими формулами: C = D ∙ T ∨D ∙ T , C = DО T и с= d Eqv т, т. е. сложное высказывание С истинно в случаях, если простые высказывания D и T оба истинны или оба ложны. Формулу равнозначности в булевой алгебре можно прочитать, например, так: «Идет дождь И На небе тучи Или не Идет дождь И нет На небе туч».
Неравнозначность (сумма по модулю 2)
Эта фуНКция в отношении дождя и туч может быть записана формулой так: D ∙ T ∨D ∙ T, т. е. «Дождь идет и на небе нет туч или дождя нет и на небе тучи» — или одно, или другое, но не оба. Неравнозначность — инверсия эквивалентности. На языке программирования неравнозначность записывается так: С = D Xor т.
7.5. Формализация высказываний
Логические функции и высказывания
Естественный язык не поддается полной формализации ввиду неоднозначности слов, выражений, множества трудноуловимых оттенков, передающих эмоциональную сторону высказываний. Поэтому операции в алгебре логики носят собирательный характер в том смысле, что каждая операция формализует некоторое количество тождественных или близких по смыслу выражений разговорной речи. Рассмотрим примеры.
□ Конъюнкция: «А и В», «как А, так и В», «не только А, но и В», «А вместе с В», «А, несмотря на В», «А, в то время как В» и т. п.
□ Дизъюнкция: «А или В», «А, или В, или оба» и т. п.
Если встречается связка «либо», например, «А либо В«, то это означает «или А, или В, но не оба», «только А или только В«, что формализуется формулой A ∙ B ∨A ∙ B, т. е. операцией Xor, которая равна инверсии операции Eqv.
□ Инверсия: «не А», «неверно, что А», «А не имеет места».
□ Импликация: Следующие выражения записываются формулой А → В: «если А, то В», «В, если А», «когда А, тогда В», «А только, если В», «А достаточно для В», «для А необходимо В», «А только тогда, когда В» и т. п.
Следующие высказывания записываются формулой В → А: «если В, то А», «А, если В», «А тогда, когда В», «для А достаточно В» и т. п.
К импликации приводят выражения, содержащие слова «необходимо» и «достаточно». Например, обозначим А = «пошел дождь», В = «на небе тучи». Рассмотрим высказывание «Чтобы пошел дождь, необходимо наличие на небе туч». Левая часть этого высказывания — посылка, правая — заключение. Правило следующее. Если об утверждении говорится, что оно необходимо, то это утверждение записывается справа от знака импликации, в качестве заключения. Формулой это записывается так: А → В. Эту формулу можно прочитать: «Для А необходимо В».
Рассмотрим высказывание «Чтобы пошел дождь, достаточно на небе туч». В нем говорится, что утверждение является достаточным условием. Оно записывается слева от знака импликации, формулой В → А и читается «В достаточно для А». Можно сделать вывод, что необходимые условия записываются в качестве заключения справа, а достаточные условия записываются в формуле слева, в качестве посылки.
При решении задач полезно помнить запись импликации в булевой алгебре:
A → B = A ∨B, B → A = A ∨B .
Некоторые выражения разговорного языка по форме напоминают импликацию, а по содержанию требуют запись в виде конъюнкции. Например: «Если Петр любитель ходить по гостям, то Павел домосед». «Если в планиметрии изучают плоские фигуры, то в стереометрии изучают трехмерные геометрические тела».
□ Неравнозначность: «А или В, но не оба», «А либо В», «либо А, либо В», либо не А, либо не В».
□ Эквивалентность (равнозначность): «А эквивалентно В», «А тогда и только тогда, когда В», «А необходимо и достаточно для В». Напомним, что в булевой алгебре, алгебре логики и на языке программирования эквивалентность (равнозначность) записывается так:
C = A ∙ B ∨A ∙ B , C = A О B, С = A Eqv в.
В алгебре логики справедливы все законы и правила преобразования формул булевой алгебры. Напомним, что включение в базис алгебры логики функций импликация и эквивалентность добавляет несколько полезных тождеств, например:
A → B = A ∨B,
А → В = В → А,
(А о В) = (А → В)(В → А) = (A ∨B)(B ∨A) = А ∙ В ∨А ∙ В.
Примеры формализации высказываний
ПРИМЕР 7.5
Введем и обозначим несколько простых высказываний:
□ |
A = «Цветок ароматный»; |
□ |
O = «Цветок осенний»; |
□ |
В = «Цветок белый»; |
□ |
P = «Цветок полевой»; |
□ |
С = «Цветок синий»; |
□ |
R = «Цветок красный»; |
□ |
G = «Цветок желтый»; |
□ |
S = «Цветок садовый»; |
□ |
K = «Цветок комнатный»; |
□ |
V = «Цветок весенний»; |
□ |
L = «Цветок луковичный»; |
□ |
W = «Цветок крупный»; |
□ |
M = «Цветок красивый»; |
□ |
Z = «Цветок загадочный» |
Пользуясь логическими операциями, составим из этих высказываний несколько сложных высказываний и запишем их формулами в алгебре логики и на языке программирования.
□ X1= «Цветок белый и ароматный».
XI = B ∙ A, Xl = B And A.
□ X2 = «Цветок садовый или полевой».
X2=S∨P, X2 = S Or P.
□ X3 = «Цветок, хотя и не садовый, но крупный и красивый».
Xз = S —W ■ K, X3 = Not S And W And K.
□ X4 = «Цветок желтый, весенний или осенний».
X4=G(V∨O), X4 = G And (V Or O) .
□ X5 = «Цветок полевой или садовый, но некрупный и некрасивый».
X5 =(P ∨ S) ∙W ∙ M, X5 = (P Or S) And Not W And Not M.
□ X6 = «Не верно, что если цветок луковичный, то он полевой или комнатный».
X6 =L→(P ∨K), X6 = Not (L Imp (P Or K)) .
□ X7 = «Если цветок весенний, то он красный и не ароматный».
X7 = V → K ∙ A, X7 = V Imp (K And Not A) .
□ X8 = «Цветок осенний и загадочный, если он комнатный или желтый».
X8 = (K ∨G) → O ■ Z, X8 = (K Or G) Imp (O And Z) .
□ X9 = «Если цветок садовый, то он должен быть крупным и ароматным, и все это только в случае, если цветок не луковичный».
X9 = L → (S → W ∙ A), X9 = Not L Imp (S Imp W And A).
□ X10= «Чтобы цветок был осенним, необходимо, чтобы он был загадочным».
X10=O→Z, X10 = O Imp Z.
□ X11= «Чтобы цветок не был крупным, достаточно, чтобы он был полевым».
XII = P → W, Х11 = P Imp Not W.
□ X12= «Чтобы цветок был красивым, необходимо и достаточно, чтобы он был комнатным».
X12= M θ∙ K, X12 = M Eqv K.
□ X13= «Чтобы цветок не был луковичным и был синим, необходимо и достаточно, чтобы он был весенним и не был полевым».
X13 = L ∙ C θ V ∙ P, X13 = Not L And C Eqv V And Not P.
□ X14= «Цветок ароматный тогда и только тогда, когда он садовый и желтый».
X14= A θ∙ S ∙ G, X14 = A Eqv S And G.
Напомним очередность выполнения операций: Not, And, Or, Xor и Eqv, Imp. Для объединения аргументов отдельных функций вводят скобки (см. например, функцию X8). Скобки вводятся в формулы также с целью изменить эту очередность, т. к. сначала выполняются действия в скобках (см. функцию X9). Часто необязательные скобки добавляют, чтобы подчеркнуть структуру формулы, сделать ее более наглядной, обозначить последовательность выполнения операций.
ПРИМЕР 7.6
Рассмотрим решение обратной задачи. Пусть заданы и обозначены простые высказывания и формулы логических функций, содержащих эти простые высказывания в качестве логических переменных. Требуется записать заданные логические формулы словами, содержательными предложениями.
Дано:
Z = «Яблоко зеленое», K = «Яблоко красное», V = «Яблоко вкусное»,
S = «Яблоко сладкое», G = «Яблоко кислое», W = «Яблоко крупное»,
L = «Яблоко мелкое», Т = «Яблоко твердое», М = «Яблоко мягкое».
Y1=KV= K And V |
Y8=(M ∨Z)→T = |
(M |
Or Z) |
Imp T |
Y2=Z∨M = Z Or M |
Y9=KM→(W∨V) |
= ] |
K And M |
Imp W Or V |
Y3=WS= W And S |
Y10 =Z→(L→T)= |
Z |
Imp (L |
Imp T) |
Y4=KGV= K And G And V |
Y11=S→K= S Imp |
K |
||
Y5= SV = S And Not V |
Y12=K→S= K Imp |
S |
||
Y6= (Z Or K) And T |
Y13= S О K = S Eqv |
K |
||
Y7=W →S= Not(W Imp S) |
Y14= G О Z = G Eqv |
L |
And Z |
|
Решение: |
□ Y = «Яблоко красное и вкусное»;
□ Y2= «Яблоко зеленое или мягкое»;
□ Y3= «Яблоко не только крупное, но и сладкое»;
□ Y4= «Яблоко красное, хотя и кислое, но вкусное»;
□ Y5= «Яблоко сладкое, но невкусное»;
□ Y6= «Яблоко зеленое или красное, но твердое»;
□ Y7= «Не верно, что если яблоко крупное, то оно сладкое»;
□ Y8= «Если яблоко мелкое или зеленое, то оно твердое»;
□ Y9= «Яблоко крупное или вкусное, если оно красное и мягкое»;
□ Y0= «Если яблоко мелкое, то оно должно быть твердым, и все это только в случае, если яблоко зеленое»;
□ Y1= «Чтобы яблоко было сладким, необходимо, чтобы оно было красным»;
□ Y2= «Чтобы яблоко было сладким, достаточно, чтобы оно было красным»;
□ Y3= «Чтобы яблоко было сладким, необходимо и достаточно, чтобы оно было красным»;
□ Y4= «Яблоко кислое тогда и только тогда, когда оно мелкое и зеленое».
Для проверки правильности записей иногда полезно рассмотреть таблицу истинности записываемых функций. Например, могут вызвать сомнения функции Y11и Y12. Представим их таблицей истинности 7.5.
Рассмотрим функцию Y11=S→K. Первая строка говорит о том, что несладкое яблоко может быть не красным. Это высказывание истинно. Вторая строка указывает на то, что несладкое яблоко может быть красным. Это высказывание также истинно. Четвертая строка также соответствует истинному высказыванию: сладкое яблоко должно быть также и красным. И только третья строка говорит, что не может быть, чтобы сладкое яблоко не было красным. Необходимо, чтобы оно было красным. Высказывание «Яблоко сладкое, но не красное» — ложное и противоречит смыслу исходной формулы: «Если яблоко сладкое, то оно красное», «Чтобы яблоко было сладким, необходимо, чтобы оно было красным».
Таблица 7.5. Таблица истинности функций импликация
S |
K |
S → K |
K → S |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
Аналогично рассматривается функция Y12=K→S. Она принимает значение 0 (ложь) только на наборе SK = 01, который соответствует тому, что красное яблоко оказалось несладким. Чтобы яблоко было сладким, достаточно, чтобы оно было красным. Но, как видно из таблицы, сладкое яблоко может быть и не красным. Видим, что требование достаточности менее жесткое, чем требование необходимости.
Задания для самостоятельной работы
ЗАДАНИЕ 7.3
Задано несколько простых высказываний о погоде. Из них составлены сложные высказывания. Записать эти высказывания формулами алгебры логики и на языке программирования.
Простые высказывания:
□ |
C = «Идет снег»; |
□ |
О = «На улице оттепель»; |
□ |
D = «Идет дождь»; |
□ |
P = «Небо пасмурное»; |
□ |
G = «На дорогах гололедица»; |
□ |
S = «Ветер южный»; |
□ |
I = «На деревьях иней»; |
□ |
Т = «Температура плюсовая» |
□ |
М = «На улице мороз»; |
□ |
U = «На улице туман». |
□ |
N = «Ветер северный»; |
Сложные высказывания:
□ X1= «На улице мороз, идет снег, но гололедицы нет»;
□ X2 = «На улице оттепель и на деревьях иней или на улице туман»;
□ X3 = «Если северный ветер или идет снег, то на улице мороз»;
□ X4 = «На дорогах нет гололедицы, на деревьях нет инея и на улице нет тумана, если дует северный ветер при морозе»;
□ X5 = «На улице оттепель или на деревьях иней, если температура плюсовая»;
□ X6 = «Для того чтобы шел дождь или снег, необходимо наличие пасмурного неба»;
□ X7 = «Для появления на деревьях инея достаточно пасмурного неба и оттепели»;
□ X8 = «Для гололедицы на дорогах необходимо и достаточно наличие плюсовой температуры при северном ветре и тумане»;
□ X9 = «Чтобы не было ни снега, ни дождя, необходимо, чтобы небо не было пасмурным»;
□ X10= «На улице туман или на деревьях иней может быть тогда и только тогда, когда на улице оттепель»;
□ X11= «При южном ветре на улице оттепель только тогда, когда пасмурное небо и плюсовая температура»;
□ X12= «На деревьях иней, на улице туман и на дорогах гололедица тогда, когда дует южный ветер и на улице оттепель».
ЗАДАНИЕ 7.4
Заданы простые высказывания и логические формулы, в качестве аргументов которых использованы идентификаторы простых высказываний. Записать эти формулы на разговорном языке содержательными предложениями и на языке
![]() |
![]() |
![]() |
![]() |
![]() |
ЗАДАНИЕ 7.5
Задано несколько простых высказываний о цветах. Из них составлены сложные высказывания. Запишите эти сложные высказывания формулами функций алгебры логики и на языке программирования.
Простые высказывания:
□ |
А = «Цветок ароматный»; |
□ |
P = «Цветок полевой»; |
□ |
B = «Цветок белый»; |
□ |
R = «Цветок красный» |
□ |
C = «Средней величины»; |
□ |
S = «Цветок астра»; |
□ |
D = «Цветок домашний»; |
□ |
Т = «Цветок тюльпан» |
□ |
G = «Цветок желтый»; |
□ |
V = «Цветок садовый» |
□ |
K = «Цветок крупный»; |
□ |
Z = «Цветок роза». |
□ |
М = «Цветок мелкий»; |
Сложные высказывания:
□ Y = «Цветок крупный, ароматный, полевой или садовый»;
□ Y2= «Цветок крупный или мелкий, белый и не домашний»;
□ Y3= «Если цветок садовый, то он крупный или ароматный»;
□ Y4= «Для того чтобы цветок был ароматным и крупным, необходимо и достаточно, чтобы он был домашним или садовым»;
□ Y5= «Чтобы цветок был полевым тюльпаном, необходимо, чтобы он был желтым или красным»;
□ Y6= «Чтобы цветок был крупным или ароматным, достаточно, чтобы он был не астрой, а розой»;
□ Y7= «Не верно, что если цветок полевой, то он ароматный, также не соответствует действительности, что если цветок садовый, то он мелкий»;
□ Y8= «Не верно, что если цветок крупный и белый или желтый и ароматный, то это астра или роза».