- •Введение
- •Глава 1
- •§ 1. «Алгоритмические джунгли»
- •§ 2. Исходные данные и результаты. Массовость алгоритма
- •§ 4. Понятность алгоритма
- •§ 5. Рекурсивные определения
- •§ 6. Определенность алгоритма
- •§ 1. Роль алгоритмов в науке и технике
- •§ 7. Выводы
- •Глава 2 создание алгоритмов
- •§ 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. Сознание машин. Алгоритмическое моделирование
§ 3. Алгоритмизация процессов
Как известно, автоматизация — это применение машин в области управления. Но тогда оказывается, что проблема автоматизации связана с проблемой разработки алгоритмов. Программы для ЭВМ — это только некоторая разновидность алгоритмов. Чем же отличаются алгоритмы, которые нам нужны при управлении, от алгоритмов, которые были нужны для решения различных задач? Да, собственно говоря, и всем, и ничем. Алгоритм — это инструмент управления. Разница между алгоритмами заключается прежде всего в том, на каких языках они сформулированы и на каких языках задаются их исходные данные и получаются результаты. Остальное зависит от того, каковы исполнители алгоритмов. Составляя алгоритм, нужно учитывать свойства его исполнителя. Конечно, разница между алгоритмами заключается и в том, какие задачи можно решать с их помощью.
Оказывается, между задачами, которые мы рассматривали в начале книги, и задачами, с которыми читатель встретится, если захочет работать в области автоматизации управления, колоссальная разница. И эта разница сразу бросается в глаза. Само название задачи обычно ничего не говорит о том, какие объекты являются исходными данными и что будет результатом. Название результата не объясняет его свойств.
Если даже речь будет идти об управлении отдельным объектом, что гораздо проще управления учреждением или управления страной, задача управления звучит крайне туманно: «определить реакцию управляемого объекта на аварийную ситуацию, в результате которой объект выйдет из аварийной ситуации». Это задача? Конечно, задача. Но о чем идет в ней речь? Какая ситуация является аварийной? В чем заключается реакция системы? Все это точно описать в виде одной лаконичной фразы невозможно.
Математика приобрела современную ясность и лаконичность в результате многовековых усилий человечества. Естественно, для формулировки новых задач еще нет достаточно лаконичного и красивого языка. Но есть ли вообще какой-нибудь язык? Оказывается, есть. И это имеет огромное практическое значение.
Сформулировав задачу, мы надеемся и решить ее. Что же это за язык? Это подходящим образом выбранный алгоритмический язык. Если ,мы сумеем составить алгоритм, которому соответствовал бы процесс, подлежащий автоматизации, то задача четко сформулирована. Она, может быть, и не лаконична, но сформулирована точно.
Чтобы ее можно было решить, нужно теперь придать этому алгоритму удобную для этого форму. Точнее говоря, нужно на другом языке, который понятен имеющемуся исполнителю, построить алгоритм, эквивалентный данному. Может быть, окажется, что новый алгоритм нельзя реализовать за приемлемое время? Это возможно. Тогда нужно искать другой алгоритм, эквивалентный данному и ориентированный на имеющегося исполнителя. Это уже работа математиков и программистов. Они большие мастера своего дела и рано или поздно получат (ли?) эффективный алгоритм, если, конечно, это возможно27. Первый шаг, во всяком случае, уже сделан, задача точно описана. С одной стороны, кое-кто, может быть, огорчится и скажет: «Что же это за постановка задачи — полнее описание процесса ее решения?» Действительно, это не очень коротко, не очень красиво и совсем не поэтично. Но это точно. Многие задачи сегодня иначе и нельзя описать.
С другой стороны, сложившееся положение дало на» понять, что алгоритм — это не только предписание, направляющее нас при решении задачи, но в ряде случаев описание процесса, реализация которого с помощью автомата (например с помощью ЭВМ) и составляет сущность задачи. В ряде случаев никакой другой постановки задачи мы не имеем. Получается, что один алгоритм из класса эквивалентных между собой алгоритмов является постановкой задачи, а некоторый другой алгоритм из этого же класса является ее решением.
Кто же должен осуществлять алгоритмизацию процессов? Конечно, тот специалист, который знает эти процессы. Алгоритмизация процессов — это не математическая проблема, а проблема из области знания, изучающей эти процессы; в наше время приемами алгоритмизации должны овладеть все ученые.
В рассмотренных случаях, описывая процесс, мы стремимся найти алгоритм, позволяющий получать тот же результат, к которому приводит этот процесс. Но бывают и другие задачи. Иногда сам процесс почему-либо представляет большую ценность, и тогда его алгоритмизацию производят для того, чтобы зафиксировать его и иметь возможность в точности воспроизводить.
Примерами таких ценных процессов являются: исполнение музыкального произведения на отдельном инструменте или оркестром, исполнение танца отдельным артистом или группой артистов и т. д.
Для описания некоторых процессов человечество располагает довольно совершенными способами, точнее говоря — алгоритмическими языками. Например, система нот ной записи музыкальных произведений — это формальный алгоритмический язык. Изучая и анализируя понятие алгоритма, мы находим новые применения его в практике людей, а попутно — новые задачи теории алгоритмов.
