- Артикул:00-01023976
- Автор: Бхаргава А.
- ISBN: 978-5-4461-0923-4
- Обложка: Мягкая обложка
- Издательство: Питер (все книги издательства)
- Город: Санкт-Петербург
- Страниц: 288
- Формат: 70х100/16
- Год: 2024
- Вес: 722 г
- Серия: Библиотека программиста (все книги серии)
Алгоритмы — это всего лишь пошаговые инструкции решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузиться в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время?
Откройте великолепно иллюстрированную книгу, и вы сразу поймете, что алгоритмы — это просто.
А грокать алгоритмы — это веселое и увлекательное занятие.
Оглавление
Предисловие
Благодарности
О книге
Структура книги
Как работать с этой книгой
Для кого предназначена эта книга
Условные обозначения и загружаемые материалы
Об авторе
От издательства
Глава 1. Знакомство с алгоритмами
Введение
Что вы узнаете об эффективности алгоритмов
Что вы узнаете о решении задач
Бинарный поиск
Более эффективный поиск
Упражнения
Время выполнения
«О-большое»
Время выполнения алгоритмов растет с разной скоростью
Наглядное представление «О-большое»
«О-большое» определяет время выполнения в худшем случае
Типичные примеры «О-большого»
Упражнения
Задача о коммивояжере
Шпаргалка
Глава 2. Сортировка выбором
Как работает память
Массивы и связанные списки
Связанные списки
Массивы
Терминология
Упражнения
Вставка в середину списка
Удаление
Упражнения
Сортировка выбором
Пример кода
Шпаргалка
Глава 3. Рекурсия
Рекурсия
Базовый случай и рекурсивный случай
Стек
Стек вызовов
Упражнения
Стек вызовов с рекурсией
Упражнения
Шпаргалка
Глава 4. Быстрая сортировка
«Разделяй и властвуй»
Упражнения
Быстрая сортировка
Снова об «О-большом»
Сортировка слиянием и быстрая сортировка
Средний и худший случай
Упражнения
Шпаргалка
Глава 5. Хеш-таблицы
Хеш-функции
Упражнения
Примеры использования
Использование хеш-таблиц для поиска
Исключение дубликатов
Использование хеш-таблицы как кэша .
Шпаргалка
Коллизии
Быстродействие
Коэффициент заполнения
Хорошая хеш-функция
Упражнения
Шпаргалка
Глава 6. Поиск в ширину
Знакомство с графами
Что такое граф?
Поиск в ширину
Поиск кратчайшего пути
Очереди
Упражнения
Реализация графа
Реализация алгоритма
Время выполнения
Упражнения
Шпаргалка
Глава 7. Алгоритм Дейкстры
Работа с алгоритмом Дейкстры
Терминология
История одного обмена
Ребра с отрицательным весом
Реализация
Упражнения
Шпаргалка
Глава 8. Жадные алгоритмы
Задача составления расписания
Задача о рюкзаке
Упражнения
Задача о покрытии множества
Приближенные алгоритмы
Упражнения
NP-полные задачи
Задача о коммивояжере — шаг за шагом
Как определить, что задача является NP-полной?
Упражнения
Шпаргалка
Глава 9. Динамическое программирование
Задача о рюкзаке
Простое решение
Динамическое программирование
Задача о рюкзаке: вопросы
Что произойдет при добавлении элемента?
Упражнения
Что произойдет при изменении порядка строк?
Можно ли заполнять таблицу по столбцам, а не по строкам?
Что произойдет при добавлении меньшего элемента?
Можно ли взять часть предмета?
Оптимизация туристического маршрута
Взаимозависимые элементы
Может ли оказаться, что решение требует более двух «подрюкзаков»?
Возможно ли, что при лучшем решении в рюкзаке остается пустое место?
Упражнения
Самая длинная общая подстрока
Построение таблицы
Заполнение таблицы
Решение
Самая длинная общая подпоследовательность
Самая длинная общая подпоследовательность — решение
Упражнения
Шпаргалка
Глава 10. Алгоритм к ближайших соседей
Апельсины и грейпфруты
Построение рекомендательной системы
Извлечение признаков
Упражнения
Регрессия
Выбор признаков
Упражнения
Знакомство с машинным обучением
OCR
Построение спам-фильтра
Прогнозы на биржевых торгах
Шпаргалка
Глава 11. Что дальше?
Деревья
Инвертированные индексы
Преобразование Фурье
Параллельные алгоритмы
MapReduce
Для чего нужны распределенные алгоритмы?
Функция тар
Функция reduce
Фильтры Блума и HyperLogLog
Фильтры Блума
HyperLogLog
Алгоритмы SHA
Сравнение файлов
Проверка паролей
Локально-чувствительное хеширование
Обмен ключами Диффи—Хеллмана
Линейное программирование
Эпилог
Ответы к упражнениям
Артикул 00-01020413