Продвинутые темы
Имея основы и базовые концепции, мы переходим к территории, соединяющей чистую математику и реальные алгоритмы: теория графов, рекуррентные соотношения и производящие функции.
Теория графов
Граф состоит из множества вершин и множества рёбер .
Представления графов
from collections import defaultdict
# Список смежности
граф = defaultdict(list)
рёбра = [(0, 1), (0, 2), (1, 2), (2, 3)]
for u, v in рёбра:
граф[u].append(v)
граф[v].append(u)
for вершина, соседи in sorted(граф.items()):
print(f" {вершина}: {соседи}")
Обход графов
BFS (поиск в ширину) использует очередь, DFS (поиск в глубину) использует стек (или рекурсию).
Формула Эйлера для планарных графов
Рекуррентные соотношения
Последовательность Фибоначчи
Формула Бине (замкнутая форма):
Основная теорема (Master Theorem)
Для рекуррентностей вида :
| Алгоритм | Рекуррентность | Сложность |
|---|---|---|
| Бинарный поиск | ||
| Сортировка слиянием |
Производящие функции
Производящая функция кодирует последовательность как формальный степенной ряд: