
- •Н. Г. Моисеев математическая логика и теория алгоритмов
- •Оглавление
- •Предисловие
- •Введение
- •Техника безопасности при выполнении лабораторных работ
- •1. Общие требования безопасности
- •2. Требования безопасности перед началом работы
- •3. Требования безопасности во время работы
- •4. Требования безопасности в аварийной обстановке
- •5. Требования безопасности по окончании работы
- •6. Ответственность
- •Лабораторная работа № 1 алгебра высказываний и логические операции над ними
- •1.1. Теоретическая часть
- •1.1.1. Высказывания и операции над ними. Понятие высказывания
- •1.1.2. Логические операции над высказываниями
- •1.2. Задания к выполнению работы
- •1.3. Контрольные вопросы
- •2.1.1. Формулы алгебры высказываний
- •2.1.1. Равносильные формулы алгебры высказываний
- •I. Основные равносильности:
- •II. Равносильности, выражающие одни логические операции через другие:
- •III. Равносильности, выражающие основные законы алгебры логики:
- •2.2. Задания к выполнению работы
- •2.3. Контрольные вопросы
- •Учебно-методическое обеспечение
- •Лабораторная работа № 3 функции алгебры логики. Совершенные нормальные формы
- •3.1. Теоретическая часть
- •3.1.1. Функции алгебры логики
- •3.1.2. Представление произвольной функции алгебры логики в виде формулы алгебры логики
- •3.1.3. Закон двойственности
- •3.1.4. Дизъюнктивная нормальная форма (днф) и совершенная дизъюнктивная нормальная форма (сднф)
- •3.1.5. Конъюнктивная нормальная форма (кнф) и совершенная конъюнктивная нормальная форма (скнф)
- •3.1.6. Проблема разрешимости
- •3.2. Задания к выполнению работы
- •Сднф и скнф операции конъюнкции
- •3.3. Контрольные вопросы
- •4.1.1. Основные понятия релейно-контакных схем
- •4.1.2. Реализация с помощью релейно-контакных схем основных логических операций
- •4.2. Задания к выполнению работы
- •4.3. Контрольные вопросы
- •5.2. Задания к выполнению работы
- •5.3. Контрольные вопросы
- •Учебно-методическое обеспечение
- •Лабораторная работа № 6 построение доказательств в логике высказываний
- •6.1. Теоретическая часть
- •6.1.1. Основные понятия и определения, используемые при построении доказательств в логике высказываний
- •6.1.2. Аксиоматический метод доказательства логических выражений
- •6.1.3. Конструктивный метод доказательства логических выражений
- •Метод доказательства логических выражений
- •6.1.4. Принцип резолюций
- •6.1.5. Метод Вонга
- •6.1.6. Метод натурального исчисления
- •6.2. Задания к выполнению работы
- •6.3. Контрольные вопросы
- •7.1.1. Составление легенд на основе клауз
- •7.1.2. Составление клауз на основе легенд
- •7.2. Задания к выполнению работы
- •7.3. Контрольные вопросы
- •8.1.1. Формулы исчисления высказываний
- •8.1.2. Определение доказуемой формулы
- •1. Система аксиом исчисления высказываний
- •2. Правила вывода
- •1. Правило подстановки
- •2. Правило заключения.
- •3. Определение доказуемой формулы
- •8.1.3. Производные правила вывода
- •8.1.4. Понятие выводимости формулы из совокупности формул
- •8.1.5. Понятие вывода
- •8.1.6. Правила выводимости
- •13. Правило исключения третьего в доказуемых формулах
- •8.1.7. Связь между алгеброй высказываний и исчислением высказываний
- •Теоремы, устанавливающие связь между алгеброй высказываний и исчислением высказываний
- •8.2. Задания к выполнению работы
- •8.3. Контрольные вопросы
- •9.1.1. Логические операции над предикатами
- •9.1.2. Кванторные операции
- •9.1.3. Понятие формулы логики предикатов
- •9.1.4. Значение формулы логики предикатов
- •9.1.5. Равносильные формулы логики предикатов
- •9.1.6. Предваренная нормальная форма
- •9.1.7. Общезначимость и выполнимость формул
- •9.2. Задания к выполнению работы
- •9.3. Контрольные вопросы
- •Учебно-методическое обеспечение
- •Лабораторная работа № 10 алгоритмы и их применение
- •10.1. Теоретическая часть
- •10.1.1. Характерные черты алгоритма и основные требования к алгоритмическим процедурам
- •10.1.2. Классификация алгоритмических моделей
- •10.1.3. Машины Тьюринга
- •Тьюрингова функциональная схема
- •Программа (схема) работы машины Тьюринга,
- •10.2. Задания к выполнению работы
- •10.3. Контрольные вопросы
- •Учебно-методическое обеспечение
- •Заключение
- •424000 Йошкар-Ола, пл. Ленина, 3
- •424006 Йошкар-Ола, ул. Панфилова, 17
10.1.1. Характерные черты алгоритма и основные требования к алгоритмическим процедурам
Алгоритм имеет общие типичные черты и особенности.
1. Наличие исходных (начальных) данных. Каждый алгоритм работает только при наличии некоторых данных. Например, в рецептах – алгоритмах поваренной книги исходными данными являются количества исходных продуктов, температура и время их обработки, только после этого появится требуемый результат – готовое блюдо.
При вычислении
ранга матрицы начальными данными служит
прямоугольная таблица, составленная
из
рациональных чисел, результат –
натуральное число, являющееся рангом
данной матрицы.
2. Допустимые исходные (начальные) данные. В качестве начальных данных для алгоритма могут использоваться только такие исходные (начальные) данные, которые сформулированы в терминах данного алгоритма. Так, к числу допустимых начальных данных для алгоритма (рецепта) варки борща никак не отнесешь элементы множества комплексных чисел, а к числу исходных данных алгоритма нахождения интеграла от рациональной функции – мясо и свеклу (или, что вроде бы ближе, те же комплексные числа).
Среди допустимых начальных данных для алгоритма могут быть такие, к которым он применим, то есть, отталкиваясь от которых, можно получить искомый результат
3. Дискретность алгоритма. Алгоритм – это процесс последовательного построения величин таким образом, что в начальный момент задается исходная конечная система величин, а в каждый следующий момент система величин получается по определенному закону из величин, имевшихся в предыдущий момент. Применение каждого алгоритма осуществляется путем выполнения дискретной цепочки (последовательности) неких элементарных действий. Эти действия называются шагами, а процесс их выполнения называется алгоритмическим процессом. Отсюда – такое свойство дискретности алгоритма, как пошаговость его выполнения.
4. Элементарность алгоритма. Закон получения последующей системы величин из предшествующей должен быть простым.
5. Массовость алгоритма. Важной чертой алгоритма является его массовый характер, то есть возможность применять его к большому разнообразному количеству исходных данных, которые можно изменять в широких пределах при решении однотипных задач.
Например, задача
нахождения наибольшего общего делителя
чисел 12 и 18 есть единичная проблема (ее
можно решить и без применения алгоритма
Евклида – методом подбора), но задача
нахождения наибольшего общего делителя
произвольных натуральных чисел
и
- уже проблема массовая. Основное
содержание алгоритма Евклида состоит
в том, что он приводит к желаемому
результату вне зависимости от выбора
конкретной пары натуральных чисел, в
то время как при решении приведенной
единичной задачи можно предложить
метод подбора или такой способ, который
окажется неприменим для другой пары
натуральных чисел.
6. Детерминированность алгоритма. Данное условие является непременным свойством алгоритма. Это означает, что все процедуры алгоритма могут быть выполнены любым человеком, в любое время, и при наличии одинаковых исходных данных результат должен получиться одинаковым. Для того чтобы это условие соблюдалось, необходимо, чтобы предписания алгоритма были настолько точны и отчетливы, что при этом не допускаются никакие двусмысленные толкования и произвол со стороны исполнителя. Они единственным и вполне определенным путем всегда приводят к искомому результату.
Такое свойство алгоритма говорит о том, что выполнение алгоритмов можно передать машине.
7. Результативность алгоритма. Последовательный процесс построения величин должен быть конечным и давать результат, то есть решение задачи.
Среди допустимых начальных данных для алгоритма могут быть такие, к которым он применим, то есть, отправляясь от которых, можно получить нужный результат, а могут быть и такие, к которым данный алгоритм неприменим, то есть для них искомого результата получить нельзя. Неприменимость алгоритма к допустимым начальным данным может состоять в том, что алгоритмический процесс никогда не оканчивается (в этом случае он бесконечен - «зацикливается»), либо в том, что его выполнение во время одного из шагов наталкивается на препятствие и заходит в тупик. В этом случае он безрезультатно обрывается. Рассмотрим оба случая на примерах.
Пример 10.1
Наиболее простой пример бесконечного алгоритмического процесса можно привести из процедуры деления десятичных дробей. Так, числа 11,5 и 5 являются в этом случае допустимыми начальными данными, применение к которым алгоритма деления приводит к искомому результату – 2,3.
Но все будет по-другому для чисел 40 и 6, которые также являются допустимыми начальными данными. Для них алгоритм деления будет выглядеть следующим образом:
40
6
¯ 36 6,66…
40
¯ 36
40
…
Данный процесс не встречает препятствий и никогда не заканчивается, так что получить точный результат для чисел 40 и 6 невозможно. Необходимо отметить, что обрыв процесса произвольным образом в данном алгоритме не предусмотрен. Хотя его можно было бы предусмотреть в вычислительном алгоритме при достижении результата заданной точности – количества знаков после запятой.
Пример 10.2
Теперь приведем пример алгоритма, заходящего в тупик, безрезультатно обрывающегося. Его предписания таковы.
Исходное число умножить на 2. Перейти к выполнению п.2.
К полученному числу прибавить 1. Перейти к выполнению п.3.
Определить остаток от деления полученной в п.2 суммы на 3. Перейти к выполнению п. 4.
Разделить исходное число на остаток. Частное является искомым результатом. Конец.
Пусть натуральные целые положительные числа будут допустимыми исходными (начальными) данными для этого алгоритма. Для числа 6 алгоритмический процесс будет проходить так:
1-й шаг: 6 · 2 = 12; переходим к п. 2;
2-й шаг: 12 + 1 = 13; переходим к п. 3.
3-й шаг: остаток (13 : 3) = 1, переходим к п. 4.
4-й шаг: 6 : 1 = 6. Конец.
Искомый результат равен 6.
Иначе будет протекать алгоритмический процесс для исходного данного 7:
1-й шаг: 7 · 2 = 14; переходим к п. 2;
2-й шаг: 14 + 1 = 15; переходим к п. 3.
3-й шаг: остаток (15 : 3) = 0, переходим к п. 4.
4-й шаг: 7 : 0 - деление невозможно. Процесс зашел в тупик, натолкнулся на препятствие и безрезультатно оборвался. Конец.
В результате рассмотренных выше особенностей алгоритма можно дать еще одно определение.
Алгоритм – четкая система инструкций, определяющая дискретный детерминированный процесс, ведущий от варьируемых исходных данных (входов) к искомому результату (выходу), если он существует, через конечное число элементарных шагов (тактов) работы алгоритма.
Пожалуй, это будет наиболее полное и точное определение из рассмотренных нами понятий алгоритма.
Алгоритмы, в которых основную роль играют математические действия, называются численными алгоритмами. Но кроме них существуют логические алгоритмы, которые используются в теории игр.
Пример 10.3
В качестве примера, дающего логический алгоритм, рассмотрим следующую игру.
Имеется 15 предметов. В игре участвуют двое: начинающий и противник. Каждый игрок по очереди берет один, два или три предмета. Выигрывает тот, кто берет последний предмет. Какой стратегии в игре должен придерживаться начинающий, чтобы выиграть?
Выигрышная стратегия начинающего может быть описана в форме следующей таблицы:
Таблица 10.1
Таблица выигрышной стратегии начинающего игрока
Номер хода |
Ход начинающего |
Ход противника |
1 |
3 |
|
2 |
4 - |
|
3 |
4 - |
|
4 |
4 - |
0 |
Почему такая
стратегия выигрышная? Потому что в
результате предложенной стратегии
начинающий возьмет в итоге
предметов,
а противник –
,
то есть в сумме они возьмут 15 предметов,
и последний предмет будет взят начинающим
(у противника в таблице последний ход
равен нулю).