- •Содержание курса “Теория алгоритмов и вычислительных процессов”
- •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. Труднорешаемые задачи
Пример 6.2.2. Рассмотрим функцию
g(x1,x2,y) = х2-х1+у, где x1,x2,y N.
Определим функцию f(x1,x2), которую получим при помощи операции , т.е.
f(x1,x2) = (g(x1,x2,y) = 0) = (х2-х1+у = 0).
При некоторых фиксированных значениях аргументов x1,x2 имеем:
1) f(0,0) = (0-0+у =0) = 0.
2) f(2,0) = (0-2+у =0) = 2.
3) f(3,4) = (4-3+у =0) = (1+у = 0) – не определено, т.к. не существует yN, для которого 1+ у = 0. Тогда y = х1 - х2, если х1 >= х2 определена; и неопределенна, если х1 < х2.
Это частично числовая функция.
Пример 6.2.3. Пусть задана функция g(x,y) = х+1+у.
Если к функции g(x,y) применим операцию , то получим уравнение
х+1+у = 0, которое не имеет решений для любого yN. Значит, эта функция нигде не определена.
Пример 6.2.4. Какой результат получим, применяя операцию минимизации:
1) [ Sg(y) – 1 = 0]; [ Sg(y) – 1 = 0] = 1, для любого у отличного от нуля.
2) [ y – х = 0]; [ y – х = 0] = x.
6.3. Тезис Черча
Класс частично рекурсивных функций шире класса примитивно рекурсивных функций, т.к. все примитивно рекурсивные функции являются всюду определенными, а среди частично рекурсивных функций встречаются функции не всюду определенные, а также нигде не определенные.
Понятие частично-рекурсивной функции – одно из основных понятий теории алгоритмов. Его значение есть таким. С одной стороны, каждая стандартно заданная частично-рекурсивной функция является вычислимой определенной процедурой, которая соответствует интуитивному представлению алгоритма, с другой стороны – какие бы не строились классы точно определенных алгоритмов, всегда выяснялось, что числовые функции, которые вычислялись алгоритмами этого класса, были частично-рекурсивными. Практически понятием частично-рекурсивных функций пользуются для доказательства алгоритмической разрешимости или неразрешимости проблем. Поэтому общепринятой есть такая научная гипотеза.
Тезис Черча. Класс алгоритмически вычислимых частичных числовых функций совпадает с классом всех частично-рекурсивных функций.
Утверждение о несуществовании частично-рекурсивной функции эквивалентно несуществованию алгоритма решения соответствующей задачи.
В формулировке этого тезиса входит интуитивное понятие вычислимости, поэтому его нельзя ни доказать, ни опровергнуть в математическом значении. Это факт, в пользу которого свидетельствует многогодовая математическая практика.
Тезис может быть опровергнут построением примера интуитивно вычислимой, но не частично-рекурсивной функции.
Исторически это была первая гипотеза относительно связи между классами интуитивных и точных алгоритмов.
Тезис Черча оказался достаточным, чтобы придать необходимую точность формулировкам алгоритмических проблем и в ряде случаев сделать возможным доказательство их неразрешимости. Причина заключается в том, что обычно в алгоритмических проблемах математики речь идет не об алгоритмах, а о вычислимости некоторых специальным образом построенных функций. В силу тезиса Черча вопрос о вычислимости функции равносилен вопросу о ее рекурсивности. Понятие рекурсивной функции строгое. Поэтому обычная математическая техника позволяет иногда непосредственно доказать, что решающая задачу функция не может быть рекурсивной. Именно этим путем самому Черчу удалось доказать неразрешимость основной алгоритмической проблемы логики предикатов – проблемы тождественной истинности формул исчисления первой ступени.
С определения частично-рекурсивных функций вытекает, что система функций {O(x),S(x),Imn(x)} является полной системой относительно операций суперпозиции, примитивной рекурсии и минимизации во множестве алгоритмически вычислимых частичных числовых функций. Является ли эта система минимальной?
Теорема 6.3.1. Система функций {O(x),S(x)}, есть полной системой относительно операций суперпозиции, примитивной рекурсии и минимизации в множестве алгоритмически вычислимых частичных числовых функций.
Для доказательства этой теоремы достаточно привести схему, которая определяет I11(x) с помощью O(x), S(x). Эта схема такова:
I11(0) = O(x) = 0; I11(x+1) = S(I11(x)).
Частичная рекурсивность – это уточнение понятия вычислимости функции. С помощью этого определения можно доказывать или опровергать вычислимость.
