- •Введение
- •Глава 1
- •§ 1. «Алгоритмические джунгли»
- •§ 2. Исходные данные и результаты. Массовость алгоритма
- •§ 4. Понятность алгоритма
- •§ 5. Рекурсивные определения
- •§ 6. Определенность алгоритма
- •§ 7. Выводы
- •Глава 2 создание алгоритмов
- •§ 1. Роль алгоритмов в науке и технике
- •§ 2. Как возникают алгоритмы
- •§ 3. Алгоритмы в математике
- •§ 4. Алгоритм Евклида
- •§ 5. Решето Эрагосфена
- •§ 6. Алгоритм разложения на простые множители. Определение наименьшего кратного двух чисел
- •§ 7. Распознавание алгебраического тождества
- •§ 8. Задачи на построение алгоритмов
- •Глава 3 кризис математики в начале XX века
- •§ 1. Арифметизация математики
- •§ 2. Теория множеств
- •§ 3. Кардинальные числа
- •§ 4. Антиномии
- •§ 5. Выводы из антиномий
- •Глава 4 логические теории алгоритмов
- •§ 1. Рекурсивные функции
- •§ 2. Машины Тьюринга
- •§ 3. Нормальные алгоритмы Маркова
- •§ 4. Эквивалентность описанных теорий
- •Глава 5
- •§ 1. Массовые проблемы. Неразрешимость проблем
- •§ 2. Экстраалгоритм и три неразрешимые проблемы
- •§ 3, Некоторые замечания
- •Глава 6 электронные вычислительные машины и программирование
- •§ 1. Устройство эвм
- •§ 2. Процессоры эвм. Рабочий цикл
- •§ 3. Что такое программа
- •§ 4. Особенности современных эвм
- •§ 5. Входные языки программирования
- •§ 6. Необходимость содержательной теории алгоритмов. Какой она должна быть
- •Г л а в а 7 формальные языки
- •§ 1. Анализ естественного языка
- •§ 2. Искусственные языки. Формальные языки
- •§ 3. Буквы, связи, оболочки, конструкции
- •§ 4. Формальные грамматики
- •§ 5. Нотация Бекуса. Тезаурусы
- •§ 1. Что такое операция?
- •§ 2. Натуральные операции
- •§ 4. Первичные алгоритмы
- •§ 5. Натуральные алгоритмы
- •§ 6. Ограничения на структуру исходных данных сняты
- •§ 8. Соотношение с алгоритмами в интуитивном смысле
- •§ 10. Исследование тупиков (клинчей)
- •§ 11. Формальная семантика формального языка
- •Глава 9 математическое обеспечение эвм
- •§ 1. Анализ эвм и программ
- •§ 2. Что такое математическое обеспечение эвм
- •§ 3. Функциональная классификация программ математического обеспечения эвм
- •§ 4. Операционные системы
- •И автоматизация процессов
- •§ I. Использование эвм для управления
- •§ 2. Информационные системы
- •§ 3. Алгоритмизация процессов
- •§ 4. Язык алгоритмизации процессов
- •§ 5. Наука и искусство алгоритмизации
- •Заключение
- •§ 1. Может ли машина мыслить? Может ли человек решить алгоритмически неразрешимую проблему?
- •§ 2. Детерминированность машин. Самообучение
- •§ 3. Сознание машин. Алгоритмическое моделирование
§ 4. Эквивалентность описанных теорий
Итак, мы познакомились с теориями, каждая из которых уточняет понятие алгоритма. Но это уточнение не распространяется на все алгоритмы, а лишь на одно узкое семейство их. Можно сказать, что каждая теория является теорией некоторых избранных алгоритмов. Алгоритмы, с которыми мы имеем дело на практике, как правило, не принадлежат ни одному из таких семейств. Избранные алгоритмы каждого вида пригодны для решения ряда теоретических вопросов, но они не предназначены для удовлетворения практических потребностей.
Доказано, что в теоретическом отношении все рассмотренные теории эквивалентны. Это значит, что научные результаты, полученные с помощью алгоритмов, изученных в какой-либо из этих теорий, могут быть также получены с помощью алгоритмов, изученных в любой другой.
Тем не менее отказаться от всех таких теорий в пользу какой-нибудь одной было бы ошибкой. Связано это с тем, что в некоторых случаях легче получить результат с помощью алгоритмов одного из классов, а в других — с помощью алгоритмов другого класса.
Связь каждой теории избранных алгоритмов со всеми остальными алгоритмами осуществляется с помощью основных тезисов теорий. Но основной тезис позволяет выявлять случаи невозможности алгоритмов, однако ничего не дает нам, если требуется получить хороший, удобный для практики алгоритм. Кроме того, как уже было сказано, основной тезис каждой теории избранных алгоритмов является лишь очень вероятной гипотезой, а не строгой теоремой.
Отметим, что теории рекурсивных функций и машин Тьюринга являются косвенными теориями алгоритмов, в отличие от теории нормальных алгоритмов, изучающей алгоритмы непосредственно. Во всех этих теориях исходными данными и результатами для алгоритмов являются конструктивные объекты частного вида — слова (записи целых чисел тоже являются словами).
Теперь мы рассмотрим несколько примеров применения теорий избранных алгоритмов для исследования неразрешимых проблем, а затем познакомимся с некоторыми классами алгоритмов, имеющими большое практическое значение.
Глава 5
АЛГОРИТМИЧЕСКИ НЕРАЗРЕШИМЫЕ ПРОБЛЕМЫ
§ 1. Массовые проблемы. Неразрешимость проблем
Задачи (проблемы), с которыми нам приходится встречаться на практике, можно подразделить на одиночные и массовые.
Задача «найти сумму чисел 5 и 7» может служить примером одиночных проблем. Можно было бы привести огромное число одиночных проблем, очень похожих на приведенную. Но возможна задача «найти сумму целых неотрицательных чисел х и у». Это проблема массовая, содержащая одиночные проблемы в себе как частные случаи. В каком же смысле такая массовая проблема может быть решена? Ведь конкретных значений х и у мы не знаем и поэтому получить конкретное значение суммы не можем. Единственный способ решения приведенной массовой проблемы состоит в том, чтобы найти алгоритм получения суммы любых двух целых неотрицательных чисел.
А существуют ли неразрешимые вообще проблемы, которые при любом конечном наборе потенциально осуществимых операций окажутся неразрешимыми?
После ознакомления с несколькими традиционными теориями алгоритмов и с некоторыми примерами антиномий мы с уверенностью можем сказать, что существуют. Принципиально неразрешимыми должны быть алгоритмы получения объектов, которые парадоксальны, или решения проблем, из которых вытекало бы (если бы они были разрешимы) существование парадоксальных объектов.
Если дана некоторая библиотека (произвольная; в этом массовость проблемы), для разделов которой составлены каталоги, то проблема составления каталога всех несамоназывающихся и только несамоназывающихся каталогов (см. гл. 3, § 4) неразрешима (нельзя построить для ее решения алгоритм), и неразрешима она безнадежно, независимо от набора операций, которыми можно для ее решения пользоваться. Рассмотрим некоторые примеры подобных «абсурдных» массовых проблем.
