- •Теория алгоритмов
- •Содержание
- •Приложение…………………………………..……………………………..…107 Предисловие
- •§1. Понятие алгоритма. Примеры. Способы задания. Общие свойства. Необходимость математического уточнения понятия алгоритма
- •1.1.Понятие алгоритма
- •Примеры нечисловых алгоритмов
- •1.2. Общие свойства алгоритмов
- •1.3. Способы задания алгоритмов
- •1.4. Необходимость уточнения понятия «алгоритм»
- •Графическое представление алгоритмов
- •Образец решения задачи.
- •Контрольная работа №1
- •§2 Нормальный алгоритм Маркова
- •2.1.Понятие ассоциативного исчисления
- •Нетрудно понять, что
- •2.2. Нормальные алгоритмы Маркова
- •2.3. Вычисление арифметических функций с помощью нормальных алгоритмов
- •Образец решения задачи.
- •Контрольная работа №2
- •13. Задайте нормальный алгоритм Маркова для вычисления функции
- •§3. Машины Тьюринга
- •3.1. Описание машины Тьюринга
- •3.2. Вычисление числовых функций на машинах Тьюринга
- •3.3. Композиция машин Тьюринга
- •Вопросы для самоконтроля.
- •§4. Сведение любого алгоритма к вычислению числовой функции. Геделевская нумерация объектов
- •4.1. Перевод из одного алфавита в другой (кодирование)
- •Отделяя разные буквы пустым сигналом (т. Е. Пустым промежутком), получаем возможность перевода слов с русского алфавита на язык радиосигналов.
- •Возможны и переводы слов вначале на язык цифр, а далее - цифры на язык радиосигналов.
- •4.2. Нумерация пар и n-ок натуральных чисел
- •4.3. Сведение любого алгоритма к числовой функции. Метод Гёделя
- •Вопросы для самоконтроля
- •§5. Примитивно рекурсивные функции
- •Вопросы для самоконтроля
- •§6. Универсальная функция для . Существование вычислимых, но не примитивно рекурсивных функций
- •Вопросы для самоконтроля
- •§7. Частично рекурсивные функции. Тезис Чёрча
- •Вопросы для самоконтроля
- •Образцы решения задач.
- •Контрольная работа №3
- •§8 Рекурсивные и рекурсивно перечислимые множества
- •8.1. Рекурсивные множества
- •8.2. Рекурсивно перечислимые множества
- •§9. Примеры неразрешимых и нерешенных проблем
- •9.1. Неразрешимые проблемы
- •9.2. Нерешенные проблемы
- •Литература.
- •Приложение Формирование понятия «обратная функция» у студентов
- •Литература
§1. Понятие алгоритма. Примеры. Способы задания. Общие свойства. Необходимость математического уточнения понятия алгоритма
1.1.Понятие алгоритма
Понятие алгоритма такое же древнее, как и сама математика. Хотя в современной науке это понятие вышло за рамки математики, до двадцатого столетия оно ассоциировалось с только математическими проблемами. Оно является фундаментальным понятием так же, как понятие «число» или «множество». Его можно пояснить лишь на конкретных примерах. Вместо слова «алгоритм» мы часто употребляем, такие синонимы как «метод», «способ», «правило». Например, метод Гаусса, правило сложения двух обыкновенных дробей, правило буравчика, правила дорожного движения и т.д.
На интуитивном уровне сущность алгоритма разные источники разъясняют примерно одинаково:
[8]. «Алгоритм – точное предписание, которое задает вычислительный процесс (называемый в этом случае алгоритмическим), начинающийся с произвольного исходного данного и направленный на получение полностью определенного этим исходным данным результата… Вообще говоря, не предполагается, что результат будет обязательно получен: процесс применения алгоритма к конкретному исходному данному может оборваться безрезультатно или же продолжаться бесконечно».
[7]. «В математике принято понимать под «алгоритмом» точное предписание, определяющее вычислительный процесс, ведущих от варьируемых исходных данных к исходному результату.»
[10]. «Алгоритм – это детерминированная процедура, которую можно применить к любому элементу некоторого класса символических входов, которая для каждого такого входа дает, в конце концов, соответствующий символический выход».
[12]. «Алгоритм – точное предписание о выполнении в определенном порядке некоторой системы операций, позволяющее решать совокупность задач определенного класса».
Можно привести очень много примеров из математики, где решение задачи происходит «без всякой изобретательности», чисто механически, следуя перечню указаний. Рассмотрим вначале два примера из античной математики.
Пример 1. Греческий астроном и географ из Александрии Эратосфен около 2000 лет назад предложил следующий метод отыскания простых чисел в натуральном ряду:
а) Обозревай натуральные числа в порядке возрастания, найди самое меньшее не вычеркнутое число, большее единицы. Пусть это p>1. Оно простое. Далее переходи к следующему указанию.
б) Вычеркивай все числа кратные p и переходи к выполнению указания а) начиная с числа p+1.
Несмотря на древность изобретения Эратосфена, современные электронно-вычислительные машины пользуются этим методом при пересчете простых чисел в заданном промежутке.
Пример 2. Алгоритм Евклида для нахождения наибольшего общего делителя двух целых положительных чисел a и b. Его также нетрудно описать в виде нескольких предписаний:
а) Обозревай заданные два числа a и b. Переходи к следующему указанию.
б) Сравни обозреваемые числа a=b, a<b, a>b. Переходи к следующему указанию.
в) Если обозреваемые числа равны, то каждое из них дает искомый результат. Процесс вычислений прекращается. В противном случае переходи к следующему указанию.
г) Если a<b, то переставь их местами и переходи к следующему указанию.
д) Вычитай второе число из первого и обозревай два числа: вычитаемое и остаток. Переходи к указанию б).
Каковы бы ни были два числа a и b, за конечное число применений а) – д), всегда получим желаемый результат.
Пример 3. Арифметические действия сложения, вычитания, умножения и деления над числами в десятичном счислении.
Пример 4. Извлечение квадратного корня из положительного действительного числа, заданного в десятичном счислении.
Пример 5. Восьмого августа 1900 года в Париже на втором международном конгрессе математиков выдающийся немецкий математик Давид Гильберт выступил с часовым докладом под названием «математические проблемы», где сформулировал 23 проблемы, которые предопределили направление развития математики в XX столетии. Проблема под номером 10 касалась разрешимости алгебраических уравнений от любого числа переменных в целых числах: требуется выработать алгоритм, позволяющий для любого полинома с рациональными коэффициентами
выяснить, имеет ли он целочисленное решение <m1,m2,…,mn> или нет.
Только в 1975 году математикам удалось установить, что десятая проблема Гильберта неразрешима, т.е. было доказано, что такой алгоритм в принципе не может быть в математике.
Пример 6. Более частная проблема – задача отыскания целых корней алгебраических уравнений n-ой степени с одним неизвестным и с целыми коэффициентами.
P(x)= anxn+an-1xn-1+…+a1x+a0=0 (1)
где an=1, решается просто. Для этого достаточно руководствоваться следующими указаниями:
а) Найти все делители свободного члена. Пусть это m1,m2,…,mr и они расположены в порядке возрастания абсолютных величин. Переходи к следующему указанию.
б) Подставь каждый из делителей mi (в порядке возрастания) в P(x) вместо x и вычисли его значение. Переходи к следующему указанию.
в) если хотя бы при одном 0< i r P(mi)=0, то mi – целый корень P(x). В противном случае уравнение (1) целых корней не имеет.
