Теория алгоритмов. Учебное пособие для специальности 050201.65 – «Математика с дополнительной специальностью «Информатика», направление подготовки 050
.pdf
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Пермский государственный гуманитарно-педагогический университет»
Кафедра алгебры
В.Г. Алябьева, Г.В. Пастухова
ТЕОРИЯ АЛГОРИТМОВ
Учебное пособие
для специальности 050201.65 – «Математика с дополнительной специальностью “Информатика”»
Направление подготовки 050100 – «Педагогическое образование»
Рекомендовано УМО по математике педагогических вузов Волго-Вятского региона в качестве учебного пособия для студентов педагогических направлений подготовки высших и средних учебных заведений
Пермь
ПГГПУ
2013
УДК 510.51
ББК В 127
А 601
Р е ц е н з е н т ы :
кандидат физико-математических наук, доцент кафедры алгебры и геометрии Пермского национального исследовательского политехнического университета
А.А. Волочков;
кандидат педагогических наук, доцент кафедры высшей математики Пермского государственного гуманитарно-педагогического университета
Г.Г. Шеремет
Алябьева, В.Г.
А 601 Теория алгоритмов: учеб. пособие для специальности 050201.65 – «Математика с дополнительной специальностью “Информатика”», направление подготовки 050100 – «Педагогическое образование» / В.Г. Алябьева, Г.В. Пастухова ; Перм. гос. гуманит.-пед. ун-т. – Пермь, 2013. – 125 с.
ISBN 978-5-85218-624-9
В учебном пособии нашли отражение три подхода к определению понятия алгоритма: на языке машин Тьюринга, на языке машин Поста, на языке рекурсивных функций. Отдельная глава посвящена алгоритму нумерации кортежей. Также в пособии содержатся задания для самостоятельной работы студентов и темы курсовых работ.
Адресовано бакалаврам, обучающимся по специальности 050201.65 – «Математика с дополнительной специальностью “Информатика”», направление подготовки 050100 – «Педагогическое образование». Также пособие может быть рекомендовано студентам, обучающимся по специальностям «Математика», «Математика и информатика», Прикладная математика», «Компьютерная безопасность».
УДК 510.51
ББК В 127
Печатается по решению учебно-методического совета Пермского государственного гуманитарно-педагогического университета
ISBN 978-5-85218-624-9
© Алябьева В.Г., Пастухова Г.В., 2013 © ФГБОУ ВПО «Пермский государственный гуманитарно-педагогический университет», 2013
2
ОГЛАВЛЕНИЕ |
|
ВВЕДЕНИЕ.............................................................................................................. |
4 |
ГЛАВА 1. ИНТУИТИВНОЕ ПРЕДСТАВЛЕНИЕ ОБ АЛГОРИТМАХ ............... |
8 |
1.1. Алгоритмы в математике. Основные черты алгоритмов.................................... |
8 |
1.2. Необходимость уточнения понятия алгоритма................................................... |
8 |
1.3. Вычислимые функции. Разрешимые иперечислимые множества.................. |
10 |
ГЛАВА 2. МАШИНЫ ТЬЮРИНГА..................................................................... |
12 |
2.1. Алан Тьюринг....................................................................................................... |
12 |
2.2. Устройство машины Тьюринга........................................................................... |
14 |
2.3. Вычислимые по Тьюрингу функции.................................................................. |
18 |
2.4. Операции над машинами Тьюринга................................................................... |
26 |
2.5. Тезис Тьюринга.................................................................................................... |
28 |
2.6. Неразрешимые множества.................................................................................. |
29 |
2.7. Проблема распознавания самоприменимости машин Тьюринга.................... |
31 |
2.8. Проблема останова............................................................................................... |
34 |
ГЛАВА 3. МАШИНА ПОСТА.............................................................................. |
35 |
3.1. Эмиль Пост........................................................................................................... |
35 |
3.2. Составные элементы машины Поста................................................................. |
38 |
3.3. Функции, вычислимые по Посту. Тезис Поста................................................. |
50 |
ГЛАВА 4. АЛГОРИТМЫ НУМЕРАЦИИ ............................................................ |
55 |
4.1. Нумерация кортежей........................................................................................... |
55 |
4.2. Гёделевская нумерация машин Тьюринга......................................................... |
59 |
ГЛАВА 5. РЕКУРСИВНЫЕ ФУНКЦИИ.............................................................. |
61 |
5.1. Базовые функции и операции над ними............................................................. |
61 |
5.2. Примитивно рекурсивные, общерекурсивные и частично рекурсивные |
|
функции............................................................................................................................ |
76 |
5.3. Стефен Коул Клини............................................................................................. |
80 |
5.4. Курт Фридрих Гёдель.......................................................................................... |
82 |
5.5. Алонзо Чёрч.......................................................................................................... |
86 |
ГЛАВА 6. АЛГОРИТМИЧЕСКИ НЕРАЗРЕШИМЫЕ ПРОБЛЕМЫ ................. |
91 |
6.1. Основные понятия................................................................................................ |
91 |
6.2. История вопроса................................................................................................... |
92 |
6.3. Проблема нумерации машин Тьюринга. Пример невычислимой функции.. |
94 |
МАТЕРИАЛЫ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ ................................... |
102 |
СПИСОК ТЕМ КУРСОВЫХ И ВЫПУСКНЫХ РАБОТ................................... |
118 |
СПИСОК ЛИТЕРАТУРЫ.................................................................................... |
122 |
3
Понятие алгоритма является не только центральным в теории алгоритмов, не только одним из главных понятий математики вообще, но одним из главных понятий современной науки.
В.А. Успенский, А.Л. Семенов
ВВЕДЕНИЕ
Теория алгоритмов – раздел современной математики, изучающий общие свойства алгоритмов.
Понятие алгоритма является одним из базовых понятий математики.
Если на ранних этапах своего развития математика представляла собой набор алгоритмов «на все случаи жизни», то современная математика являет собой,
скорее, набор теорем. Однако для конечного потребителя «математического продукта» математика по-прежнему является набором алгоритмов «на все случаи жизни». Алгоритм – это «продукт» математики, выдаваемый на выходе для потребителя. Это обстоятельство определяет значимость алгоритмов для математики и для ее потребителей «во внешнем мире».
Термин «алгоритм» появился в математике в XII веке. Он обязан своим происхождением великому ученому средневекового Востока Мухаммеду ибн Мусса ал-Хорезми (Мухаммед сын Муссы из Хорезма, ок. 783 – ок. 850 гг.).
В 1983 г. в городе Ургенч – областном центре Хорезмской области Узбекистана, отмечалось 1200-летие со дня рождения Хорезми, в рамках которого состоялся Международный симпозиум «Алгоритм в современной математике и её приложениях», организованный академиком А.П. Ершовым.
Ал-Хорезми известен как математик, астроном и географ. В IX в. он переселился в Багдад, где с 815 г. возглавлял «Дом мудрости» – хранилище рукописей, созданное арабскими халифами.
4
Многообразные научные интересы ал-Хорезми относились к математике,
теоретической и практической астрономии, географии и истории. Наибольшую славу учёному принесли его математические труды. Он является автором двух знаменитых трактатов: по арифметике и алгебре. Подлинный арабский текст арифметического трактата утерян. Европейцы познакомились с его содержанием по латинскому переводу, выполненному в XII в. В трактате рассматривается запись чисел в десятичной системе счисления, заимствованная из «индийской арифметики», способы вычисления с натуральными числами и дробями, правило извлечения квадратного корня. Латинский перевод трактата не имеет заглавия. Он начинается словами «Dixit algorizmi» – «Сказал Алгоризми». Имя ал-Хорезми в латинской транскрипции звучало как Algorizmi.
Сочинение получило большую популярность в Европе. Имя автора стало нарицательным: «алгорисмом», или «алгоритмом», средневековые математики называли всю «индийскую арифметику», основанную на десятичной позиционной системе счисления. Позднее это слово стало обозначать любую систему вычислений, выполненных по определенному правилу. В современной математике термин «алгоритм» означает точное предписание о выполнении вычислений в строгом порядке.
Алгебраический трактат ал-Хорезми «Китаб аль-джебр аль-мукабала»
(«Книга о восстановлении и противопоставлении») сохранился до настоящего времени в арабской копии. В этом сочинении впервые алгебра рассматривалась как самостоятельный раздел математики, изучающий общие методы решения линейных и квадратных уравнений. Для преобразования квадратных уравнений к определенному виду ал-Хорезми вводит два особых действия: аль-джебр (восполнение) и аль-мукабала (противопоставление).
Аль-джебр состоит в перенесении отрицательного члена из одной части уравнения в другую. От этого термина произошло современное слово
«алгебра». Аль-мукабала –сокращение равных членов в обеих частях уравнения.
5
Предмет теории алгоритмов
В современной электронной технике различают цифровые и аналоговые
устройства. Аналоговые устройства обрабатывают аналоговые данные,
цифровые устройства – цифровые. Под аналоговыми данными условно можно понимать значения некоторой «непрерывной» величины. Цифровые данные носят «дискретный» характер, их можно описать при помощи конечной последовательности символов. По аналогии можно различать аналоговые и дискретные алгоритмы, соответствующие характеру тех данных,
с которыми они работают.
Теория алгоритмов рассматривает только цифровые алгоритмы.
Современная математика располагает термином, способным точнее определить предмет теории алгоритмов.
Конструктивным называем объект, который может быть полностью описан при помощи конечной последовательности символов.
1.Натуральные числа являются конструктивными объектами, так как любое натуральное число можно задать, используя его десятичную запись.
2.Конечные последовательности натуральных чисел и конечные подмножества натурального ряда являются конструктивными объектами.
Конечная последовательность задается конечным списком своих элементов,
перечисленных в порядке следования. Конечное подмножество также можно задать конечным списком элементов, принадлежащих ему.
3.Рациональные числа являются конструктивными объектами, так как любое рациональное число задаётся упорядоченной парой чисел: числителем
изнаменателем.
4.Иррациональные действительные числа не являются конструктивными объектами, так как для их описания необходимо перечислить бесконечное число элементов после запятой.
5.Бесконечные подмножества натурального ряда не являются конструктивными объектами.
6
6. Алгоритмы являются конструктивными объектами, если под алгоритмом понимается конечный набор инструкций.
Конструктивным пространством называется множество всех конструктивных объектов одинакового вида.
Так, конструктивные пространства образуют: множество N0 целых неотрицательных чисел, множество Q рациональных чисел, декартова степень
N02 множества целых неотрицательных чисел, множество конечных последовательностей целых неотрицательных чисел и множество конечных подмножеств целых неотрицательных чисел.
Вычислимой называется функция, действующая из одного
конструктивного пространства в другое, для которой существует алгоритм,
позволяющий по описанию любого аргумента получить описание значения функции на этом аргументе.
Тогда предмет теории алгоритмов составит исследование вычислимости
функций, действующих из одного конструктивного пространства |
в другое, |
и теорию алгоритмов, возможно, уместнее было бы назвать |
«теорией |
вычислимости». (Теория алгоритмов в информатике выродилась в «теорию вычислимости», так называют этот курс за рубежом. За теорией алгоритмов осталось изучение конкретных алгоритмов.)
7
ГЛАВА 1. ИНТУИТИВНОЕ ПРЕДСТАВЛЕНИЕ ОБ АЛГОРИТМАХ
1.1. Алгоритмы в математике. Основные черты алгоритмов
Алгоритмами изобилует и повседневная жизнь, и производство, и наука.
В повседневной жизни мы говорим о способе (алгоритме) выпекания булочек,
в производстве – о способе (алгоритме) изготовления автомобиля, в математике говорят:
о методе Гаусса решения систем линейных уравнений;
об алгоритме Евклида вычисления наибольшего общего делителя двух целых чисел;
о методе Генцена определения общезначимости формул логики предикатов.
На интуитивном (неформальном, нестрогом) уровне алгоритм
в математике понимается как общий метод вычислений или способ решения задач некоторого класса, как конечная последовательность инструкций
(предписаний), позволяющих из исходных данных получить результат.
Перечислим основные требования, предъявляемые к алгоритмам:
1.Дискретность (прерывистость, скачкообразность). Работа алгоритма происходит тактами (скачками, шагами).
2.Детерминированность (определенность). Каждый последующий шаг алгоритма вполне определяется предшествующими шагами.
3.Результативность. После конечного числа шагов алгоритм должен выдать результат.
4.Универсальность. Алгоритм применим к любой задаче данного класса задач.
1.2. Необходимость уточнения понятия алгоритма
Потребность в строгом определении понятия алгоритма и вычислимой
функции возникла во второй половине XIX в. и обострилась к 30-м гг.
8
XX столетия. Ряд внутриматематических обстоятельств, таких как кризис оснований математики, логические парадоксы, крах программы Гильберта тотальной формализации математики, привели к созданию течения математического конструктивизма. Конструктивисты признавали только такие доказательства теорем существования, для которых удаётся указать алгоритм построения. Это требование «активизировало» термин «алгоритм»
испособствовало возникновению теории алгоритмов.
Сдругой стороны, к 30-м гг. XX столетия в математике накопились задачи, которые специалисты склонны были считать алгоритмически неразрешимыми. Для строгого доказательства алгоритмической неразрешимости требовалось строгое определение алгоритма, попытки которого были предприняты почти одновременно несколькими математиками:
Алонзо Чёрчем, Стефеном Клини, Эмилем Постом и Аланом Тьюрингом. Чёрч аксиоматически определил класс рекурсивных функций, отождествив понятия рекурсивной и вычислимой функции. Тьюринг и Пост определили алгоритмический процесс, реализуемый на некоторой вычислительной машине,
называемой, соответственно, «машиной Тьюринга» и «машиной Поста».
Третий подход к определению алгоритма предложил А. А. Марков, который
под алгоритмом понимал процесс преобразования слов, записанных
в некотором алфавите. Марков назвал свои алгоритмы нормальными
(в авторской транскрипции – «алгорифмы»). Перечисленные подходы привели к построению одного и того же класса алгоритмически вычислимых функций.
Строгое определение алгоритма позволило доказать ряд фундаментальных результатов. Среди них:
доказательство П.С. Новикова алгоритмической неразрешимости классической проблемы тождества в конечно определённых группах
(1952 г.),
доказательство Ю.В. Матиясевича неразрешимости 10-й проблемы Гильберта о разрешимости диофантова уравнения с произвольными
9
неизвестными и целыми рациональными числовыми коэффициентами (1970 г.).
Теория алгоритмов оказала существенное влияние на развитие ЭВМ и практику программирования. В теории алгоритмов были предугаданы основные концепции проектирования аппаратуры и языки программирования.
Упоминаемые выше три способа определения алгоритма способствовали развитию разных направлений в программировании:
-микропрограммирование восходит к идеям построения машин Тьюринга;
-структурное программирование заимствует идеи из теории рекурсивных функций;
-языки символьной обработки информации берут своё начало от нормальных алгоритмов Маркова и систем Поста.
1.3. Вычислимые функции. Разрешимые и перечислимые множества
Будем рассматривать функции от одного или нескольких аргументов,
заданные на множестве целых неотрицательных чисел |
N0 0,1,2,3,4,... |
||
или на некоторых его |
подмножествах и принимающие |
значения |
|
на множестве N0. |
|
|
|
Назовём функцию |
f (x1,x2,...xn) вычислимой, |
если |
существует |
алгоритм, вычисляющий её для тех аргументов, для которых функция определена, и работающий бесконечно на тех наборах значений аргументов,
на которых функция не определена.
Назовём множество M, M N0, разрешимым, если существует
(разрешающий) алгоритм, применение которого к произвольному целому неотрицательному числу a позволяет выяснить, принадлежит ли a
множеству M .
10
