О книге: Грокаем алгоритмы (Grokking Algorithms), Адитья Бхаргава. 2017
Рекомендация: рекомендую всем, кто начинает решать алгоритмические задачи,
как книгу для начинающих
Описание проекта: Конспект и решение задач из книги
Важное примечание. Автор рекомендует самостоятельно выполнять код всех
примеров и упражнений, указанных в книге. Это очень важно. Если у вас что-то не
получается, вы можете воспользоваться помощью этого источника:
github.com/egonschiele/grokking_algorithms
По крайней мере просто перепишите, а через какое-то вернитесь и повторите заново.
Жми ★ если понравилось.
Глава 1. Знакомство с алгоритмами
- Время выполнения алгоритмов
- Бинарный поиск
- Задача коммивояжере (простое решение)
- Как работает память
- Массивы и связанные списки
- Сортировка выбором
- Рекурсия
- Вычисление факториала
- Стек и стек вызовов
- "Разделяй и властвуй"
- Алгоритм Евклида
- "Разделяй и властвуй" при работе с массивами
- Быстрая сортировка
- Эффективность алгоритма быстрой сортировки
- Хеш-функции
- Коллизии
- Что такое граф
- Направленные, ненаправленные графы, деревья
- Поиск в ширину
- Очередь, использование очереди для поиска в ширину
- Топологическая сортировка
- Алгорит Дейкстры
- Поиск кратчайшего пути во взвешенном графе
- Ребра с отрицательным весом
- Задача составления расписания
- Задача о рюкзаке (приближенное решение)
- Задача о покрытии множества
- Приближенные алгоритмы
- NP-полные задачи
- Задача о коммивояжере (приближенное решение)
Глава 9. Динамическое программирование
- Динамическое программирование
- Задача о рюкзаке (оптимальное решение)
- Оптимизация туристического маршрута
- Самая длинная общая подстрока
- Самая длинная общая подпоследовательность
Глава 10. Алгоритм k ближайших соседей
- Построение рекомендательной системы
- Расчет расстояния между точками
- Извлечение признаков
- Классификация и регрессия
- Знакомство с машинным обучением
Глава 11. Что дальше?
- Деревья
- Инвертированные индексы
- Преобразование Фурье
- Параллельные алгоритмы
- Фильтры Блума и HyperLogLog
- Алгоритмы SHA
- Обмен ключами Диффи-Хеллмана
- Линейное программирование