- •Основы теории алгоритмов и нумераций
- •Оглавление
- •Введение*
- •Глава 1. Рекурсивные и примитивно-рекурсивные функции
- •Обозначения
- •Примитивно рекурсивные функции
- •Примеры
- •Функции Аккермана
- •Примеры
- •Общерекурсивные и частично рекурсивные функции
- •Глава 2. Машины тьюринга
- •Определения
- •Табличноеиграфическоезадания машинТьюринга
- •Графическое представление
- •Табличное значение машины
- •Некоторые операции над машинами Тьюринга
- •Композиция машин Тьюринга
- •Разветвление машин Тьюринга
- •Универсальная машина Тьюринга
- •Тезис Черча. Связь рекурсивных функций с машинами Тьюринга
- •Примеры
- •Глава 3. Вычислимость и разрешимость
- •Обсуждение
- •Нумерации алгоритмов
- •Некоторые теоремы в теории алгоритмов.
- •Глава 4. Рекурсивные и рекурсивно перечислимые множества.
- •Характеристические функции множеств.
- •Рекурсивные и примитивно рекурсивные множества.
- •Рекурсивно перечислимые множества.
- •Основная теорема.
- •Примеры.
- •Глава 5. Основные нумерации в теории алгоритмов
- •Нумерация пар и-ок чисел.
- •Кодирование всех-ок.
- •Нумерация конечных множеств.
- •Нумерации Клини и Поста.
- •Нумерация семейства всех двухэлементных множеств.
- •Глава 6. Степени неразрешимости.
- •- Сводимость.
- •- Степени.
- •Теорема о редукции.
- •Примеры.
- •Глава 7. Нумерованные совокупности.
- •Нумерации множества.
- •Некоторые теоремы о нумерациях множеств
- •Глава 8. Приложения теории алгоритмов к разрешимости некоторых проблем.
- •Теорема Райса.
- •Разрешимость проблем распознавания и классификации.
- •Литература
- •Основы теории алгоритмов и нумераций.
Введение*
Понятие алгоритма является одним из основных понятий в современной математике. Еще на самых ранних ступенях развития математики (Древний Египет, Вавилон, Греция) в ней стали возникать различные вычислительные процессы чисто механического характера. С их помощью искомые величины ряда задач вычислялись последовательно из исходных величин по определенным правилам и инструкциям. Со временем все эти процессы в математике получили название алгоритмов (алгорифмов).
Термин "алгоритм" происходит от имени средневекового узбекского математика Аль-Хорезми, который еще в 9 веке (825 г.) дал правила выполнения четырех арифметических действий в десятичной системе счисления. Процесс выполнения арифметических действий был назван алгоризмом.
С 1747 года вместо слова алгоризм стали употреблять слово алгорисмус, смысл которого состоял в комбинации четырех операций арифметического исчисления - сложения, вычитания, умножения, деления. К 1950 г. алгорисмус стал алгорифмом. Смысл алгорифма чаще всего связывают с алгорифмами Евклида - процессами нахождения наибольшего общего делителя двух многочленов, наибольшей общей меры двух отрезков и т.п.
Вплоть до 30-х годов понятие алгоритма имело скорее методологическое, чем математическое значение. Под алгоритмом понимали конечную совокупность точно сформулированных правил, которые позволяют решать те или иные классы задач. Такое определение алгоритма не является строго математическим, так как в нем не содержится точной характеристики того, что следует понимать под классом задач и под правилами их решения. В течении длительного времени математики довольствовались этим определением, поскольку общей теории алгоритмов фактически не существовало. Однако практически не было серьезных случаев, когда математики разошлись бы во мнении того, является ли алгоритмом тот или иной конкретно заданный процесс.
Положение существенно изменилось, когда на первый план выдвинулись такие алгоритмические проблемы, положительное решение которых было сомнительным. Действительно, одно дело доказать существование алгоритма, другое - доказать отсутствие алгоритма. Первое можно сделать путем фактического описания процесса, решающего задачу. В таком случае достаточно и интуитивного понятия алгоритма, чтобы удостоверится в том, что описанный процесс есть алгоритм. Доказать не существование алгоритма таким путем невозможно. Для этого надо точно знать, что такое алгоритм.
В 20-х годах нашего века задача такого определения понятия алгоритма стала одной из центральных математических проблем. Решение ее было получено в середине 30-х годов в работах известных математиков Гильберта, Геделя, Черча, Клини, Поста и Трюринга в других формах. Первое решение было основано на понятии особого класса арифметических функций, получивших название рекурсивных функций, второе - на описание точно очерченного класса процессов. Впоследствии в работах Маркова, Калужнина появилось другое толкование теории алгоритмов, поставившее в основу определения алгоритма, как особого соответствия между словами в том или ином абстрактном алфавите.
Первоначально теория алгоритмов возникла в связи с внутренними потребностями теоретической математики. Математическая логика, основание математики, алгебра, геометрия и анализ остаются и сегодня одной из основных областей приложения теории алгоритмов.
Другая ее область возникла в связи с созданием и применением компьютеров. В то же время в самой теории алгоритмов появился новый раздел - нумерации, позволяющие переходить от работы с абстрактными объектами математики - матрицами, группами, функциями и т.п. - к работе с натуральными числами - номерами.
Такой переход расширяет возможности применения уже хорошо разработанного раздела теории алгоритмов - теории рекурсивных функций.
Наконец, теория алгоритмов оказалась тесно связанной и с рядом областей лингвистики, экономики, физиологии мозга и психологии, философии естествознания. Примером одной из задач этой области может служить точное описание алгоритмов, реализуемых человеком в процессе умственной деятельности.
Чтобы иметь возможность более уверенно решать алгоритмические задачи, возникающие в различных разделах теоретической и прикладной математики, необходимо иметь достаточно развитую теорию алгоритмов. В настоящее время такая теория алгоритмов уже создана. Изучение основ этой теории является целью данного пособия.
