Алгоритмы, структуры данных, автоматы, теория вычислений
1. Кормен Томас, Лейзерсон, Ривест, Штайн — Алгоритмы. Построение и анализ, 3-е изд., 2013
-
Что изучаем:
- Основные структуры данных: массивы, списки, стеки, очереди, деревья, графы, хэш-таблицы.
- Алгоритмы сортировки и поиска: быстрая сортировка, слияние, пирамидальная сортировка, бинарный поиск и др.
- Алгоритмы на графах: DFS, BFS, кратчайшие пути, MST (Minimum Spanning Tree).
- Теория сложности: оценка временной и пространственной сложности алгоритмов (O-нотация, Ω, Θ).
- Основы динамического программирования, жадных алгоритмов, разбиение и рекурсия.
-
Что получаем:
- Системное понимание эффективных алгоритмов и структур данных.
- Навыки анализа производительности и выбора подходящего алгоритма для задачи.
- Базу для оптимизации программ, решения задач на соревнованиях, backend и embedded-разработки.
2. Хопкрофт Д., Мотвани Р., Ульман Дж. — Введение в теорию автоматов, языков и вычислений, 2008
-
Что изучаем:
- Формальные языки, грамматики, конечные автоматы (DFA/NFA).
- Регулярные выражения и их связь с автоматами.
- Контекстно-свободные грамматики и синтаксический анализ.
- Машины Тьюринга и основы вычислительной теории.
- Теория NP-полноты, сложность алгоритмов.
-
Что получаем:
- Понимание как компьютеры решают задачи на абстрактном уровне.
- Базу для разработки компиляторов, интерпретаторов, парсеров.
- Теоретические знания для анализа алгоритмов и языков программирования.
3. В. В. Григорьев-Голубев — Теория вероятностей и математическая статистика. Руководство по решению
-
Что изучаем:
- Основы вероятностного мышления: вероятности событий, условные вероятности, независимость.
- Случайные величины, распределения (нормальное, биномиальное, пуассон).
- Математическое ожидание, дисперсия, ковариация.
- Законы больших чисел, центральная предельная теорема.
- Основы статистического анализа и проверки гипотез.
-
Что получаем:
- Навыки количественного анализа данных и случайных процессов.
- Основа для алгоритмов с вероятностными компонентами, машинного обучения и анализа больших данных.
- Понимание ошибок измерений, вероятностных оценок и статистики.
Итог по разделу “Алгоритмы, структуры данных, автоматы, теория вычислений”:
| Книга | Что изучаем | Практическая польза |
|---|---|---|
| Кормен и др. | Структуры данных, алгоритмы, анализ сложности | Оптимизация кода, эффективное программирование, подготовка к собеседованиям, соревнованиям |
| Хопкрофт и др. | Теория автоматов, формальные языки, вычислимость | Создание компиляторов, парсеров, языков программирования, глубокое понимание вычислений |
| Григорьев-Голубев | Вероятность, статистика, случайные процессы | Машинное обучение, анализ данных, оценка алгоритмов с вероятностными компонентами |
Главный эффект:
- После этих трёх книг у тебя будет и практическая база алгоритмов и структур данных, и теоретическое понимание вычислимости, и инструменты работы с вероятностями и случайными процессами.
- Это ключевой раздел для системного программирования, backend, high-performance и распределённых систем.