Глава 1. Знакомство с алгоритмами
- Время выполнения алгоритмов
- Бинарный поиск
- Задача коммивояжере (простое решение)
Глава 2. Сортировка выбором
- Как работает память
- Массивы и связанные списки
- Сортировка выбором
Глава 3. Рекурсия
- Рекурсия
- Вычисление факториала
- Стек и стек вызовов
Глава 4. Быстрая сортировка
- "Разделяй и властвуй"
- Алгоритм Евклида
- "Разделяй и властвуй" при работе с массивами
- Быстрая сортировка
- Эффективность алгоритма быстрой сортировки
Глава 5. Хеш-таблицы
- Хеш-функции
- Коллизии
Глава 6. Поиск в ширину
- Что такое граф
- Направленные, ненаправленные графы, деревья
- Поиск в ширину
- Очередь, использование очереди для поиска в ширину
- Топологическая сортировка
Глава 7. Алгоритм Дейкстры
- Алгорит Дейкстры
- Поиск кратчайшего пути во взвешенном графе
- Ребра с отрицательным весом
Глава 8. Жадные алгоритмы
- Задача составления расписания
- Задача о рюкзаке (приближенное решение)
- Задача о покрытии множества
- Приближенные алгоритмы
- NP-полные задачи
- Задача о коммивояжере (приближенное решение)
Глава 9. Динамическое программирование
- Динамическое программирование
- Задача о рюкзаке (оптимальное решение)
- Оптимизация туристического маршрута
- Самая длинная общая подстрока
- Самая длинная общая подпоследовательность
Глава 10. Алгоритм k ближайших соседей
- Построение рекомендательной системы
- Расчет расстояния между точками
- Извлечение признаков
- Классификация и регрессия
- Знакомство с машинным обучением
- Деревья
- Инвертированные индексы
- Преобразование Фурье
- Параллельные алгоритмы
- Фильтры Блума и HyperLogLog
- Алгоритмы SHA
- Обмен ключами Диффи-Хеллмана
- Линейное программирование