Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория алгоритмов. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Мирзоев М.С.
Матросов В.Л.
ТЕОРИЯ
АЛГОРИТМОВ
Учебное пособие
МОСКВА
УДК 658.14:339.137.2 ББК 65.290.4
М 63
Рецензенты:
Нижников Александр Иванович, д. пед. н., профессор, зав. кафе­дрой прикладной математики, информатики и информационных тех­нологий института физики, технологии и информационных систем Московского педагогического государственного университета.
Деза Елена Ивановна, д. пед. н., профессор кафедры теоретиче­ской информатики и дискретной математики факультета информатики института математики и информатики Московского педагогического государственного университета.
Мирзоев М.С.,
М 63 Теория алгоритмов: Учебное пособие / М.С. Мирзоев, В.Л. Мат-
росов — М.: Прометей, 2019. — 200 с.
В учебном пособии изложены различные подходы к формализации понятия алгоритма. В нем рассматриваются: интуитивное понятие вы­числимой арифметической функции, теория рекурсивных функций, рекурсивные предикаты, происходит уточнение понятия алгоритма через математическую машину Тьюринга и другие машины, рекурсив­ные и рекурсивно перечислимые множества, алгоритмические пробле­мы, некоторые оценки сложности алгоритмов. Помимо теоретических и практических материалов, учебное пособие содержит задания для са­мостоятельной работы.
Содержание учебного пособия соответствует Федеральному госу­дарственному образовательному стандарту высшего образования треть­его поколения и методическим требованиям, предъявляемым к учеб­ным изданиям.
Учебное пособие предназначено для студентов высших учебных заведений, обучающихся по направлению «Педагогическое образование» профилей «Физика и информатика», «Технология и информатика», «
Математика и информатика», «Информатика и математика», «Прикладная информатика». Может быть полезно широкому кругу читателей, интересующихся основами теории вычислимости.
ISBN 978-5-907100-65-7 © Издательство «Прометей», 2019
Матросов В.Л.
© Мирзоев М.С., 2019 © Матросов В.Л., наследники, 2019
ВВЕДЕНИЕ
В связи с развитием информационных технологий, технологии обработки информации понятие «алгоритм» приобретает особый общеучебный, общенаучный характер и составляет одно из основных понятий современной нау­ки. Более того, в XXI веке алгоритмический подход, техно­логический подход играют доминирующий роль в обеспе­чении развития личности, социализации обучающихся, формировании компетенций в области технологического аспекта информационного общества и др.
Теория алгоритмов как самостоятельная наука появи­лась в 30-х годах XX века, последовательно расширялась и имеет фундаментальное значение в развитии информаци­онно-коммуникационных технологий (ИКТ) и компьютер­ных наук. Благодаря этой теории свои точные определения находят такие фундаментальные понятия как «алгоритм», «вычислимость», «доказуемость», «сложность».
Теория алгоритмов, наряду с математической логикой и дискретной математикой, служит основой для построе­ния теории вычислений. Она внесет существенный вклад в проектирование микро процессоров, компьютеров, интел­лектуальных и производственных роботов, а также играет важную роль в применении ИКТ к плохо формализуемым объектам. На основе теории алгоритмов, математической логики и дискретной математики происходит внедрение математических методов, методов и средств информатики
— 3 —
ВВЕДЕНИЕ
kk k
ap
в экономику, лингвистику, психологию, педагогику и дру­гие гуманитарные науки.
Основным понятием теории алгоритмов является по­нятие «алгоритм». Слово «алгоритм» связано с именем великого средневекового арабского математика, жившего в IX веке, Мухаммада ибн Мусе из Хорезми, который впер­вые изложил десятичную систему счисления и правила вы­полнения простых арифметических действий над элемен­тами этой системы.
Одна из основных его работ, так называемый «ариф­метический трактат», которая была переведена на латин­ский язык в XII веке, начинается словами «Dixit algo­rizmi», что в переводе означает «правил автор, т.е. сказал Ал Хорезми». Отсюда и появилось слово алгоритм.
Таким образом, слово «алгоритм» — латинизирован­ное имя Ал Хорезми. Как научный термин это слово перво­начально обозначало лишь правила арифметических опе­раций над целыми числами и простыми дробями. Затем его стали употреблять в более широком смысле.
В дальнейшем под алгоритмом мы будем понимать общую, выполняемую шаг за шагом процедуру решения задачи. Обычно подразумевается, что каждый алгоритм решает какую-то вычислительную задачу.
Очевидно, что одна и та же задача может иметь не­сколько алгоритмов решения. В качестве примера можно рассматривать алгоритм Евклида, т.е. нахождение наи­большего общего делителя d двух натуральных чисел a и b.
Приведем несколько алгоритмов решения этой задачи.
Шаг 1. Для числа a найдем показатели множителей 2,3,...,np в его разложении, т.е.
k
kk
12
2 3 ...
= ⋅ ⋅⋅ .
n
n
Алгоритм 1.
— 4 —
, ,...,
12
простых
n
ВВЕДЕНИЕ
hh h
bp
( )
nq<
mq<
( ) ( )
( )
q qq
dp
0r ≠
dy=
, x ay b= =
xy≠
xy>
xxy= −
yyx= −
dy=
Шаг 2. Для числа b найдем показатели
простых множителей 2,3,...,mp в его разложении, т.е.
hh
12
2 3 ...
= ⋅ ⋅⋅ .
Шаг 3. Вычисляем Шаг 4. Если
h
m
m
max ,q nm= .
, то все показатели, включая qk ,
, ,...,
12
m
положим равными 0.
Шаг 5. Если
, то все показатели, включая qh ,
положим равными 0.
Шаг 6. Для каждого простого множителя находим
min , , min , , ... , min ,
r kh r kh r kh= = = .
1 11 2 22
Шаг 7. Положим
rr
12
2 3 ...
= ⋅ ⋅⋅ .
r
q
q
Шаг 8. Прекратим работу.
Алгоритм 2.
Шаг 1. Зададим числа a и b, где в качестве
промежуточного параметра введем r.
Шаг 2. Выберем из этих чисел большее, обозначим его
через x, а меньшее обозначим через y.
Шаг 3. Пока
выполняем: вычисляем остаток r от деления x на y; заменяем x на y; y на r. Шаг 4. Положим
.
Шаг 5. Прекратим работу.
Шаг 1. Зададим числа a и b. Шаг 2. Положим Шаг 3. Пока
если
, то положим
иначе
Шаг 4. Положим Шаг 5. Прекратим работу.
Сравнивая эти алгоритмы, можно заметить, что первый алгоритм сложнее всех остальных алгоритмов. Самым простым и изящным считается алгоритм 3.
Алгоритм 3.
.
, выполняем:
.
— 5 —
,
ВВЕДЕНИЕ
αα α
nN∈
Основные свойства алгоритма
10. Дискретность проявляется в том, что процесс по-
строения величин, задаваемый алгоритмом, протекает в дискретном времени следующим образом: в начальный момент задается исходная конечная система величин, а в каждый следующий момент система величин получа­ется по определенному закону из системы величин, имев­шихся в предыдущий момент времени.
20. Детерминированность (определенность) — после
выполнения очередного шага должно быть однозначно определено, что следует делать на следующем шаге.
30. Элементарность шагов — закон получения после-
дующей системы величин из предшествующей является простым и локальным.
40. Эффективность (результативность) — каждый шаг
работы алгоритма является результативным.
50. Массовость алгоритма — один и тот же алгоритм
пригоден для решения класса однотипных задач.
60. Конструктивность — объекты из Х, над которыми
работает алгоритм, должны быть конструктивными (кон­структивный объект — это такой объект, который может быть набран весь целиком и представлен нам для рассмо­трения).
Примерами конструктивных объектов являются бу­левы функции, формулы алгебры логики, натуральные и рациональные числа, матрицы с натуральными или ра­циональными элементами, многочлены от n неизвестных с рациональными коэффициентами и т.п.
В качестве примера объекта, не являющегося кон­структивным, можно привести любые действитель­ные числа, представление которых в десятичной записи
, ... ...
01
представлено для рассмотрения. Например, число e и π не являются конструктивными объектами.
ни для какого
n
не может быть целиком
— 6 —
ВВЕДЕНИЕ
xX∈
Подводя итог сказанному, можно дать и следующее
объяснение термину «алгоритм»: под алгоритмом пони-
мается метод решения определенного класса однотипных задач, обладающий свойствами дискретности, определен­ности, массовости, результативности и оперирую щий кон­структивными объектами.
В силу свойства конструктивности алгоритма между объектами счетного множества X и множества натураль­ных чисел N можно установить взаимно однозначное соот­ветствие и в дальнейшем вместо объекта
рассматри­вать его номер или код объекта, являющийся натуральным числом.
Таким образом, можно рассматривать работу алгорит­ма не на множестве X, а на более удобном для изучения множестве натуральных чисел N. Поэтому в дальнейшем предметом наших рассмотрений будут служить преимуще­ственно арифметические функции, т.е. функции, имею­щие своими областями определения и множествами значе­ний только множества натуральных чисел.
Понятно, что понятие алгоритма, описываемое выше­перечисленными свойствами, является не строгим:
– в формулировках этих свойств встречаются слова,
не имеющие точного математического смысла;
– не предполагается, что процесс применения алго­ритма к исходным данным обязательно должен закончить­ся результатом через конечное число шагов;
– процесс может оборваться безрезультатно или не за­кончиться вообще.
В последнем случае говорят, что алгоритм не приме-
ним к рассматриваемым исходным данным.
В конце XIX века математиками были решены многие алгоритмические проблемы. В этих проблемах требовалось найти алгоритм для решения некоторой совокупности одно­типных задач. При этом задается конечная система величин,
— 7 —
ВВЕДЕНИЕ
( )
принимающая произвольные целочисленные значения. Успешное решение алгоритмических проблем дало повод надеяться, что для решения всяких массовых проблем су­ществуют алгоритмы. Однако в XX веке на первый план вы­двинулись такие алгоритмические проблемы, для решения которых не только не удавалось построить алгоритм, но само существование таких алгоритмов было сомнительным.
В 1900 году на международном математическом кон­грессе, который состоялся в Париже, немецкий математик Давид Гильберт (1862–1943) сформулировал 23 проблемы, решение которых он считал первоочередными для развития математической науки. Одна из них, 10-я, состояла в следу­ющем:
пусть задано
,..., 0
Px x = , т.е. уравнение с целы-
1
n
ми коэффициентами и целыми положительными степеня­ми. Если рассматривать только целочисленные решения, то уравнение называется диофантовым.
Возникает проблема: существует ли алгоритм, позво­ляющий ответить на вопрос, имеет ли целочисленные ре­шения всякое диофантово уравнение или нет.
Другая проблема — связанная с математической логи­кой — «проблема общезначимости формулы логики преди­катов»: существует ли эффективная процедура (алгоритм), позволяющая определить, является ли всякая формула ло­гики предикатов общезначимой.
Решения этих и других проблем были получены с по­мощью точного определения алгоритма.
В 1936 году американский математик А. Чёрч доказал неразрешимость проблемы общезначимости формул логи­ки предикатов.
В 1970 году отечественным математиком Ю.В. Матия­севичем было получено решение 10-й проблемы Гильберта, тоже отрицательное, т.е. было доказано, что искомый ал­горитм не существует.
— 8 —
ВВЕДЕНИЕ
4 40
− + −=
( )
xN∈
{ }
{ }
Nn
00
fN N
Отметим, что несуществование алгоритма для реше­ния отдельного класса однотипных задач не означает, что всякая отдельная частная задача из этого класса неразре­шима.
Например, уравнение
5 32
x xx
имеет реше­ние, но класс задач связанный с решением уравнения пя­той степени невычислим.
Также нужно отметить, что частный случай 10-й проблемы Гильберта, где требовалось для произ­вольного уравнения с целыми коэффициентами найти решения в множестве действительных чисел, был решен в 40-х годах XX века А. Тарским положительно. Тарский построил алгоритм, позволяющий ответить на вопрос: имеет ли всякое произвольное алгебраические уравне­ние с целыми коэффициентами действительные корни или нет?
Чтобы доказать несуществование алгоритма, необхо­димо точно знать, что такое алгоритм. Решение задачи точ­ного определения алгоритма было получено в 30–40-х го­дах в работах Гильберта, Гёделя, Черча, Поста, Тьюринга, Маркова, Колмогорова и других ученых в различных фор­мах, которые по существу оказались эквивалентными.
В одной из своих работ Чёрч исходил из того, что всякую систему величин можно задать в виде набора где
, т.е.
i
1,2,3,...N = . И, следовательно, он ввел по-
, ,...,
xx x ,
12
n
нятие функции для уточнение понятия алгоритма.
В дальнейшем при изложения данного курса мы бу­дем иметь дело с арифметическими функциями, т.е. функ­циями, имеющими своими областями определения и мно­жествами значений только множества натуральных чисел с включением в него цифру 0, т.е.
Определение. Арифметические функции, т.е. функ­ции вида
n
:
→
, для которых существует алгоритм
0,1,2,..., ,...
= .
0
их вычисления, называются вычислимыми функциями.
— 9 —
ВВЕДЕНИЕ
Так как в этом определении фигурирует понятие ал­горитма в интуитивном смысле, то и понятие вычислимой функции оказывается интуитивным. Тем не менее, Чёрч точно описывает совокупность арифметических функций, которая, как оказалось, совпадает с классом рекурсивных функций, ранее описанным Гёделем, и высказывает ги­потезу: класс рекурсивных функций совпадает с классом всюду определенных вычислимых функций.
Другой американский математик Клини обобщил по­нятие рекурсивной функции на случай не всюду опреде­ленных функций. При этом он ввел понятие частично ре­курсивных функций и высказал гипотезу: все частичные
функции, вычислимые посредством алгоритмов, являют­ся частично рекурсивными.
Очевидно, что гипотезы Чёрча и Клини недоказуемы, так как содержат в своих формулировках интуитивное по­нятие вычислимой функции. Несмотря на невозможность его доказательства, тезис Чёрча-Клини является естествен­нонаучным фактом, и вся история математики служит его подтверждением. Одним из доводов этого подтверждения является свойство эквивалентности по форме различных уточнений алгоритма.
Учебное пособие включает 5 глав, каждая глава со­стоит из теории, практики и задания для самостоятельной работы. Изложение учебного материала построено в со­ответствии с рекурсивным методическим подходом, обе­спечивающим такие важные функции, как понимание, умение анализировать и принимать правильные решения в зависимости от ситуации.
Первая глава посвящена уточнению понятия алгорит­ма на основе алгоритмического машина Тьюринга (МТ). Дается общие представление о машине Тьюринга, основ­ные операции МТ, описываются базовые элементарные МТ. Дается определение понятия вычислимости функции
— 10 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]