- •Министерство образования и науки российской федерации федеральное агентство по образованию
- •Захарова ю.Ф. Дискретная математика и ее приложения
- •Введение
- •Глава 1. Введение в теорию множеств.
- •1.1. Основные определения.
- •1.2. Задание множеств
- •1.3. Операции над множествами
- •1.4. Разбиения и покрытия
- •1.5. Представление множеств в эвм.
- •1.5.1. Включение множеств.
- •1.5.2. Объединение множеств.
- •1.5.3. Пересечение множеств.
- •Глава 2. Булева алгебра.
- •2.1. Основные элементарные функции.
- •2.2. Основные элементарные тождества.
- •2.3. Формы представления булевых функций.
- •2.4. Минимизация булевых функций.
- •2.4.1. Метод Куайна.
- •2.4.2. Метод Карно.
- •Глава 3. Исчисление высказываний и исчисление предикатов.
- •3.1. Исчисление высказываний.
- •3.2. Исчисление предикатов.
- •Глава 4. Теория сжатия текстовой информации.
- •4.1. Метод Хаффмена
- •4.1.1. Общие положения
- •4.1.2. Краткое описание метода Хаффмена.
- •4.1.3. Пример использования метода Хаффмена.
- •4.2. Метод Зива Лемпеля (lz-метод)
- •4.2.1. Основные определения
- •4.2.2. Краткое описание lz-метода
- •4.2.3. Пример lz-метода
- •4.3. Метод Зива-Лемпеля-Велча (lzw-метод)
- •4.3.1. Общие положения
- •4.3.2. Краткое описание lzw-метода
- •4.3.3. Пример lzw-метода.
- •4.4. Метод Барроуза-Уиллера.
- •4.4.1. Общие положения.
- •4.4.2. 1 Этап. Преобразование Барроуза-Уилера.
- •4.4.3. 2 Этап. Mtf–метод.
- •4.4.4. 3 Этап. Статистический кодер.
- •4.4.5. Модификации различных этапов.
- •4.4.6. Сравнение алгоритмов сжатия на базе bwt с другими методами.
- •Глава 5. Теория сжатия графической информации. Введение.
- •5.2. Волновой метод (wavelet-метод)
- •5.2.1. Описание метода
- •5.2.2. Пример волнового метода
- •5.3. Дискретное косинус-преобразование (дкп-метод).
- •5.3.1. Описание метода.
- •5.3.2. Пример дкп-метода.
- •5.4. Классический алгоритм jpg.
- •5.5. Фрактальный алгоритм.
- •Глава 6. Введение в криптографию. Введение.
- •6.1. Методы перестановки
- •6.1.1. Матрицы
- •6.1.2. Маршруты Гамильтона
- •6.1.3. Электрический монтаж
- •6.1.4. Особенности перестановки
- •6.2. Методы подстановки
- •6.2.1. Вектор замен
- •6.2.2. Таблицы Вижинера
- •6.3. Метод замены. Использование алгебры матриц.
- •6.4. Аддитивные методы
- •6.5. Стеганология
- •6.6. Ключ. Основные понятия, связанные с ключом и алгоритмом.
- •6.6.1. Основные понятия.
- •6.6.2. Ключ.
- •6.6.3. Случайные и псевдослучайные числа.
- •6.6.4. Действия по шифрованию информации.
- •6.7. Блочные и поточные шифры.
- •6.8. Алгоритмы des, Triple des и их заменяющие.
- •6.8.2. Алгоритм Triple des
- •6.8.3. Коммерческие алгоритмы, заменившие des
- •6.9. Системы с открытым ключом.
- •6.10. Электронная подпись.
- •6.11. Взлом защищенных файлов.
- •6.11.1. Атака на ключ
- •6.11.2. Атака на алгоритм.
- •6.11.3. Скомпрометированный пароль.
- •6.11.4. Подделка открытых ключей.
- •6.11.5. Не до конца удаленные файлы.
- •6.11.6. Вирусы и закладки.
- •6.11.7. Виртуальная память.
- •6.11.8. Нарушение режима физической безопасности. Радиоатака. Фальшивые даты подписи.
- •6.11.10. Утечка информации в многопользовательской среде.
- •Содержание
- •Глава 6. Введение в криптографию. 1
Глава 3. Исчисление высказываний и исчисление предикатов.
3.1. Исчисление высказываний.
Под высказыванием будем понимать грамматически правильное повествовательное предложение, про которое можно сказать, что оно либо истинно, либо ложно, например:
“Киев — столица Украины”, “Париж — столица России”.
Первое высказывание является истинным, второе — ложным. Возьмем два простых высказывания:
А = “На улице идет дождь”, В = “Над моей головой раскрыт зонтик”.
С помощью пяти логических связок можно образовать следующие сложные высказывания:
1) отрицание: = “На улице не идет дождь”;
2) дизъюнкция:
= “На
улице не
идет дождь или
над моей головой раскрыт зонтик”;
3) конъюнкция:
=
“На улице идет дождь и
над моей головой не
раскрыт зонтик”;
4) импликация:
= “Если
на улице идет дождь, то
над моей головой раскрыт зонтик”;
5) эквивалентность:
= “Над моей головой
раскрыт зонтик тогда
и только тогда, когда
на улице идет дождь”.
Другие логические связки, известные по логике Буля, в логике высказывания не используются.
Рассмотрим каждую из этих связок.
Отрицание. Высказывание А по-другому можно прочитать так:
“Истинно то, что на улице идет дождь”.
Поэтому, если А = 0 , то это означает, что на улице не идет дождь. Дополняющее высказывание А также ориентируется на истинное высказывание, т.е. его следует понимать как
“Истинно то, что на улице не идет дождь”.
Тогда = 1 будет обозначать ту же самую ситуацию, что и в предыдущем случае, т.е. отсутствие дождя.
Дизъюнкция. В нашем конкретном примере дизъюнкция двух высказываний А и В, в принципе, может подразумевать и конъюнкцию этих же высказываний. Однако часто грамматический союз или не включает в себя союз и. Например, пусть будут даны два других высказывания:
Р = “Петр находится в кинотеатре” , Q = “Петр находится в бассейне” .
Если для нас не столь важно, где находится Петр, то мы, конечно, можем использовать союз или с включенным в него союзом и, формально записав:
= “Петр находится
в кинотеатре или/и
в бассейне”.
Но если нам нужно точно установить, где находится Петр, то мы обязаны исключить случай одновременного присутствия Петра в кинотеатре и бассейне, т.е. формально записать:
.
Подобные высказывания называются строгой дизъюнкцией, которая означает “либо Р, либо Q, но не Р и Q одновременно”. И хотя, с точки зрения логики Буля, эта логическая операция равносильна операции симметрической разности:
исторически сложилось так, что символ “+” в логике высказываний не используется.
Конъюнкция. Логический союз и необязательно должен представляться через грамматический союз и. В частности, выше приведенное выражение можно прочитать несколько иначе:
= “На улице идет
дождь, а
над моей головой не
раскрыт зонтик”.
Союзы а и но по смыслу часто совпадают с союзом и, поэтому они используются в сложных конъюнктивных предложениях.
Однако языковая ситуация может стать такой, что союз и перестает играть роль конъюнкции; приведем два сложных предложения:
“Ему стало страшно ц он убил человека”, “Он убил человека и ему стало страшно”
Здесь некоммутативность двух простых предложений очевидна, поскольку мы имеем дело со скрытой импликацией, когда одно простое предложение обусловливает другое.
Импликация. Высказывание типа “если А, то В ” носит объясняющий характер. Оно как бы разъясняет нам, почему имеет место событие В — потому что имело место событие А. Это свойство импликации особенно ценно для логики высказываний, о чем мы подробно остановимся в следующем подразделе.
Объясняющий характер импликации тесно связан с причинно-следственным отношением, при котором А выступает в роли причины, а В — следствия. Причинно-следственная связь между А и В грамматически может быть оформлена предложениями: “А является достаточным основанием для В”, “В , потому что А”, “В при условии выполнения А” и т.д. Если под А и В понимать прежние высказывания, то результат причинно-следственного отношения можно оформить следующей таблицей истинности. Вторая строка таблицы говорит об отсутствии причинно-следственного отношения между событиями А и В.
А |
В |
|
Результаты |
0 |
о |
1 |
Останусь сухим |
1 |
о |
0 |
Вымокну |
о |
1 |
1 |
Останусь сухим |
1 |
1 |
1 |
Останусь сухим |
Эквивалентность. Высказывание “А эквивалентно В” может быть с успехом заменено на “А равно В”, “А тождественно В”, “А равносильно В”, “А тогда и только тогда, когда В” и т.д. Так как эквивалентность выражается через конъюнкцию двух импликаций:
то это отношение часто возникает при одновременном выполнении двух условий: “из А следует В” и “из В следует А”. Таким образом, при эквивалентности двух событий невозможно одному из них приписать роль только причины, а другому — только следствия. Например, два события:
R = “Нарастание анархии в обществе”,
S = “Падение авторитета власти”,
являются вполне равнопорядковыми событиями, поскольку причиной нарастания анархии в обществе является падение авторитета власти; и наоборот, падение авторитета власти происходит из-за нарастания анархии в обществе. В данной ситуации бессмысленно обвинять только власть в слабости и некомпетентности или обвинять народ в несознательности и недисциплинированности.
События R и S образуют логический круг; их будем называть сильно связанными событиями и выражать следующими тождественными формами:
.
Понятие “сильной связанности” совпадает с понятием “эквивалентности”, если речь идет о двух событиях. Но возьмем, к примеру, хорошо известное объяснение, на чем держится Земля:
Земля (X) держится на трех китах (Y), киты (Y) держатся на водах океана (Z), океан (Z) держится на Земле (X).
Последовательность, куда входят три названных объекта Х , Y и Z, тоже образуют логический круг:
Однако отношение эквивалентности (быть взаимной опорой друг для друга) между всеми тремя объектами, т.е.
здесь не возникает, да и не могло возникнуть, так как мы ведь не утверждаем, что Земля является непосредственной опорой для китов (X ~ Y), или что киты являются непосредственной опорой для вод океана (Y ~ Z). Поэтому эквивалентность в данном случае проявляется в весьма своеобразной форме:
или
,
что можно истолковать в случае операции эквивалентности как: одновременное появление всех трех опор произойдет тогда и только тогда, когда возникнет хотя бы одна из опор, и наоборот; для операции импликации: если возникнет какая-нибудь одна из опор, то это приведет к появлению всех трех опор. Таким образом, сильная связанность или логический круг есть нечто промежуточное между причинно-следственным отношением и отношением эквивалентности. Подобные отношения возникают очень часто, например между членами преступной организации, где все связаны круговой порукой и невозможно найти крайнего.
Существуют различия между языком и метаязыком, между объектными и субъектными высказываниями. Пренебрегая этим различием, мы рискуем впасть в противоречие, которое называется логическим парадоксом.
С древних времен известен так называемый “Парадокс лжеца”. Изложим его суть.
“Я лжец”, — сказал лжец.
Итак, некий лжец сообщает о себе, что он лжец. Следовательно, здесь он выступает в своем противоположном качестве, а именно — нелжеца. Поэтому приведенное высказывание на самом деле нужно понимать иначе:
“Я лжец”, — сказал нелжец.
Теперь получается, что правдивый человек сообщает о себе, что он лжец. Правдивому человеку мы, естественно, должны верить. Поэтому второе высказывание следует понимать все-таки так, как это отражено в первом высказывании. Таким образом, возникает неопределенность, заключающаяся в том, что непонятно, как квалифицировать говорящего — как лжеца или как нелжеца, т.е. непонятно, как идентифицировать высказывание — как истинное или как ложное.
Парадокс возник потому, что в приведенных высказываниях не делается разграничения между двумя принципиально различными логическими уровнями. Помимо “лжеца” или “нелжеца” в данной логической ситуации участвует субъект (метанаблюдатель). Если провести четкое синтаксическое отделение смыслового содержания, которое должно относиться к нам, как метанаблюдателям, от прочей семантики объектных персонажей, то логическое противоречие будет снято. Ситуацию с лжецом необходимо представлять следующим образом:
“Я лжец”, — сказал лжец.
“Это истинно”, — сказал метанаблюдатель.
“Я лжец”, — сказал нелжец.
“Это ложно”, — сказал метанаблюдатель.
“Я нелжец”, — сказал лжец.
“Это ложно”, — сказал метанаблюдатель.
“Я нелжец”, — сказал нелжец.
“Это истинно”, — сказал метанаблюдатель.
ложно * ложно = истинно,
истинно * ложно = ложно,
ложно * истинно = ложно,
истинно * истинно = истинно.
Если приведенные четыре конструкции записать через два слова истинно и ложно, то получим обыкновенную таблицу умножения для группы из двух элементов типа плюс и минус единицы. Однако источником противоречий в логике высказываний необязательно является смешение именно объектного и субъектного уровней. Неопределенность может возникнуть между различными объектными уровнями. В качестве примера приведем следующую фразу: “Нет правил без исключений”. Но фраза, стоящая здесь в кавычках сама является правилом. Так какое исключение должно следовать из него? Разберем это противоречие, несколько изменив его семантику. Пусть имеется высказывание:
А = “Любое высказывание является ложным”.
Так как А является высказыванием, на него должно распространяться сказанное в предложении А. Рассмотрим два случая:
1) Пусть А = 1. Это означает, что А = “А = 0” = 1, т.е. А = 0.
2) Пусть А = 0. Это означает, что А = “А = 0” = 0, т.е. А = 1.
Таким образом, в обоих случаях имеем противоречие. Чтобы его избежать, нужно произвести логическое разграничение всего множества высказываний на два принципиально различных класса — А и В. В этом случае формальная запись первоначальной фразы будет иметь вид: А = “В = 0”; тогда при А = 1, В = 0 и при А = 0, В=1.
Рассмотрим приведенный ранее парадокс Рассела с точки зрения логики высказываний:
В одной из деревень жил парикмахер. Он брил всех тех жителей деревни, кто не брился сам.
Вопрос: может ли парикмахер побрить самого себя? Начинаем рассуждать: если парикмахер захочет побрить самого себя, то как житель этого селения, который бреется сам, он не вправе это сделать; но если парикмахер не станет бриться, то уже какжитель селения, который не бреется сам, он обязан будет себя побрить.
Выразим семантику этого противоречия формальным языком. Обозначим через А парикмахера и пусть Р(А, В) означает высказывание “А бреет В”. Тогда ситуацию, которую мы имеем в селении, можно описать двумя метавысказывания-ми:
1) Если Р(В, В) = 0, то Р(А, В) = 1.
2) Если Р(В, В) = 1, то Р(А, В) = 0.
Когда парикмахер рассматривается в качестве рядового жителя селения (А = В), оба метавысказывания становятся внутренне противоречивыми:
1) Если Р(А, А) = 0, то Р(А, А) = 1.
2) Если Р(А, А) = 1, то Р(А, А) = 0.
Выражение Р(А, В) может означать “А учит В”, “А развлекает В” и т.д. При этом под А понимается учитель, юморист и т.д. И хотя А, наряду с В, формально является объектной переменной, ее нельзя ставить на один уровень с В, так как именно относительно А сформулированы метавысказывания.
Рассмотрим один из способов доказательства в логике высказываний.
В булевой логике все доказательства строились на отношении эквивалентности. Даже если в множественньк выражениях и фигурировало отношение включения, что является частным случаем отношения порядка, то его мы переводили в тождество. Две логические функции считались эквивалентными, если они давали на соответствующих наборах аргументов абсолютно одинаковые значения нулей и единиц. При использовании формальной записи логических выражений отдельные звенья цепи любого доказательства там были связаны через символ равенства “=”. Отношение эквивалентности удовлетворяет трем законам:
рефлексивности: А = А;
симметричности: если А = В , то В = А;
транзитивности: если А = В и В = С, то А = С.
В логике
высказываний
все доказательства строятся на отношении
порядка,
т.е. на отношении, которое существует
между причиной и следствием. Здесь уже
отдельные звенья цепи доказательства
связаны символом импликации. Однако
символ импликации “ ->
” при
логическом выводе мы будем заменять
на символ “
”,
подобно тому, как в логике Буля
используются два символа эквивалентности
— “ ~ ” и “ = ”. Символ “ ~ ” является
объектным,
а “ = ” — субъектным.
Таким образом, следует различать язык
логики высказываний и метаязык
исследователя. Во избежание путаницы
введем еще два метасимвола:
вместо объектной
конъюнкции “&”
будем использовать субъектный
символ метаконъюнкции
— “ , ”, а вместо объектной
дизъюнкции
“
” — субъектную
метадизъюнкцию
“ ; ”. Тогда утверждение, которое
требуется доказать, в логике высказываний
оформляется в виде следующего
причинно-следственного
отношения:
,
(1)
где
— посылка
(причина), С — заключение (следствие).
Читается: “Если
посылки
истинны, то
заключение С
тоже истинно” или, по-другому: “Если
причины
имели
место, то
будет иметь место и следствие С”.
Чтобы не спутать объектное высказывание (предложение) с субъектным высказыванием, справедливость которого мы намереваемся установить, условимся предложения типа (1) называть клаузой (clause).
Клауза — это
метапредложение,
в котором использовано отношение
порядка, оформленное
через символ метаимпликации
“
”.
Как и отношение эквивалентности,
отношение порядка удовлетворяет трем
законам:
рефлексивности: А А;
антисимметричности: если А В , то
;транзитивности: если А В и В С, то А С.
В отличие от эквивалентности отношение порядка предполагает выполнение закона антисимметричности, который можно записать так:
если А В и В А, то А=В.
Клауза есть именно формальная запись доказываемого предложения. Вместо букв в ней можно подставить объектные высказывания, и тогда клауза наполняется конкретным содержанием, которое уже именуется семантикой или легендой. Пример клаузы:
.
Если принять, что
А = сверкнула молния, В = грянул гром, то можно составить следующую легенду:
Известно, что если сверкнула молния, то после этого грянет гром. Молния сверкнула. Следовательно, должен и грянуть гром.
Над субъектом, который формулирует метапредложения, может стоять другой субъект, для которого уже предложения первого субъекта окажутся объектными. Тогда клаузу (1) второй субъект или метасубъект запишет для себя следующим логическим выражением:
.
Преобразовав это выражение в дизъюнкт, получим:
.
Отсюда легко находим:
.
Поэтому клауза (1) может быть представлена в другой эквивалентной форме:
(2)
В силу коммутативности
конъюнкции на месте посылки
может оказаться любая другая, причем
не одна. Например, клауза:
может быть преобразована в другую эквивалентную форму:
(3)
Однако клауза (1) по сравнению с (2) и другими подобными формами, типа (3), имеет определенные преимущества и, в частности, используется в языке логического программирования ПРОЛОГ. Ее называют хорновской. Произвольную клаузу всегда можно свести путем эквивалентных преобразований к хорновскому виду.
Если символ метаимпликации “ ” клаузы (2) сместить в крайнее левое положение, то она превратится в тавтологию; если же его сместить в крайнее правое положение, то—в противоречие:
— тавтология,
-
противоречие.
