В окне печати выберите «Сохранить как PDF», чтобы сохранить копию на своём устройстве.
1Формулы и методы
Теория графов
Лемма о рукопожатиях
Σ deg(v) = 2|E|
Полные графы
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
Регулярный граф
|E| = n·k/2
Дерево и лес
|E| = n − 1, |E| = n − c
Листья дерева
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
Эйлер
цикл: все степени чётные; путь: ровно две нечётные степени
Гамильтоновы циклы в Kn
(n − 1)!/2
Обновление в алгоритме Дейкстры
d(v) = min(d(v), d(u) + w(u, v))
Маршруты длины L
(Mᴸ)ij
Метод
Запишите степень каждой вершины; сумма степеней равна удвоенному числу рёбер.
В задачах об эйлеровых путях проверьте, что граф связный, и посчитайте вершины нечётной степени.
Для деревьев используйте n − 1 ребро и лемму о рукопожатиях.
В алгоритме Дейкстры ведите таблицу предварительных расстояний и на каждом шаге фиксируйте нефиксированную вершину с наименьшим расстоянием.
Для минимального остовного дерева отсортируйте рёбра по весу и пропускайте каждое ребро, замыкающее цикл (Краскал), либо растите одно дерево из начальной вершины (Прим).
2Тренировочные задачи
1.Алгоритмы и сложностьСредняя
Примерно сколько сравнений нужно бинарному поиску в худшем случае на отсортированном массиве из 1,000,000 элементов?
AОколо 100
BОколо 1,000
CОколо 500,000
DОколо 20
2.Алгоритмы и сложностьСложная
Алгоритм Штрассена умножает матрицы, используя 7 вместо 8 рекурсивных умножений блоков половинного размера. Каково время его работы?
AΘ(nlog₂ 7), примерно n2,81
BΘ(n² log n)
CΘ(n³)
DΘ(n2)
3.Структуры данныхСредняя
Ключи 50, 30, 70, 20, 40 вставляются в таком порядке в пустое двоичное дерево поиска. Кто левый потомок 30?
A70
B40
C20
D50
4.Структуры данныхСложная
Какая структура данных обеспечивает кэш LRU (least recently used) с операциями get и put за O(1)?
AОдин отсортированный массив
BТолько двоичное дерево поиска
CХеш-таблица в сочетании с двусвязным списком
DТолько стек
5.Теория графовСредняя
Есть ли в связном графе эйлеров цикл, эйлеров путь, не являющийся циклом, или ни то ни другое? Нажмите на ваш ответ.
|V| = 7|E| = 8
1Эйлеров цикл
2Эйлеров путь, не цикл
3ни то, ни другое
6.Теория графовСложная
Алгоритм Прима строит минимальное остовное дерево, начиная с вершины B. Нажмите на ребро, которое он добавляет под номером 4.
начало: Bk = 4
1ребро AB
2ребро BC
3ребро CE
4ребро DE
5ребро DF
6ребро EF
7ребро GB
8ребро GC
9ребро GE
3Растворы
1.Алгоритмы и сложность
Ответ: D · Около 20
Почему это ответ
220 ≈ 1,048,576, поэтому примерно после 20 делений пополам остаётся один элемент.
Ответ
D · Около 20
2.Алгоритмы и сложность
Ответ: A · Θ(nlog₂ 7), примерно n2,81
Почему это ответ
При a = 7 и b = 2 член nlog₂ 7 доминирует над работой сложения O(n²), что даёт примерно n2,81.
Ответ
A · Θ(nlog₂ 7), примерно n2,81
3.Структуры данных
Ответ: C · 20
Почему это ответ
20 меньше 50 и меньше 30, поэтому становится левым потомком 30; 40 становится его правым потомком.
Ответ
C · 20
4.Структуры данных
Ответ: C · Хеш-таблица в сочетании с двусвязным списком
Почему это ответ
Хеш-таблица находит узлы за O(1), а двусвязный список перемещает использованные элементы в начало и удаляет с конца за O(1).
Ответ
C · Хеш-таблица в сочетании с двусвязным списком
5.Теория графов
Ответ: ни то, ни другое
Эйлер, Гамильтон и деревья: связный граф имеет эйлеров цикл (каждое ребро один раз, с возвратом в начало), когда все вершины имеют чётную степень, и эйлеров путь, не являющийся циклом, когда ровно две вершины имеют нечётную степень; тогда путь идёт от одной нечётной вершины к другой. Гамильтонов цикл посещает каждую вершину один раз; в Kn их (n − 1)!/2. У дерева на n вершинах n − 1 ребро, а связный граф с m рёбрами сохраняет остовное дерево после удаления m − n + 1 рёбер.
Кратчайшие пути и остовные деревья: алгоритм Дейкстры фиксирует по одной вершине на шаге: нефиксированную вершину с наименьшим предварительным расстоянием. Её расстояние становится окончательным, а каждый сосед v получает d(v) = min(d(v), d(u) + w(u, v)). Алгоритм Краскала строит минимальное остовное дерево, беря рёбра от лёгких к тяжёлым и пропуская любое ребро, которое замкнуло бы цикл; алгоритм Прима растит одно дерево из начальной вершины, всегда добавляя самое лёгкое ребро, выходящее из него. В остовном дереве на n вершинах n − 1 ребро.