Фрагмент для ознакомления
2
Введение
Традиционно в программировании понятие алгоритмической сложности связано с использованием ресурсов компьютера. То есть процессорное время, необходимое для выполнения программы, потребление машинной памяти и так далее. Память обычно описывается с точки зрения количества данных, игнорируя память, используемую для записи программных команд. Время рассчитывается в относительных единицах, поэтому эта оценка должна, по возможности, быть одинаковой для машин с разной тактовой частотой и немного отличающейся архитектурой.
Этот подход развивался исторически и ориентирован в первую очередь на научные и инженерные приложения теории алгоритмов. Объем данных значительно превышает размер самой программы, и программа может работать часами. Если в научных и инженерных приложениях длительное время вычислений приносит только неудобства пользователям, то во многих других областях ресурсы настолько критичны, что с общим удобством проекта из-за неэффективной работы программы могут возникнуть проблемы. К таким областям относятся системы реального времени. Это компьютерные системы, которые управляют реальными процессами или обрабатывают информацию, используемую для принятия оперативных решений.
В этой статье мы подробно исследуем два ее свойства алгоритмической сложности: темпоральную и емкостную. Однако здесь не обсуждается текстовая сложность (длина) алгоритма. Это потому, что она характеризует исполнителя (машину), его язык, а не то, как он решает задачу. Не описывает он и логическую сложность разработки алгоритма, т.е. сколько месяцев уходит на написание программы, поскольку дать объективные количественные характеристики невозможно. Оба относятся к области компьютерных наук, называемой «технологиями программирования» .
1. Понятие алгоритмов и мер их сложности.
Во всех сферах своей деятельности, особенно в обработке информации, человек сталкивается с разными методами или способами решения задач. Некоторые дополнительные требования приводят к неформальному определению алгоритма.
Определение 1.1: Алгоритм — это конечное предписание, данное на языке, который определяет конечную последовательность допустимых элементарных операций для решения проблемы, общей для класса возможных исходных данных.
Будем говорить, что алгоритм реализует отображение D → R, где D — область (множество) исходных данных задачи, а R — множество возможных результатов. Такие отображения могут быть несовершенными, поэтому вводятся следующие понятия:
Алгоритм называется частичным, если он дает результаты только для некоторого d + D, и полным алгоритмом, если он дает правильные результаты для всех d + D.
Теория алгоритмов ввела различные формальные определения алгоритмов, и удивительные научные результаты доказывают, что эти формальные определения эквивалентны в смысле равной мощности. Вариант устного определения алгоритма принадлежит русскому ученому А.Н. Колмогоров и А.А. Марков .
Определение 1. (Колмогоров): Алгоритм — это система вычислений, выполняемых по строго определенным правилам, которые через определенное число шагов приводят к решению задачи.
Определение 2 (Марков): Алгоритм — это точное предписание, которое определяет вычислительный процесс от ввода переменных до достижения желаемого результата.
Показать больше
Фрагмент для ознакомления
3
1. Алгоритмы: построение и анализ. - Кормен Т., Лейзерсон Ч., Ривест Р. М.: МЦНМО, 2001 г. - 960 с., 263 ил.
2. Структуры данных и алгоритмы: Пер. с англ.: - Ахо А., Хопкрофт Дж., Ульман Дж. М.: Издательский дом «Вильямс», 2001 г. -384 с., ил.
3. . Машина Поста. - Успенский В.А. М.: Наука, 1999 г. - 96 с.
4. Теория автоматов - Карпов Ю.Г.СПб.: Питер, 2002 г. - 224с., ил.
5. . Искусство программирования. Тома 1, 2, 3. 3-е изд. Кнут Д. Пер. с англ. : Уч. пос. - М.: Изд. дом "Вильямс", 2001 г.
6. . Анализ алгоритмов. Вводный курс. - Макконнел Дж. М.: Техносфера, 2002 г. -304 с.
7. . Дискретная математика для программистов. - Новиков Ф. А. СПб.: Питер, 2001 г. - 304 с., ил.
8. . Дискретный анализ. Учебное пособие для студентов, специализирующихся по прикладной математике. - Издание 2-ое, исправленное. Романовский И.В. - СПб.; Невский диалект, 2000 г. - 240 с., ил.
9. . Алгоритмы и структуры данных: Пер. с англ. - Вирт Н. 2-ое изд., испр. - СПб.: Невский диалект, 2001 г. - 352 с., ил.