Анализ алгоритмов. Вводный курс - По истечении десятилетия элементная база компьютеров, операционные системы, средства доступа и внешний вид программ меняются коренным образом, однако структуры и алгоритмы, лежащие в их основе, остаются неизменными в течение гораздо большего времени. Эти основы начали закладываться тысячелетия назад, когда были разработаны первые алгоритмы.
$CUT$ Название: Анализ алгоритмов. Вводный курс Автор: Макконнелл Дж. Издательство: Техносфера Год: 2002 Страниц: 304 Формат: PDF Размер: 20,2 МБ ISBN: 5-94836-005-9 Качество: Отличное Серия или Выпуск: Мир программирования Язык: Русский
В предлагаемой вниманию читателя книге обсуждаются алгоритмы решения наиболее широко распространённых классов задач, покрывающих практически всю область программирования: поиск и сортировка, численные алгоритмы и алгоритмы на графах. Особое внимание уделено алгоритмам параллельной обработки, редко освещаемым в литературе на русском языке. Книга носит учебный характер. Она может быть использована как вузовскими преподавателями для организации семестрового курса - так и для самостоятельного изучения. Изложение неформальное и чрезвычайно подробное, с большим количеством упражнений, позволяющих вести самоконтроль. Книга может заинтересовать всех, кому приходится самостоятельно писать программы - от программистов банковских систем до научных работников.
Содержание:
Предисловие 1. Основы анализа алгоритмов 1.1. Что такое анализ? 1.2. Что подсчитывать и что учитывать 1.3. Необходимые математические сведения 1.4. Скорости роста 1.5. Алгоритмы вида «разделяй и властвуй» 1.6. Рекуррентные соотношения 1.7. Анализ программ 2. Алгоритмы поиска и выборки 2.1. Последовательный поиск 2.2. Двоичный поиск 2.3. Выборка 2.4. Упражнение по программированию 3. Алгоритмы сортировки 3.1. Сортировка вставками 3.2. Пузырьковая сортировка 3.3. Сортировка Шелла 3.4. Корневая сортировка 3.5. Пирамидальная сортировка 3.6. Сортировка слиянием 3.7. Быстр ал сортировка 3.8. Внешняя многофазная сортировка слиянием 3.9. Дополнительные упражнения 3.10. Упражнения по программированию 4. Численные алгоритмы 4.1. Вычисление значений многочленов 4.2. Умножение матриц 4.3. Решение линейных уравнений 5. Алгоритмы сравнения с образцом 5.1. Сравнение строк 5.2. Приблизительное сравнение строк 5.3. Упражнения по программированию 6. Алгоритмы на графах 6.1. Основные понятия теории графов 6.2. Структуры данных для представления графов 6.3. Алгоритмы обхода в глубину и по уровням 6.4. Алгоритм поиска минимального остовного дерева 6.5. Алгоритм поиска кратчайшего пути 6.6. Алгоритм определения компонент двусвязности 6.7. Разбиения множеств 6.8. Упражнения по программированию 7. Параллельные алгоритмы 7.1. Введение в параллелизм 7.2. Модель PRAM 7.3. Простые параллельные операции 7.4. Параллельный поиск 7.5. Параллельная сортировка 7.6. Параллельные численные алгоритмы 7.7. Параллельные алгоритмы на графах 8. Недетерминированные алгоритмы 8.1. Что такое NP? 8.2. Типичные NP задачи 8.3. Какие задачи относятся к классу NP? 8.4. Проверка возможных решений 9. Другие алгоритмические инструменты 9.1. Жадные приближенные алгоритмы 9.2. Вероятностные алгоритмы 9.3. Динамическое программирование 9.4. Упражнения по программированию А. Таблица случайных чисел Б. Генерация псевдослучайных чисел Б.1. Случайная последовательность в произвольном интервале Б.2. Пример применения Б.3. Итоги В. Ответы к упражнениям Литература