Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория алгоритмов. Учебное пособие
.pdf
Мирзоев М.С.
Матросов В.Л.
ТЕОРИЯ
АЛГОРИТМОВ
Учебное пособие
МОСКВА
2019

УДК 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 algorizmi», что в переводе означает «правил автор, т.е. сказал
Ал Хорезми». Отсюда и появилось слово алгоритм.
Таким образом, слово «алгоритм» — латинизированное имя Ал Хорезми. Как научный термин это слово первоначально обозначало лишь правила арифметических операций над целыми числами и простыми дробями. Затем его
стали употреблять в более широком смысле.
В дальнейшем под алгоритмом мы будем понимать
общую, выполняемую шаг за шагом процедуру решения
задачи. Обычно подразумевается, что каждый алгоритм
решает какую-то вычислительную задачу.
Очевидно, что одна и та же задача может иметь несколько алгоритмов решения. В качестве примера можно
рассматривать алгоритм Евклида, т.е. нахождение наибольшего общего делителя 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 —
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
