- •Содержание курса “Теория алгоритмов и вычислительных процессов”
- •I. Теория алгоритмов
- •Основные понятия теории алгоритмов
- •1.1. Предварительные сведения
- •1.2. Основные требования к алгоритмам
- •1.3. Необходимость математического понятия алгоритма
- •2. Типы алгоритмов
- •3. Способы представления (описания) алгоритмов
- •3.1. Исполнитель алгоритма
- •3.2. Строчная словесная запись алгоритма
- •3.3. Графическая форма записи
- •3.4. Управляющие структуры
- •4. Описание задачи и выбор алгоритма
- •5. Универсальные алгоритмические модели
- •Понятие конструктивного объекта
- •Понятие об алфавитных алгоритмах
- •5.3. Формализация понятия “алгоритм”
- •5.4. Схема построения алгоритмической системы
- •6. Рекурсивные функции
- •6.1. Примитивно-рекурсивные функции
- •6.1.1. Оператор суперпозиции (подстановки)
- •6.1.2. Оператор примитивной рекурсии
- •6.2. Частично-рекурсивные функции
- •Пример 6.2.2. Рассмотрим функцию
- •6.3. Тезис Черча
- •7. Машины Тьюринга (Поста)
- •7.1. Основные понятия машин Тьюринга
- •7.2. Способы представления машины Тьюринга
- •7.2.1. Представление машины Тьюринга совокупностью команд
- •7.2.2. Представление машины Тьюринга графом
- •7.2.3. Представление машины Тьюринга таблицей соответствия
- •7.3. Примеры построения машин Тьюринга
- •Вычислимость по Тьюрингу
- •7.5. Некоторые операции над машиной Тьюринга
- •7.5.1. Композиция машин Тьюринга
- •7.5.2. Итерация машины Тьюринга
- •7.5.3. Разветвление машин Тьюринга
- •7.4. Универсальная машина Тьюринга
- •7.5. Тезис Тьюринга
- •7.6. Машина Поста
- •9. Алгоритмическая разрешимость. Алгоритмические проблемы
- •10. Сложность алгоритмов и вычислений
- •Анализ скорости выполнения алгоритмов
- •Память или время
- •Временнáя сложность алгоритма
- •Оценка с точностью до порядка
- •Определение сложности
- •Сложность рекурсивных алгоритмов
- •Средний и наихудший случай
- •Общие функции оценки сложности
- •Скорость работы алгоритма в реальных условиях
- •19.5. Труднорешаемые задачи
5. Универсальные алгоритмические модели
Выше были сформулированные основные свойства алгоритмов. Однако понятия, использованные в этих формулировках (такие как результативность, массовость и т.п.), сами требуют уточнения. Очевидно, что их словесные определения будут содержать новые понятия, которые опять необходимо уточнять и т.д. Следовательно, определение алгоритма не есть математически корректным. Поэтому в теории алгоритмов пользуются другим подходом: выбирают конечный набор начальных объектов, которые объявляются элементарными, и конечный набор способов построения из них новых объектов.
Такой же подход используется и для данных: уточнением понятия “данные” в дальнейшем будем считать множество слов в конечных алфавитах.
Понятие конструктивного объекта
«Во всем современном математическом мышлении большое место занимает различение между „конструктивным" и „неконструктивным"», - писал А. Н. Колмогоров. Далее он отмечает: «Любое натуральное число может быть в принципе задано конструктивно в виде
1 + 1 + 1 + ... + 1.
Здесь наглядно проявляется различие между натуральным числом как количественной сущностью (неконструктивным объектом) и его заданием в виде цепочки единиц и плюсов (конструктивным объектом).
Одна из причин расплывчатости интуитивного определения алгоритма состоит в том, что объектом алгоритма может оказаться все, что угодно. Поэтому естественно было начать с формализации понятия объекта. В вычислительных алгоритмах объектами работы являются числа, в алгоритме шахматной игры - фигуры и позиции, при алгоритмизации производственных процессов объектами служат, например, показания приборов. Однако алгоритмы оперируют не с объектами реального мира, а с изображениями этих объектов. Поэтому алгоритмами в современной математике принято называть конструктивно задаваемые соответствия между изображениями объектов в абстрактных алфавитах.
Понятия конструктивного объекта есть не только основным, но и первичным в теории алгоритмов. Под конструктивным объектом будем понимать объект, состоящий из конечного множества элементов, каждый из которых принадлежит до одного из конечного количества типов, связанных между собою некоторыми соотношениями также из конечного количества типов.
Итак, конструктивный объект имеет дискретное строение и состоит из отдельных элементов. Также будем считать, что для конструктивного объекта заданная некоторая "внутренняя система координат", которая разрешает однозначно локализовать любой его элемент (определить место нахождения его элементов).
Все попытки определить понятие конструктивного объекта - и наше изложение не является исключением - неизбежно уклоняются либо в сторону расплывчатого описания, либо в сторону определения частных видов конструктивных объектов. Как все неопределяемые понятия, оно усваивается на примерах. Примерами конструктивных объектов есть:
слова, которые составлены из букв некоторого алфавита A;
матрицы с целочисленными коэффициентами, записанными в любой системе счисления.
Внутреннюю систему координат, например, имеет слово, поскольку можно говорить о первой букве слева, второй и т.д.; в матрице положение любого ее элемента определяется пересечением соответствующей строки и столбика. Говоря о системе координат, естественно требовать наличие "начала координат". Ведь в каждом конструктивном объекте некоторый его элемент должен быть определенный как начальный - это тот элемент, из которого начинается "чтение" всего объекта (первая буква слова, первый элемент строки матрицы и т.д.). Именно наличие у конструктивного объекта внутренней системы координат обеспечивает возможность его введения в память компьютера.
