Министерство образования Российской Федерации Государственное образовательное учреждение высшего профессионального образ...
18 downloads
202 Views
596KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования Российской Федерации Государственное образовательное учреждение высшего профессионального образования
СЕВЕРО-ЗАПАДНЫЙ ГОСУДАРСТВЕННЫЙ ЗАОЧНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра компьютерных технологий и программного обеспечения
МАТЕМАТИЧЕСКАЯ ЛОГИКА И ТЕОРИЯ АЛГОРИТМОВ Рабочая программа Методические указания к изучению дисциплины Задания на контрольные работы
Факультет информатики и систем управления Направление и специальность подготовки дипломированного специалиста: 654600 – информатика и вычислительная техника 220100 – вычислительные машины, комплексы, системы и сети Направление подготовки бакалавра 552800 – информатика и вычислительная техника
Санкт-Петербург 2003
Утверждено редакционно-издательским советом университета УДК 512 Математическая логика и теория алгоритмов: Рабочая программа, методические указания к изучению дисциплины, задания на контрольные работы. – СПб.: СЗТУ, 2003. – 30 с. Рабочая программа разработана в соответствии с государственными образовательными стандартами высшего профессионального образования подготовки дипломированного специалиста 654600 – “Информатика и вычислительная техника” (Специальность 220100 – “Вычислительные машины, комплексы, системы и сети”) и направлению подготовки бакалавра 552800 – “Информатика и вычислительная техника”. Методический сборник содержит рабочую программу, методические указания к изучению дисциплины, тематический план лекций, перечень основной и дополнительной литературы, задания на контрольные работы и методические указания к их выполнению. Рабочая программа раскрывает содержание основных разделов дисциплины по изучению логики высказываний и предикатов, формальных теорий и теории алгоритмов. Методические указания к выполнению контрольных работ содержат методические материалы, необходимые для правильного их выполнения и оформления. Рассмотрено на заседании кафедры КТ и ПО 2 октября 2003 г., протокол №2 и одобрено методической комиссией факультета информатики и систем управления 20 октября 2003 г., протокол №2. Рецензенты: кафедра информатики и информационных систем СанктПетербургской государственной лесотехнической академии (СПбЛТА) (зав. кафедрой А.М.Заяц, канд.техн. наук); Г.А.Дидук д-р техн. наук, проф. кафедры процессов управления и информационных систем СЗТУ.
Составители: Г. И.Анкудинов, д-р техн. наук, проф.; И.В.Иванова, канд. техн. наук, доц.; И.А.Бригаднов, д-р физ.-мат. наук, проф.
© Северо-Западный государственный заочный технический университет, 2003
2
Предисловие В результате изучения дисциплины студенты должны знать основные законы логики высказываний и предикатов, а также равносильные преобразования логических выражений; уметь формулировать и решать на языке логики простые задачи; иметь представление о следующих разделах: нечеткая, модальная и темпоральная логика; метод резолюций и принципы логического программирования; аксиоматические системы, формальные теории и исчисления; элементы теории и методы оценки сложности алгоритмов. Полученные знания прежде всего необходимы для изучения таких дисциплин, как “Теория автоматов”, “Схемотехника” и “Организация ЭВМ и систем”, а также используются для анализа и проектирования аппаратных и программных средств вычислительной техники. Для изучения дисциплины “Математическая логика и теория алгоритмов” студенты должны быть знакомы с разделами дискретной математики, в которых рассматриваются понятия множества и отношения.
1. Содержание дисциплины 1.1. Содержание дисциплины по государственному образовательному стандарту Логика высказываний; логика предикатов; исчисления; непротиворечивость; полнота; синтаксис и семантика языка логики предикатов. Клаузальная форма. Метод резолюций в логике предикатов. Принцип логического программирования. Темпоральные логики; нечеткая и модальные логики; нечеткая арифметика; алгоритмическая логика Ч. Хоара. Логика высказываний. Логическое следование, принцип дедукции. Метод резолюций. Аксиоматические системы, формальный вывод. Метатеория формальных систем. Понятие алгоритмической системы. Рекурсивные функции. Формализация понятия алгоритма; Машина Тьюринга. Тезис Черча; Алгоритмически неразрешимые проблемы. Меры сложности алгоритмов. Легко и трудноразрешимые задачи. Классы задач P и NP. NP – полные задачи. Понятие сложности вычислений; эффективные алгоритмы. Основы нечеткой логики. Элементы алгоритмической логики. 3
1.2. Блок-схема дисциплины Введение в математическую логику и теорию алгоритмов
Логика высказываний Логика предикатов
Варианты логики
Клаузальная логика и логическое программирование
Формальные теории
Элементы теории алгоритмов
Исчисление высказываний Исчисление предикатов
Темпоральная логика
Алгоритмы и вычислимость Эффективность алгоритмов
Модальная логика
Нечеткая логика
1.3. Рабочая программа (100 часов) 1.3.1. Введение Цель курса. Организация учебного процесса. Рекомендуемая литература. Предмет курса, его цели и задачи. Связь с другими дисциплинами. 1.3.2. Логика высказываний [1] , с.3…14 Логические операции над высказываниями: дизъюнкция, конъюнкция, отрицание, импликация, эквивалентность. Составные высказывания и логические функции. Табличное и формульное задание логических функций. Дизъюнктивные и конъюнктивные нормальные формулы. Понятие тавтологии. Основные тавтологии. Равносильность формул исчисления высказываний. Понятие логического следования и импликанты. 1.3.3. Логика предикатов [1] , с.17…24 Определение предиката. Синтаксис и семантика языка логики предикатов Множество истинности n-местного предиката и n-местное отношение. 4
Логические операции над предикатами: дизъюнкция, конъюнкция, отрицание, импликация, эквивалентность предикатов. Универсальные и экзистенциональные высказывания. Логические операции квантификации: квантор всеобщности и квантор существования. Применение логики предикатов к анализу алгоритмов и алгоритмическая логика Ч. Хоара. 1.3.4. Варианты логики и логическое программирование [1] , с.27…36, 37…58 Модальная логика. Операторы необходимости и возможности. Варианты модальной логики. Нечеткие множества; понятие функции принадлежности (характеристической функции); основные операции. Нечеткие графы: определение; представление матрицами; нечеткие отношения и операции над ними. Нечеткая логика: аналоги булевой логики; особенности нечеткой логики; нечеткие переменные. Темпоральные логики для описания временных отношений между объектами (событиями) предметной области. Клаузальная форма. Метод резолюций в логике предикатов. Принцип логического программирования. Язык логического программирования Prolog. 1.3.5. Формальные теории [1] , с.14…16, 24…27 Аксиоматические системы. Правила вывода, доказательство и формальный вывод. Метатеория формальной теории. Полнота и непротиворечивость формальной теории. Исчисление высказываний как формальная теория. Правильно построенные формулы исчисления высказываний. Исчисление предикатов. Аксиомы классического и интуиционистского исчисления предикатов. Интерпретация формул исчисления предикатов. Общезначимые формулы исчисления предикатов. 1.3.6. Алгоритмы и вычислимость [1] , с.59…84 Формализация понятия алгоритма и алгоритмической системы. Тезис Черча. Машина Тьюринга. Примеры программ для машины Тьюринга. Элементы теории рекурсивных функций. Примитивно-рекурсивные и частично-рекурсивные функции. Принципы доказательства эквивалентности 5
класса частично-рекурсивных функций и функций вычислимых по Тьюрингу. Рекурсивные и рекурсивно-перечислимые множества. Алгоритмически неразрешимые проблемы. 1.3.7. Эффективность алгоритмов [1] , с.85…99 Переборные задачи и меры сложности алгоритмов. Сложность вычислений на машине Тьюринга. Легко- и трудноразрешимые задачи. Недетерминированные вычисления и классы задач P и NP. Класс NP-полных задачи (NPC-класс). Гипотеза о различии классов задач P и NPC. Задача выполнимости конъюнктивной нормальной формы (к.н.ф.) как пример универсальной NP-полной задачи. Труднорешаемые задачи (задачи экспоненциальной сложности). 1.3.8. Заключение Перспективы развития и применения методов дискретной математики, математической логики и теории алгоритмов в связи с распространением информационных технологий и производств для выпуска информационноемкой продукции. 1.4. Тематический план лекций для студентов очно-заочной формы обучения (16 часов) Тема лекции
Объем, ч
1. Введение в дисциплину. Логика высказываний . . . . . . . . . . . 2. Исчисление высказываний и формальные теории . . . . . . . . . 3. Логика и исчисление предикатов . . . . . . . . . . . . . . . . . . . . . . . 4. Логика предикатов и верификация алгоритмов . . . . . . . . . . . 5. Клаузальная логика и логическое программирование . . . . . . 6. Модальная, темпоральная и нечеткая логики . . . . . . . . . . . . . 7. Понятие алгоритма и вычислимость . . . . . . . . . . . . . . . . . . . . 8. Эффективность алгоритмов. Заключение . . . . . . . . . . . . . . . .
2 2 2 2 2 2 2 2
6
1.5. Темы практических занятий (12 часов) Тема практического занятия
Объем, ч
1. Формализация задач на языке логики высказываний и преобразование формул . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Формализация задач на языке логики предикатов и преобразование формул . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
3. Решение задач верификации алгоритмов и программ . . . . . . . . . . 4. Преобразование формул стандартной логики в клаузальную . . . . 5. Решение задач методом резолюций . . . . . . . . . . . . . . . . . . . . . . . . . 6. Преобразование формул модальной, темпоральной и нечеткой логики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 2 2 2 2
2. Библиографический список Основной: 1. Анкудинов Г.И., Анкудинов И.Г., Петухов О.А. Математическая логика и теория алгоритмов: Учеб. пособие.– 2-е изд. − СПб.: СЗТУ, 2003, 104 c. 2. Шоломов Л.А. Основы теории дискретных логических и вычислительных устройств: Учеб.пособие. – М.: Наука, 1980. – 400с. 3. Анкудинов Г.И., Золотов О.А., Петухов О.А. Логическое программирование на языке Prolog: Учеб.пособие. – СПб.: СЗТУ, 2001. – 172с. Дополнительный: 4. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. – М.: Мир, 1982. – 416с. 5. Заде Л. Понятие лингвистической переменной и его применение к принятию приближенных решений. – М.: Мир, 1976. – 150с. 6. Ковальски Р. Логика в решении проблем: Пер. с англ.- М.: Наука, 1990.– 280с. 7. Лингер Р., Миллс Х., Уитт Б. Теория и практика структурного программирования: Пер. с англ. – М.: Мир, 1982.− 406с. 8. Мендельсон Э. Введение в математическую логику. – М.: Наука, 1984. – 320с. 9. Минский М. Вычисления и автоматы. − М.: Мир, 1971. – 368с.
7
10. Новиков П.С. Элементы математической логики. – М.: Физматгиз, 1959. – 400с. 11. Формальная логика: Учеб.пособие / Под ред. И.Я.Чупахина, И.Н.Бродского. - Л.: Изд-во Ленингр. ун-та, 1977. – 360с.
3. Методические указания к изучению дисциплины 3.1. Логика высказываний Логика изучает формальные законы мышления. Для изучения дисциплины “Математическая логика и теория алгоритмов” требуется, чтобы студент владел базовыми понятиями теории множеств (множество, подмножество, отношение, функция и т. д.). В основе стандартной (классической) логики лежат логика высказываний (пропозициональная логика) и логика предикатов. Высказывание - это повествовательное предложение, в отношении которого имеет смысл утверждение об его истинности или ложности. Пример истинного высказывания: "Земля вращается вокруг Солнца". Пример ложного высказывания: "3 > 5". Поскольку предметом изучения логики являются только значения истинности высказываний, для них вводят буквенные обозначения A, B, C, ... . Считается, что каждое высказывание либо истинно, либо ложно. Для краткости, если это не приводит к недоразумениям, будем вместо значения истинно писать 1, а вместо значения ложно – 0. Например, A = "Земля вращается вокруг Солнца" и B = "3 > 5", причем A = 1 и B = 0. Высказывание не может быть одновременно истинным и ложным. Высказывания могут быть простыми и составными. Высказывания "Земля вращается вокруг Солнца" и "3 > 5" являются простыми. Составные высказывания образуются из простых с помощью связок естественного языка: НЕ, И, ИЛИ, ЕСЛИ-ТО, ТОГДА-И-ТОЛЬКО-ТОГДА. При использовании буквенных обозначений для высказываний эти связки заменяются специальными математическими символами, которые можно рассматривать как символы логических операций. В табл. 1 приведены варианты символов для обозначения связок и названия соответствующих логических операций.
8
Таблица 1 Связка
Варианты символов
Наименование операции
НЕ
⎤ ⎯ & /\ ⋅ \/ + → ↔ ~
отрицание конъюнкция дизъюнкция импликация эквивалентность
И ИЛИ ЕСЛИ-ТО ТОГДА-И-ТОЛЬКО-ТОГДА
Операция отрицания определяется следующим образом: если A истинно, то ⎯A ложно и наоборот. Остальные операции определяются табл. 2. Таблица 2 Операнды
Определение операции
A
B
A&B
A \/ B
A→B
A↔B
0
0
0
0
1
1
0
1
0
1
1
0
1
0
0
1
0
0
1
1
1
1
1
1
Следует обратить внимание, что конъюнкция A&B истинна тогда и только тогда, когда A и B одновременно истинны, а в остальных случаях ложна. Конъюнкцию также иногда именуют логическим произведением. Дизъюнкция A\/B ложна тогда и только тогда, когда A и B одновременно ложны, а в остальных случаях истинна. Дизъюнкцию также иногда именуют логической суммой. Импликация A→B истинна тогда и только тогда, когда A=1, а B=0. Существуют варианты чтения импликации A→B : "Если A, то B"; "То, что A, влечет то, что B"; "A только тогда, когда B"; "То, что A, есть достаточное условие того, что B"; "Чтобы A, необходимо, чтобы B". Эквивалентность A↔B истинна тогда и только тогда, когда значения истинности A и B совпадают. С помощью логических операций, определенных выше, можно из простых высказываний строить формулы логики высказываний, представляющие различные составные высказывания. Например, из высказываний A, B и C можно построить составные высказывания⎤(A & B) \/ C 9
и A → [ B ↔ (A \/ C)]. Логическое значение составного высказывания зависит от структуры высказывания, выраженной формулой, и логических значений образующих его элементарных высказываний. Например, если A = 0, B = 1 и C = 0, то ⎤(A & B) \/ C = ⎤(0 & 1) \/ 0 =⎯0 \/ 0 =1 \/ 0= 1 и A → [B ↔ (A \/ C)] = 0 → [1 ↔ (0 \/ 0)] = 0 → [1 ↔ 0] = 0 → 0 = 1. Для систематического изучения формул, выражающих высказывания, вводят переменные высказывания P, P1, P2, ..., PN, принимающие значения из множества {0, 1}. Формула логики высказываний Ф(P1, P2,..., PN) называется тавтологией или тождественно истинной, если ее значение для любых значений P1, P2,..., PN есть 1 (истина). Некоторые тавтологии играют большую роль в логике и поэтому называются законами: законы рефлексивности P ↔ P, закон исключенного третьего ⎯P \/ P, закон отрицания противоречия ⎤(⎯P & P), закон двойного отрицания ⎤ ⎤P↔ P, законы де-Моргана ⎤(P1 & P2) ↔ (⎯P1 \/⎯P2) и ⎤(P1 \/ P2) ↔ (⎯P1 &⎯P2), а также другие. Операции → и ↔ можно выразить через операции ⎤ , & и \/: P1→ P2 =⎯P1 \/ P2 и P1 ↔ P2 = ( P1 → P2) & ( P2 → P1). Множество формул логики высказываний, операций {⎤ , &, \/}и констант {0, 1} образуют алгебру высказываний (булеву алгебру). Алгебра высказываний содержит все формулы логики высказываний, поскольку операции → и ↔ можно рассматривать как сокращения при записи формул в базисе {⎤ , &, \/}: ⎤P1\/ P2 = P1→ P2 , (⎤P1\/ P2)( P1\/ ⎤P2) = P1↔ P2 и (⎤P1 &P2 ) \/ (P1&⎤P2 )= P1↔ P2. На множестве формул логики высказываний можно определить семантические (смысловые) отношения равносильности и следования. Эти отношения играют важную практическую роль при упрощении логических выражений и построении корректных логических выводов. Две формулы логики высказываний Ф1(P1, ..., PN) и Ф2(P1, ..., PN) называются равносильными, если они принимают одинаковое значение для любых значений P1, ..., PN. Две равносильные формулы имеют одну и ту же таблицу истинности и, наоборот, формулы, имеющие одну и ту же таблицу истинности, равносильны. 10
Условие равносильности формул выражает теорема: формулы Ф1(P1,..., PN) и Ф2(P1, ..., PN) равносильны тогда и только тогда, когда их эквивалентность Ф1(P1, ..., PN) ↔ Ф2(P1, ..., PN) является тавтологией. Отношение равносильности обозначается символом ⇔. Формула Ф2(P1,...,PN) логически следует из формулы Ф1(P1,...,PN), или Ф1(P1,...,PN) ⇒ Ф2(P1,...,PN), если Ф2(P1,...,PN) истинна на всех наборах значений P1,...,PN, на которых Ф1(P1,...,PN) истинна. Логическое следование Ф1⇒Ф2 означает, что из истинности Ф1 следует истинность Ф2, но если Ф1 ложна, то относительно Ф2 ничего сказать нельзя. Отношение следования формул выражает теорема: Ф1(P1,...,PN) ⇒ Ф2(P1,...,PN) тогда и только тогда, когда импликация Ф1(P1,...,PN)→ Ф2(P1,...,PN) является тавтологией. 3.2. Логика предикатов Предикат это повествовательное предложение, содержащее предметные (индивидные переменные), замена которых на константные значения превращает рассматриваемое предложение в высказывание – истинное или ложное. Другими словами, выражение A(x1, x2, ..., xn), содержащее предметные переменные x1 ∈ M1, x2 ∈ M2,..., xn ∈ Mn, называется n-местным предикатом, если оно выражает некоторое n-местное отношение на множествах M1, M2, ..., Mn. Например, если x, y – предметные переменные, принимающие значения из множества M={Солнце, Земля, Луна, Марс}, то предложение "x вращается вокруг y " можно рассматривать как 2-местный предикат P(x, y). Множество истинности P(x, y) это множество упорядоченных пар (кортежей) rP = {(Земля, Солнце), (Луна, Земля), (Марс, Солнце)}, на которых P(x, y)=1. Множество rP выражает бинарное отношение на множестве M небесных тел, например, “Земля rP Солнце ”. Можно сказать, что P(x, y) – это предикат отношения rP. Предикат называется а) тождественно истинным, если значение его для любых аргументов есть "истина"; б) тождественно ложным, если значение его для любых аргументов есть "ложь"; в) выполнимым, если существует, по крайней мере, одна система его n аргументов, для которой значение предиката есть "истина". Например, предикат "x + y = y + x" является тождественно истинным, предикат "x + 1= x" – тождественно ложным, предикат "x + y = 5" – выполнимым. 11
Для построения формул логики предикатов используются логические операции отрицания, конъюнкции и дизъюнкции. Отрицанием предиката A(x1,x2,...,xn) называется новый n-местный предикат ⎯A(x1,x2,... xn), множество истинности которого является дополнением множества истинности предиката A(x1,x2,...,xn). Рассмотрим предикаты A(x1,x2,...,xn) и B(x1,x2,...,xn), определенные на M1×M2×...×Mn. Конъюнкцией предикатов A(x1,x2,...,xn) и B(x1,x2,...,xn) называется новый n-местный предикат C(x1,x2,...,xn) = A(x1,x2,...,xn) & B(x1,x2,...,xn), множество истинности которого есть пересечение множеств истинности A(x1,x2,..., xn) и B(x1,x2,..., xn). Дизъюнкцией предикатов A(x1,x2,...,xn) и B(x1,x2,...,xn) называется nместный предикат D(x1,x2,...,xn) = A(x1,x2,...,xn) \/ B(x1,x2,...,xn), множество истинности которого есть объединение множеств истинности A(x1,x2,...,xn) и B(x1,x2,...,xn). Пусть A(x) – одноместный предикат, определенный на множестве M. Универсальным высказыванием, соответствующим A(x), называется высказывание "каждый элемент множества M удовлетворяет предикату A(x)", которое будем обозначать ∀x A(x). Высказывание ∀x A(x) считается истинным, если предикат A(x) тождественно истинный, и ложным - в противном случае. Символ ∀x называется квантором всеобщности по переменной x, его читают: "для всех x" или "для каждого x" или "для любого x". Выражение ∀x A(x) читается: "для всех x, A (x)" или "для каждого x, A(x)". Например, ∀x(x=x) – это истинное универсальное высказывание, а ∀x(x > 2) – ложное универсальное высказывание. Если A(x) – одноместный предикат, определенный на конечном множестве {a1,a2,...,am}, то ∀x A(x) = [A(a1) & A(a2) & ... & A(am)]. Таким образом, квантор всеобщности можно понимать как оператор конъюнкции по квантифицируемой переменной. Экзистенциональным высказыванием, соответствующим предикату A(x), называется высказывание "существует элемент множества M, удовлетворяющий предикату A(x)", которое обозначается ∃x A(x), и считается истинным, если предикат A(x) выполнимый, и ложным - в противном случае.
12
Символ ∃ называют квантором существования, а выражение ∃x, в котором этот квантор предшествует переменной x, читают: "существует x такой, что ..." или "для некоторого x, ...". Например, выражение ∃x A(x) читается: "существует x такой, что A(x) " или "для некоторого x, A(x)". Например, ∃x(x>2) – истинное экзистенциональное высказывание, а ∃x(x=x+1) – ложное экзистенциональное высказывание. Если A(x) - одноместный предикат, определенный на конечном множестве {a1,a2,...,am}, то ∃x A(x) ↔ [A(a1) \/ A(a2) \/ ... \/ A(am)]. Таким образом, квантор существования можно понимать как оператор дизъюнкции по квантифицируемой переменной. Пример. Рассмотрим классическое определение Вейерштрасса непрерывности вещественной функции одного вещественного аргумента. А именно, функция f(x) называется непрерывной в точке x, если для любого ε > 0 найдется δ > 0, такое, что для всех x, принадлежащих δ-окрестности точки x0, ε-окрестности точки f(x0). Введем значения функции f принадлежат множество M = {x > 0}. Тогда на M можно построить предикат ∀ε (∃δ A(δ))→B(ε), где A(δ) = {x∈( x0-δ, x0+δ)}и B(ε) = { f(x0)- ε, f(x0)+ ε}. К n-местному предикату можно применить n кванторов. Применение одного квантора к n-местному предикату (n≥1) дает (n-1)- местный предикат. На множестве формул логики предикатов, так же как и логики высказываний, можно определить семантические отношения равносильности и следования. Логика предикатов может быть использована для верификации (доказательства правильности) алгоритмов и программ. Принципы верификации (доказательства правильности) алгоритмов и программ имеют важное практическое значение. Создание и весь последующий жизненный цикл надежного программного обеспечения для современных информационновычислительных систем – многоэтапный и трудоемкий процесс, который упрощенно можно охарактеризовать как перевод требований технического задания сначала в точные спецификации и, наконец, в текст программы. В основе верификации программ – анализ действия программ над данными. Для каждого исходного состояния данных X, для которого выполнение завершается, результирующее состояние данных Y является 13
определенным. Это значение Y единственно для данного X, поэтому множество всех упорядоченных пар (X,Y) определяет функцию, которую будем называть программной функцией. Мы будем использовать символьные вычисления, чтобы получить аналитическое выражение программной функции для исследуемой программы. Программную функцию f для простой программы P обозначим через [P] и определим выражением [P]={(X,Y)⎥ Y=f(X)}, где X – состояние поля данных до выполнения P, Y - состояние поля данных после выполнения P, {(X,Y) ⎥ Y=f(X)} - множество пар (X,Y), таких, что Y=f(X). 3.3. Варианты логики и логическое программирование Модальная логика изучает структуру и законы построения рассуждений, содержащих так называемые модальности, выражаемые в естественном языке словами “необходимо”, “возможно”, “мочь” и т.д. Наряду с пропозициональными связками классического исчисления высказываний (⎤, \/, &), в модальной логике для выражения модальностей используются модальные операторы: оператор необходимости (обозначается символом ! и читается: “необходимо, чтобы …”) и оператор возможности (обозначается символом " и читается: “возможно, что …”). При описании сложных систем часто приходится использовать нечеткие понятия и рассуждения, и классическая логика оказывается в таких случаях неадекватной. Для формализации таких задач Заде разработал основы математического аппарата, опирающегося на понятия нечетких множеств и нечеткой логики. Для нечетких множеств вводится характеристическая функция µA(x), которая характеризует “степень истинности” утверждений типа “x∈A” для ∀x∈M. Характеристическая функция может принимать любые значения из интервала [0,1]. Пусть A и B – нечеткие множества, тогда для истинности нечеткого высказывания “x∈A и x∈B” вводится нечеткая конъюнкция: a & b = min{a,b}, где a=µA(x), b=µB(x). Нечеткая дизъюнкция вводится соотношением: a \/ b = max{a,b}. Нечеткое отрицание определяется формулой: ⎯a = 1 – a. Нечеткая логика имеет прямое отношение к теории вероятностей. Темпоральная логика (логика времени) используется для описания временных отношений между объектами (событиями) предметной области. Рассматривается множество T={t1, t2, t3…} моментов времени и множество 14
E={e1, e2, …, en} событий. Предполагаются естественные свойства времени: однонаправленность, линейность, непрерывность, бесконечность, гомогенность (однородность). На множестве событий зададим временные отношения: r0 – происходить одновременно, r1 – быть раньше, r2 – быть позже, r3n,L – быть раньше на n единиц времени по шкале L, r4L t – происходить в момент t по шкале L. Для решения задач используется множество правил вывода (продукций) вида α, β⎥−γ. Каждое правило позволяет выводить отношение γ из отношений α и β . Спецификация (определение) семантики программ средствами логики открывает путь к верификации (доказательству правильности) и синтезу алгоритмов и программ (алгоритмическая логика Хоара). Идея определения семантики программ средствами логики воплощена в логическом программировании, использующем клаузальную логику, и реализована в языке PROLOG. Клаузальная логика – это форма стандартной (классической) логики предикатов и отличается от нее системой обозначений. При записи предложений в клаузальной форме кванторы в явном виде не указываются, но предполагается, что все переменные связаны квантором всеобщности. Клауза (от англ. clause – предложение) общего вида записывается следующим образом: B1,...,Bm ← A1,...,An, где B1,...,Bm, A1,...,An – это атомарные формулы (n≥0, m≥0), A1,...,An – это совместные посылки клаузы, а B1,...,Bm − это альтернативные заключения. В стандартной форме клауза равносильна записи A1 & ...& An → B1 ∨ ... ∨ Bm. Таким образом, запятые в посылке клаузы означают конъюнктивные связки между предложениями, составляющими посылку, а запятые в заключении клаузы символизируют дизъюнктивные связки между предложениями, составляющими посылку. Множество клауз невыполнимо, если из него можно вывести пустое предложение (обозначаемое символом 8). 3.4. Формальные теории Доказательство тождественной истинности, семантических отношений равносильности и следования для формул логики высказываний и предикатов
15
можно свести к последовательности символьных преобразований соответствующих формул. Этим занимается раздел логики, в котором изучаются формальные теории (дедуктивные системы, исчисления). Идея заключается в том, чтобы доказательство того, что некоторая формула является тавтологией, свести к конечной последовательности формальных символьных преобразований логических формул. Формальная теория это а) множество правильно построенных формул или выражений, определяющих язык теории; б) (ППФ), подмножество формул множества ППФ, называемых аксиомами теории; в) правила вывода, т.е. конечное множество отношений между формулами. Доказательством называется конечная последовательность формул Ф1,...,Фn, такая, что каждая Фi есть либо аксиома, либо получена из предыдущих формул по одному из правил вывода. Теоремой называется такая формула теории Ф, что существует доказательство Ф1,...,Фn, где Фn=Ф. Аксиоматическая теория противоречива, если в ней могут быть доказаны как Ф, так и "не Ф". Аксиоматическая теория полна (по Посту), если присоединение к ее аксиомам формулы, не являющейся теоремой, делает теорию противоречивой. Интерпретацией формальной теории в содержательную теорию называется соответствие теорем формальной теории истинным утверждениям содержательной теории. Интерпретация называется правильной, если каждой теореме формальной теории ставится в соответствие истинное утверждение содержательной теории. Интерпретация называется адекватной, если она правильная и каждому истинному утверждению содержательной теории ставится в соответствие теорема формальной теории. Аксиоматическая теория разрешима, если для любой ППФ Ф существует процедура (алгоритм), которая за конечное число шагов позволяет определить, является ли Ф теоремой теории. Для изучения той или иной формальной теории приходится пользоваться мета-языком, т.е. естественным языком, дополненным общеупотребительными математическими символами, по отношению к которому язык изучаемой теории (множество ППФ) является языком-объектом. Примером формальной теории для логики высказываний может служить исчисление высказываний, построенное на основе схем аксиом: A→(B→A), (A→ (B→C)) → ((A→B) → (A→C)) и 16
(⎤A→⎤B) → ((⎤A→B) →A). Исчисление высказываний имеет два правила вывода:
Ф( A) Ф, Ф → B (ПП) и (MP), Ф(B ) B где Ф(А), Ф(В) – формулы исчисления высказываний, содержащие подформулы А и В соответственно, ПП – правило подстановки, MP – правило Modus Ponens (правило заключения). В записи правил вывода над чертой располагаются формулы, называемые посылкой правила, из которых непосредственно следуют формулы, стоящие под чертой и называемые заключением правила. Правило подстановки позволяет заменять в ППФ все вхождения некоторой буквы на другую букву. Правило Modus Ponens (MP) позволяет выводить формулу B из формул Ф и Ф→B. Интерпретацией исчисления высказываний является логика высказываний. Нетрудно проверить, что аксиомы исчисления высказываний являются тавтологиями логики высказываний. Исчисление высказываний непротиворечиво, полно и разрешимо. Формальной теорией для логики предикатов является исчисление предикатов. Исчисление предикатов строится на основе исчисления высказываний. Вводятся символы двух видов: предметные переменные (x,y,z,x1,x2...) и предикатные буквы (P,Q,R,P1,P2,...). Из предикатных букв, предметных переменных, логических символов и скобок можно сформировать различные выражения, некоторые из которых называются формулами. Формулами исчисления предикатов являются а) предикатные буквы со следующими в скобках предметными переменными; б) выражения ⎤(Ф), (Ф1)&(Ф2), (Ф1)\/(Ф2), (Ф1)→(Ф2), (Ф1)↔(Ф2), ∀x Ф(x) и ∃x Ф(x), где Ф, Ф1, Ф2 – некоторые формулы; x – некоторая индивидная переменная. Предметная переменная называется свободной, если она не следует непосредственно за квантором и не входит в область действия квантора по этой переменной, все другие переменные, входящие в формулу, называются связанными. Аксиомы и правила вывода исчисления предикатов можно получить расширением состава аксиом и правил вывода исчисления высказываний. Для этого дополним схемы аксиом исчисления высказываний двумя схемами аксиом для исчисления предикатов: ∀x Ф(x) → Ф(x) и Ф(x) → ∃x Ф(x). Дополним правила вывода двумя правилами исчисления предикатов: 17
Ф( x) → B (∃xФ ( x )) → B
и
B → Ф( x) , B → (∀xФ ( x))
где B не содержит x. Интерпретацией формулы исчисления предикатов называется конкретизация множеств, из которых принимают значения предметные переменные и конкретизация отношений и соответствующих множеств истинности для каждой предикатной буквы. Формула исчисления предикатов называется общезначимой, если она тождественно истина при любой интерпретации. Общезначимая формула исчисления предикатов получается из тавтологии исчисления высказываний при замене входящих в нее пропозициональных букв предикатными буквами с произвольным числом приданных предметных переменных. В качестве примера общезначимых формул приведем законы де-Моргана для кванторов: ⎤∀x P(x) ↔ ∃x P(x) и ⎤∃x P(x) ↔ ∀x P(x). Интерпретация исчисления предикатов в логику предикатов адекватна, однако при разрешении этого вопроса не удается ограничиться средствами конечной мета-теории. Рассматриваемое классическое исчисление предикатов непротиворечиво и полно, но в то же время оно неразрешимо. В силу теоремы Геделя о полноте в классическом исчислении предикатов выводимы все классически общезначимые формулы и только они. Можно сказать, оно полуразрешимо: доказательство формулы Ф, являющейся теоремой, может быть выполнено за конечное число шагов. Если же формула не является теоремой, процесс выполнения процедуры доказательства может длиться бесконечно. 3.5. Алгоритмы и вычислимость Понятия разрешимости тех или иных задач связаны с понятием алгоритма. Интуитивное представление об алгоритме как о формальном предписании, которое определяет совокупность операций и порядок их выполнения для решения всех задач какого-либо типа, существует в математике с давних времен. Под алгоритмом обычно понимается точное предписание, определяющее детерминированный и результативный процесс решения множества задач определенного класса (массовость алгоритма).
18
Математика накопила большое число алгоритмов для решения разнообразных задач. В то же время попытки решения ряда задач натолкнулись на трудности, которые не удалось преодолеть. Возникла необходимость доказать существование алгоритма (алгоритмическую разрешимость) или принципиальную невозможность построения алгоритма (алгоритмическую неразрешимость) для ряда важных задач. Для устранения нечеткости интуитивного понятия алгоритма были предложены точные математические модели алгоритма: машина Тьюринга, система рекурсивных функций Клини, нормальный алгоритм А.А.Маркова, схема Колмогорова-Успенского, лямбда-конверсии Черча, финитные комбинаторные процессы Поста. А.Черч впервые обосновал положение о том, что все уточнения понятия алгоритма эквивалентны ("тезис Черча"), т.е. правильно отражают интуитивное представление об алгоритмах, сложившееся в математике. С помощью этих моделей алгоритма доказана алгоритмическая неразрешимость ряда важных задач математики и вычислительной техники и, в частности, неразрешимость проблемы останова универсальной вычислительной машины, реализующей любой алгоритм. Например, из алгоритмической неразрешимости проблемы останова следует важный практический вывод: невозможно создать универсальную отладочную программу для обнаружения возможности зацикливания отлаживаемой программы. Выше было сказано, что алгоритмически неразрешимой оказалась проблема выводимости в исчислении предикатов: для любых формул P и Q узнать, существует ли дедуктивная цепочка, ведущая от P к Q. Однако для исчисления высказываний и одноместных предикатов проблема выводимости разрешима. Алгоритмическая неразрешимость некоторой задачи означает, что не существует общего алгоритма, решающего любую задачу рассматриваемого класса, однако для отдельных подклассов алгоритмически неразрешимой задачи может существовать алгоритм. Не следует смешивать алгоритмическую неразрешимость какой-либо проблемы с положением, когда некоторая проблема еще не решена. Для нерешенных проблем остается надежда найти разрешающий алгоритм, тогда как для алгоритмически неразрешимых проблем любые попытки поиска алгоритма бесполезны.
19
3.6. Эффективность алгоритмов Сложность вычислений и эффективность алгоритмов составляют одну из важнейших проблем современной теории вычислительных систем. Изучение основ современных методов оценки сложности задач и эффективности алгоритмов полезно для развития интуитивных представлений об эффективном (с точки зрения стоимости) использовании вычислительных машин и для выработки практических навыков оценки потребности в вычислительных ресурсах (таких, как память и время), необходимых при наиболее благоприятных условиях для вычисления функции данной сложности на универсальных вычислительных машинах. Для большинства дискретных задач решение может быть найдено посредством некоторого переборного процесса. Ограничимся рассмотрением массовых задач распознавания. Массовая задача распознавания Π – это множество Zп всевозможных индивидуальных задач и подмножество Zп.да ⊂ Zп задач с ответом “да”. Множество текстов задачи Π с ответом из множества Zп.да при выбранном способе кодирования Κ будем рассматривать как язык L(Π,Κ). Задача распознавания Π называется переборной, если каждая индивидуальная задача z формулируется следующим образом: существует ли такой объект y, что выполняется свойство, выражаемое предикатом R(z,y)? При этом предполагается, что проверка истинности R(z,y) имеет полиномиальную сложность. Это означает, что число шагов для проверки истинности R(z,y) ограничено некоторым полиномом от размерности индивидуальной задачи (z,y), выражаемой длинами записи l(z) и l(y) исходных данных z и y, соответственно, при некотором разумном способе кодирования. Например, равносильность двух формул алгебры логики от n переменных можно установить вычислением значения истинности сравниваемых формул на 2n двоичных наборах. Число шагов переборной задачи зависит экспоненциально от размерности задачи. В теории переборных задач предполагается существование недетерминированного алгоритма, который выполняется в два этапа. На первом этапе он просто угадывает правильное решение, а на втором − выполняет проверку правильности за полиномиальное число шагов. Все массовые переборные задачи образуют NP-класс – множество задач, решаемых недетерминированным алгоритмом за полиномиальное время. Оказывается, что для некоторых переборных задач из класса NP удается устранить перебор и построить алгоритм решения, число шагов которого 20
зависит полиномиально от размерности задачи. Все такие массовые задачи образуют класс P задач полиномиальной сложности. Для других массовых задач за все время развития вычислительной техники полиномиальных алгоритмов не найдено. Означает ли это, что P ≠NP и P⊂NP? Ответ до сих пор не найден, однако весь накопленный практический опыт свидетельствует, что гипотеза P ≠NP скорее всего верна и, следовательно, существует класс задач NPC=NP \ P (здесь знак «\» означает разность множеств). Задачи из класса NPC называются NP-полными. NPполная задача называется универсальной, если к ней сводится любая NP-полная задача. Задача выполнимости конъюнктивной нормальной формы (к.н.ф.) заключается в следующем. Задана некоторая к.н.ф., например f(x1,x2,x3,x4,x5)= (x1 ∨⎯x2 ∨ x3 ∨⎯x4 ∨⎯x5)⋅(⎯x1 ∨ x2 ∨⎯x3 ∨ x4 ∨ x5)⋅ (⎯x1 ∨⎯x2 ∨⎯x4 ∨ x5)⋅(⎯x1 ∨ x2 ∨⎯x3 ∨⎯x4)⋅( x1 ∨⎯x2 ∨ x3 ∨⎯x4 ∨⎯x5). Требуется установить, что хотя бы на одном двоичном наборе значений переменных функция f(x1,x2,x3,x4,x5) принимает значение 1. Можно доказать, что массовая задача выполнимости к.н.ф. является универсальной переборной задачей. Это означает, что если удастся найти полиномиальный алгоритм для массовой задачи выполнимости к.н.ф., то P = NP.
4. Тестовые вопросы - Дайте определение логических операций отрицания, дизъюнкции, конъюнкции, импликации и эквивалентности. - Каким образом дизъюнкция выражается через конъюнкцию и отрицание? - Каким образом импликация выражается через дизъюнкцию и отрицание? - Каким образом эквивалентность выражается через дизъюнкцию, конъюнкцию и отрицание? - Определите понятие тавтологии. - Дайте определение логического следования и равносильности формул логики высказываний.
21
- Каким образом связаны понятия импликации и логического следования формул логики высказываний? - Каким образом связаны понятия эквивалентности и равносильности формул логики высказываний? - Определите понятие предиката и множества истинности предиката. Охарактеризуйте связь этого понятия с понятием отношения. - Дайте определение логических операций отрицания, дизъюнкции, конъюнкции, импликации и эквивалентности над предикатами. - Дайте определение логических операций квантификации предикатов посредством кванторов всеобщности и существования. Как взаимосвязаны кванторы всеобщности и существования? - Охарактеризуйте модальную, темпоральную и клаузальную логики. - Дайте определение понятий формальной теории, доказательства и теоремы. - Дайте определение интерпретации формальной теории в содержательную. - Определите понятие алгоритма, эффективности алгоритмов и алгоритмической разрешимости. - Для чего используются математические модели алгоритма? Приведите примеры таких моделей. - Дайте определение переборной задачи и охарактеризуйте современные представления о задачах полиномиальной и экспоненциальной сложности.
5. Задания на контрольные работы и методические указания к их выполнению 5.1.
Задания на контрольные работы
Студент получает от преподавателя номер варианта задания на контрольные работы по курсу МЛТА. Текст задания генерируется с помощью программы MLTA2003.EXE. Для этого программа MLTA2003.EXE переводится в режим ЗАДАНИЕ. Например, вариант #1 задания, сгенерированного программой MLTA2003.EXE, выглядит как показано на рис.1. Контрольная работа 1 содержит задачи 1, 2 и 3, а контрольная работа 2 – задачи 4, 5 и 6.
22
Кафедра компьютерных технологий и ПО, СЗТУ МАТЕМАТИЧЕСКАЯ ЛОГИКА И ТЕОРИЯ АЛГОРИТМОВ - Вариант #1: MLTA3000 Студент - Ф.и.о.: Шифр: Задание на контрольную работу 1 I. Упростить формулы исчисления высказываний: 1) ((-q&-s) ~ -s) ~ (-s -> -q) 2) ((-v&-q) -> -r) ~ (-v -> (-q -> -r)) 3) ((q&-s) -> -p) ~ (-q -> (-s -> -p)) 4) ((-v -> -q)&(-v -> -r)) -> (-v -> (-q&-r)) 5) (-s\/q)(-p\/q\/r)(p\/-q)(-p\/-q\/-s)(-r\/s\/-q)(q\/s\/p)(s\/-r\/-p) 6) -((v&-q)&(-v\/-r)) 7) (-q\/-p\/s)(-p\/q\/r)(-s\/q)(p\/q\/s)(p\/-q)(s\/-p\/-r)(-q\/-p\/-s) 8) (-v -> (-q -> -r)) -> ((-v -> -q) -> (-v -> -r)) 9) (q\/r\/-p)(s\/q\/p)(s\/r\/-q)(-r\/s\/-p)(-s\/q)(-q\/p)(-q\/-p\/-s) 10) (-v -> -q) -> ((-r -> -q) -> ((-v&-r) -> -q)) 11) (-q\/-p\/s)(q\/-s)(-s\/-p\/-q)(r\/q\/-p)(p\/-q)(q\/s\/-r)(s\/-r\/-p) 12) ((-v -> -q)\/(-v -> -t)) -> (-v -> (-q\/-r)) II. Даны высказывания: 1) ЧТОБЫ N ДЕЛИЛОСЬ НА 10 ДОСТАТОЧНО,ЧТОБЫ N ДЕЛИЛОСЬ НА 5. 2) N НЕ ДЕЛИТСЯ НА 5 TOЛЬKO TOГДА, KOГДA N НЕ ДЕЛИТСЯ НА 10. 3) TO,ЧTO N ДЕЛИТСЯ НА 5 ЕСТЬ НЕОБХ.УСЛОВИЕ ТОГО,ЧТОБЫ N ДЕЛИЛОСЬ НА 10. 4) N ДЕЛИТСЯ НА 5 ТОГДА И ТОЛЬКО ТОГДА,КОГДА N ДЕЛИТСЯ НА 10. 5) TO,ЧTO N НЕ ДЕЛИТСЯ НА 5 ВЛЕЧЕТ TO, ЧTO N НЕ ДЕЛИТСЯ НА 10. Какие из них следуют из высказывания 6) TO,ЧTO N ДЕЛИТСЯ НА 10 ВЛЕЧЕТ TO, ЧTO N ДЕЛИТСЯ НА 5. III. Дано универсальное множество = {j,i,k,h,b,g,a,f,c,e,d} и два подмножества I={k,f,b,a,g,h} и F={c,a,f,d,e,g}; два предиката B(x)=" x принадлежит I" и A(x)=" x принадлежит F". Найдите область истинности предикатов: P1(x)=B(x)\/A(x); P2(x)=B(x)~A(x); P3(x)=B(x)&A(x); P4(x)=B(x)->A(x) Задание на контрольную работу 2 IV. Найдите значения истинности формул, если B(x) и A(x) имеют интерпретацию из задачи III: 1) (Av)(-B(v) -> A(v)) ~ (-Ev)(-B(v)&-A(v)) 2) (-Ay)(B(y) -> -A(y)) ~ (-Ey)(B(y)&A(y)) 3) (Aq)(-B(q) -> -A(q)) ~ (-Eq)(-B(q)&A(q)) 4) (-At)(B(t) -> A(t)) ~ (-Et)(B(t)&-A(t)) 5) (-Aw)(-B(w) -> -A(w)) ~ (Ew)(-B(w)&-A(w)) 6) (-Az)(B(z) -> A(z)) ~ (-Ez)(-B(z)&A(z)) 7) (Ar)(-B(r) -> -A(r)) ~ (Er)(-B(r)&A(r)) 8) (Au)(B(u) -> -A(u)) ~ (-Eu)(-B(u)&A(u)) V. Определите функцию последовательности 3 присваиваний: Q:= -R-3*P; R:= Q+3*P; P:= 2*Q-2*R VI.Определите функцию последовательности 2 усл.операторов: IF Q<2 THEN Q:=2*Q-P ELSE IF P<-2 THEN P:=-2*Q+P; IF P<-5 THEN P:=-Q-3*P ELSE Q:=Q+3*P; Преподаватель:
Дата:
Рис. 1
В тексте задания используются следующие обозначения логических связок: “->” для импликации, “~” для эквивалентности, “\/” для дизъюнкции и знак минус “-“ для отрицания. Для обозначения кванторов всеобщности и существования используются символы “A” и “E” соответственно. 23
5.2. Методические указания к выполнению контрольной работы 1 В задаче 1 требуется упростить формулу исчисления высказываний, т.е. получить формулу равносильную исходной, но содержащую, по возможности, меньшее число пропозициональных букв и символов логических операций. Например, дана формула: (X1 ∨ X2 ∨ X3) & (X1 ∨ ⎤ X2 ∨ X3) & (X1 ∨ ⎤X3) & (⎤X2 ∨ X3 ∨ X4) & (⎤X1 ∨ ⎤X2 ∨ ⎤ X3) & (⎤X1 ∨ X3 ∨ ⎤ X4) & (⎤X1 ∨ X2). Предлагается следующая форма записи преобразований: в исходной или промежуточной формуле отмечаем подформулы, к которым применяется преобразование, номером равносильности, которая используется для упрощения формулы. Для этого студент должен выписать те равносильности, которые он использует, перенумеровать их и ссылаться на эту нумерацию при их использовании в контрольной работе. Применим к первым двум подформулам (X1 ∨ X2 ∨ X3) и (X1 ∨⎤X2 ∨X3) равносильность (P1 ∨ P2) & (P1 ∨⎤P2) ⇔P1, (1) считая P1 = X1 ∨ X3 и P2 = X2, тогда их можно заменить одной подформулой (X1 ∨ X3), что дает более простую формулу, равносильную исходной: (X1 ∨ X3) & (X1 ∨⎤X3) & (⎤X2 ∨ X3 ∨ X4) & (⎤X1 ∨ ⎤ X2 ∨ ⎤ X3) & (⎤X1 ∨ X3 ∨ ⎤ X4) & (⎤X1 ∨ X2). К подформулам (X1 ∨ X3) и (X1 ∨ ⎤X3) снова применим равносильность (1) и получаем еще более простую формулу, равносильную исходной: X1 & (⎤X2 ∨ X3 ∨ X4) & (⎤X1 ∨ ⎤X2 ∨ ⎤ X3) & (⎤X1 ∨ X3 ∨⎤X4) & (⎤X1 ∨ X2) и т.д. Используем далее равносильности P1&(⎤P1 ∨ P2) ⇔ P1& P2, (2) P&⎤P ⇔ 0, (3) P& 0 ⇔ 0. (4) Для рассматриваемой формулы запись всех упрощений может иметь, например, следующий вид: (X1 ∨ X2 ∨ X3)1 & (X1 ∨ ⎤X2 ∨ X3)1 & (X1 ∨ ⎤X3) & (⎤X2 ∨ X3 ∨ X4) & (⎤X1 ∨ ⎤X2 ∨ ⎤X3) & (⎤X1 ∨ X3 ∨ ⎤X4) & (⎤X1 ∨ X2) = 24
(X1 ∨ X3)1 & (X1 ∨ ⎤X3)1 & (⎤X2 ∨ X3 ∨ X4) & (⎤X1 ∨ ⎤X2 ∨ ⎤X3) & (⎤X1 ∨ X3 ∨ ⎤X4) & (⎤X1 ∨ X2) = X12 & (⎤X2 ∨ X3 ∨ X4) & (⎤X1 ∨ ⎤X2 ∨ ⎤X3)2 & (⎤X1 ∨ X3 ∨ ⎤X4)2 & (⎤X1 ∨ X2)2 = X1 & (⎤X2 ∨ X3 ∨ X4)2 & (⎤X2 ∨ ⎤X3)2 & (X3 ∨ ⎤ X4) & X22 = X1 & (X3 ∨ X4)2 & (⎤X3)2 & (X3 ∨ ⎤X4)2 & X2 = X1 & X43 & ⎤X3 & ⎤X43 & X2 = (X1 & 0 & ⎤X3 & X2)4 = 0. Если в формуле используются операции импликации и эквивалентности, то, как правило, их следует преобразовать с помощью соответствующих равносильностей. Например: ((X1 → X2)5 ∨ (X1 → X4))5 → (X1 → (X2 ∨ X3))5 = (⎤X16 ∨ X2 ∨⎤X16 ∨ X4) → (⎤X1 ∨ X2 ∨ X3) = ((⎤X1 ∨ X2 ∨ X4) →(⎤X1 ∨ X2 ∨ X3))5 = (⎤(⎤X1 ∨ X2 ∨ X4))7 ∨ ⎤X1 ∨ X2 ∨ X3 = ( ⎤ ⎤X18 & ⎤(X2 ∨ X4)7) ∨ ⎤X1 ∨ X2 ∨ X3 = ((X1 & ⎤X2 & ⎤X4) ∨ ⎤X1)2 ∨ X2 ∨ X3 = (( ⎤X2 &⎤ X4) ∨ ⎤X1 ∨ X2)2 ∨ X3 = ⎤X1 ∨ X2 ∨ X3 ∨ ⎤X4. В этом примере использованы равносильности P1 # P2 ⇔ ⎤P1 ∨ P2 (5) P∨P⇔P (6) ⎤ (P1 ∨ P2) ⇔ ⎤P1&⎤P2 (7) ⎤ ⎤P ⇔ P (8) Из этого примера видно, что некоторые правила можно применить независимо к отдельным формулам. В задаче 2 необходимо выяснить является ли одно составное высказывание логическим следствием другого. Возьмем высказывание: "Pавные треугольники подобны". Это высказывание можно записать символически Ф1 = A → B, где A = "Треугольники равны", B = "Треугольники подобны". Рассмотрим высказывание: Треугольники подобны только в случае их равенства", которое можно записать символически как Ф2 = B → A, где A и B определены выше. Является ли Ф2 логическим следствием Ф1? Рассмотрим
25
импликацию Ф3 = (A → B) → (B → A) и, чтобы проверить, является ли она тавтологией, упростим эту формулу: (A → B)5 → (B → A)5 = (( ⎤ A ∨ B) → ( ⎤ B ∨ A))5 = (⎤( ⎤ A ∨ B))7 ∨ ⎤ B ∨ A = ((⎤ ⎤A &⎤ B) ∨ ⎤B)9 ∨ A = (⎤ B ∨ A)5 = B → A. Здесь использована равносильность P1∨(⎤P1 & P2) ⇔ P1. (9) Таким образом, Ф3 не является тавтологией и, следовательно, нельзя сказать, что Ф2 является логическим следствием Ф1. В задаче 3 даны универсальное множество M = {a,b,c,d,e,f} и два подмножества L = {b,c,d} и K = {d,e,f}, и два предиката P(x) и Q(x), причем {x: P(x)} = L и {x: Q(x)} = K, т.е. L и K являются множествами истинности предикатов P(x) и Q(x) соответственно. Требуется найти множество истинности эквивалентности E(x) = P(x) ↔ ⎤Q(x). Для решения используем определение эквивалентности предикатов {x⎟ E(x)} = (¬L ∩ K) ∪ (L ∩ ¬K) = ({a,b,e,f} ∩ {d,e,f}) ∪ ({b,c,d} ∩ {a,b,c}) = {e,f} ∪ {b,c} = {e,f,b,c}. 5.3. Методические указания к выполнению контрольной работы 2 В задаче 4 необходимо установить какие формулы являются общезначимыми, какие формулы являются противоречивыми, т.е. являются отрицанием общезначимых, а для остальных формул установить их логическое значение для заданной интерпретации. Пусть задана формула ∀x (⎤P(x) → ⎤Q(x)) ↔ ⎤∃x (⎤P(x) & Q(x)). Можно попытаться установить общезначимость данной формулы (тем более что, для одноместных предикатов это алгоритмически разрешимая задача). Для этого левую часть заданной эквивалентности заменим равноcильной формулой ∀x (P(x) ∨ ⎤Q(x)) на основе (5), а правую часть – формулой ∀x⎤(⎤P(x) & Q(x)) на основе ⎤∃x T(x) ⇔ ∀x ⎤T(x). Далее, с учетом эквивалентности ⎤ (P1 & P2) ⇔ ⎤P1∨⎤P2 правая часть примет вид ∀x (P(x) ∨ ⎤Q(x)), т.е. исходная формула преобразована к виду ∀x (P(x) ∨ ⎤Q(x)) ↔ ∀x (P(x) ∨ ⎤Q(x)), где левая часть равна правой. 26
Следовательно, заданная формула является общезначимой (в ответ записываем T в латинском регистре). Пусть задана формула ∀x (⎤P(x) → ⎤Q(x)) ↔ ∃x (⎤P(x) & Q(x)). Левую часть этой формулы можно преобразовать к виду ⎤∃x (⎤P(x) & Q(x)). Таким образом, левая часть равна отрицанию правой части (в ответ записываем C в латинском регистре). Пусть задана формула ∀x (⎤P(x) → Q(x)) ↔ ∃x (⎤P(x) & Q(x)), причем интерпретация P(x) и Q(x) берется из задачи 3. Левую часть этой формулы можно преобразовать к виду ⎤∃x (⎤P(x) & ⎤Q(x)). Таким образом, левая часть не равна правой части или ее отрицанию. Используем заданную интерпретацию для установления истинности левой и правой части. Левая часть ⎤∃x (⎤P(x) & ⎤Q(x)) ложна, так как существует x=a, при котором P(a)=0 и Q(a)=0. Правая часть ∃x (⎤P(x) & Q(x)) истинна, так как существует x=e, при котором P(e)=0 и Q(e)=1. Таким образом, исследуемая формула сведена к виду 0 ↔1 и, следовательно, ложна при заданной интерпретации (в ответ записываем 0). Задачи 5 и 6 посвящены верификации программ – анализу действия программ над данными. Для каждого исходного состояния данных X, для которого выполнение завершается, результирующее состояние данных Y является определенным. Это значение Y единственно для данного X, поэтому множество всех упорядоченных пар (X,Y) определяет функцию, которую будем называть программной функцией. Мы будем использовать символьные вычисления, чтобы получить аналитическое выражение программной функции для исследуемой программы. Программную функцию f для простой программы P обозначим через [P] и определим выражением [P]={(X,Y)⎥ Y=f(X), где X – состояние поля данных до выполнения P, Y – состояние поля данных после выполнения P, {(X,Y) ⎥ Y=f(X)} – множество пар (X,Y) таких, что Y=f(X). В задаче 5 рассматривается верификация простой линейной программы, а в задаче 6 – программы с ветвлениями. Подробная методика решения приведена в учебном пособии [1, стр.29 – 35]. 5.4. Автоматическая проверка результатов Для облегчения проверки контрольных работ в конце работы следует привести основные результаты, как показано на рис.2, а именно: 27
- по задаче 1 даются ответы в том порядке, в котором приведены исходные формулы; - по задаче 2 приводятся номера высказываний, являющихся следствием заданного высказывания; - по задаче 3 даются множества истинности предикатов в том порядке, в котором заданы предикаты; - по задаче 4 выписываются значения формул, причем используются обозначения: T (лат) – тавтология, C (лат) – противоречие, 1 – истинна для заданной интерпретации, 0 – ложна для заданной интерпретации; - по задаче 5 выписываются результирующие присваивания; - по задаче 6 выписываются условия и результирующие присваивания для каждого возможного пути. Вариант #1: MLTA3000 1) 1;1; s\/-p; 1; q-sp-r;-v\/q\/r; 0;1;0;1; -q-s-p-r; v\/-q\/-r\/t; 2) 2 3 5 3) {k,h,b,g,a,f,c,e,d} {j,i,g,a,f} {g,a,f} {j,i,g,a,f,c,e,d} 4) T; C; T; C; 1; 0; C; 1; 5) Q=-Ro-3*Po; R=-Ro; P=-6*Po 6) 1.1 (Qo<2)&(Po<-5): Q:= 2*Qo-Po; P:= -2*Qo-2*Po; 1.2 (Qo<2)&((Po>=-5): Q:= 2*Qo+2*Po; P:= Po; 2.1 (Qo>=2)&(Po<-2): Q:= Qo; P:= 5*Qo-3*Po; 3.2 (Qo>=2)&(Po>=-2): Q:= Qo+3*Po; P:= Po; Рис. 2
Автоматическая проверка. Программа MLTA2003.EXE позволяет студенту проверить основные результаты контрольной работы. Для этого студент должен набрать в любом текстовом редакторе файл ответов как показано на рис. 3. 1, Петров, 555-777; 1) 1 , 1 ,-\/s, 1, q-sp-r, -v\/q\/r, 0, 1, 0, 1, -q-s-p-r, 1; 2) 5,3,2 ; 3) {k,h,b,g,a,f,c,e,d}, {j,i,g,a,f}, {g,a,f}, {j,i,g,a,f,c,e,d}; 4) T, C, T, C, 1, 0, 0, 1; 5) (0,-1,-3), (0, -1 , 0), (0, 0, -6); 6) 1.1: (2, -1), ( -2, -2); 1.2: (2, 2), ( 0, 1); 2.1: (1, 0), (5, -3); 3.2: (1, 3), (0, 1); END; Рис.3
28
Имя этого файла должно иметь расширение ".R" .Программа MLTA2003.EXE запускается в режиме ПРОВЕРКА. При наличии синтаксических ошибок, программа выдает соответствующие сообщения. Для исправления файла ответов можно использовать встроенный текстовый редактор (режим РЕДАКТОР). Если синтаксических ошибок нет, то программа дает оценку правильности (Y) или неправильности (N) по каждой задаче или отдельной части задачи (Рис. 4). Эта оценка добавляется в конец файла ответов. РЕЗУЛЬТАТЫ 1) Y Y Y Y 2) Y 3) Y Y Y Y 4) Y 5) Y Y Y 6) 1.1:Y Y SCORE=100,
ПРОВЕРКИ 1 - Петров - 555-777: Y Y Y Y Y Y Y Y
; 1.2:Y Y ; 2.1:Y Y ; 2.2:Y; 3.1:Y; 3.2:Y Y ; GRADE=5 Code=26535 Рис. 4
Файл ответов оформляется строго в соответствии со следующими правилами: - сначала следует номер задания, через запятую – Фамилия И.О. студента, через запятую - шифр студента, а затем разделитель ";"; - номер задачи, скобка ")", компоненты ответа, разделенные запятыми (за исключением задачи 6), разделитель ";" ; - в конце файла ответов набирается ключевое слово "END;"; - по задаче 5 запись в файле ответов имеет вид " 5) (k11,k12,k13),(k21,k22,k23),(k31,k32,k33);", в предположении, что общая форма ответа по этой задаче Q=k11*Qo+k12*Ro+k13*Po; R=k21*Qo+k22*Ro+k23*Po; P=k31*Qo+k32*Ro+k33*Po; - по задаче 6 ответы для каждого пути содержат в начале номер пути и разделяются точкой с запятой, причем для записи ответов используется тот же принцип, что и в задаче 5.
29
Содержание Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Содержание дисциплины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Содержание дисциплины по государственному образовательному стандарту . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Блок-схема дисциплины . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3. Рабочая программа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4. Тематический план лекций для студентов очно-заочной формы обучения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5. Темы практических занятий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2. Библиографический список . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3. Методические указания к изучению дисциплины . . . . . . . . . . . . . . . . 8 3.1. Логика высказываний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2. Логика предикатов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3. Варианты логики и логическое программирование . . . . . . . . . . . 14 3.4. Формальные теории . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.5. Алгоритмы и вычислимость . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.6. Эффективность алгоритмов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4. Тестовые вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5. Задания на контрольные работы и методические указания к их выполнению . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.1. Задания на контрольные работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.2. Методические указания к выполнению контрольной работы 1 . . 24 5.3. Методические указания к выполнению контрольной работы 2 . . 26 5.4. Автоматическая проверка результатов . . . . . . . . . . . . . . . . . . . . . 27
Редактор И.Н.Садчикова Сводный темплан 2003 г. Лицензия ЛР №020308 от 14.02.97 Подписано в печать Б. кн.-журн. П.л. Б.л. РТП РИО СЗТУ. Тираж 100.
Формат 60 x 84 1/16 Заказ
Северо-Западный государственный заочный технический университет РИО СЗТУ, член Издательско-полиграфической ассоциации вузов Санкт-Петербурга 191186, Санкт-Петербург, ул.Миллионная, 5
30