Алгоритмы и структуры данных: шпаргалка-пакет

Листы формул, ключевые шаги методов по каждой теме и тренировочные задачи (6) с полными решениями в конце.

Новые задачиНазад к курсу

В окне печати выберите «Сохранить как 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

Метод

  1. Запишите степень каждой вершины; сумма степеней равна удвоенному числу рёбер.
  2. В задачах об эйлеровых путях проверьте, что граф связный, и посчитайте вершины нечётной степени.
  3. Для деревьев используйте n − 1 ребро и лемму о рукопожатиях.
  4. В алгоритме Дейкстры ведите таблицу предварительных расстояний и на каждом шаге фиксируйте нефиксированную вершину с наименьшим расстоянием.
  5. Для минимального остовного дерева отсортируйте рёбра по весу и пропускайте каждое ребро, замыкающее цикл (Краскал), либо растите одно дерево из начальной вершины (Прим).

2Тренировочные задачи

1.Алгоритмы и сложностьСредняя

Каково решение рекуррентного соотношения T(n) = 2T(n/2) + O(1)?

  1. AO(log n)
  2. BO(n²)
  3. CO(n log n)
  4. DO(n)
2.Алгоритмы и сложностьСложная

Для какого варианта задачи о рюкзаке жадное правило «брать предметы в порядке ценности на единицу веса» всегда даёт оптимальный ответ?

  1. AДля обоих вариантов
  2. BДля непрерывного (дробного) рюкзака, где предметы можно делить
  3. CДля рюкзака 0/1, где предметы всегда нужно брать целиком
  4. DНи для одного варианта
3.Структуры данныхСредняя

Какой метод разрешения коллизий хранит конфликтующие ключи в списке в той же корзине?

  1. AЛинейное пробирование
  2. BДвойное хеширование
  3. CКвадратичное пробирование
  4. DМетод цепочек (separate chaining)
4.Структуры данныхСложная

Почему базы данных часто используют для индексов B+ деревья, а не обычные B-деревья?

  1. AB+ деревья используют двоичные внутренние узлы, что сокращает число чтений с диска
  2. BB+ деревья хранят данные только в корне
  3. CB+ деревья не нужно балансировать
  4. DВсе записи находятся в связанных листьях, что делает сканирование диапазонов эффективным
5.Теория графовСредняя

Сколько различных гамильтоновых циклов, H, в полном графе K5? Циклы, отличающиеся только начальной вершиной или направлением, считаются одним и тем же.

K5
H =
6.Теория графовСложная
456131214151ABCDEF

С помощью алгоритма Дейкстры найдите длину d(F) кратчайшего пути от A до F во взвешенном графе.

начало: Aконец: F
d(F) =

3Растворы

1.Алгоритмы и сложность

Ответ: D · O(n)

Почему это ответ

По основной теореме nlog₂ 2 = n доминирует над постоянной работой, поэтому T(n) = Θ(n), как при поиске максимума делением пополам.

Ответ

D · O(n)
2.Алгоритмы и сложность

Ответ: B · Для непрерывного (дробного) рюкзака, где предметы можно делить

Почему это ответ

Когда предметы можно делить, выбор по лучшему отношению оптимален; в рюкзаке 0/1 предмет с высоким отношением может помешать лучшей комбинации, поэтому нужно динамическое программирование.

Ответ

B · Для непрерывного (дробного) рюкзака, где предметы можно делить
3.Структуры данных

Ответ: D · Метод цепочек (separate chaining)

Почему это ответ

Метод цепочек хранит для каждой корзины связный список (или другую структуру); открытая адресация ищет другую свободную ячейку в самой таблице.

Ответ

D · Метод цепочек (separate chaining)
4.Структуры данных

Ответ: D · Все записи находятся в связанных листьях, что делает сканирование диапазонов эффективным

Почему это ответ

В B+ дереве внутренние узлы только направляют поиск, а листья связаны в порядке ключей, поэтому запрос по диапазону находит первый ключ и затем идёт по листьям.

Ответ

D · Все записи находятся в связанных листьях, что делает сканирование диапазонов эффективным
5.Теория графов

Ответ: H = 12

Эйлер, Гамильтон и деревья: связный граф имеет эйлеров цикл (каждое ребро один раз, с возвратом в начало), когда все вершины имеют чётную степень, и эйлеров путь, не являющийся циклом, когда ровно две вершины имеют нечётную степень; тогда путь идёт от одной нечётной вершины к другой. Гамильтонов цикл посещает каждую вершину один раз; в Kn их (n − 1)!/2. У дерева на n вершинах n − 1 ребро, а связный граф с m рёбрами сохраняет остовное дерево после удаления m − n + 1 рёбер.

Посчитайте

H = (5 − 1)!/2 = 24/2 = 12

Ответ

H = 12
6.Теория графов

Ответ: d(F) = 20

Кратчайшие пути и остовные деревья: алгоритм Дейкстры фиксирует по одной вершине на шаге: нефиксированную вершину с наименьшим предварительным расстоянием. Её расстояние становится окончательным, а каждый сосед v получает d(v) = min(d(v), d(u) + w(u, v)). Алгоритм Краскала строит минимальное остовное дерево, беря рёбра от лёгких к тяжёлым и пропуская любое ребро, которое замкнуло бы цикл; алгоритм Прима растит одно дерево из начальной вершины, всегда добавляя самое лёгкое ребро, выходящее из него. В остовном дереве на n вершинах n − 1 ребро.

Алгоритм Дейкстры по шагам

В каждой строке: зафиксированная вершина, её окончательное расстояние и соседи, у которых расстояние улучшается.

A (0): B: 4, C: 5
B (4): D: 10, E: 5
C (5)
E (5): F: 20
D (10)
F (20)

Кратчайший путь

A → B → E → F
d(F) = 20

Ответ

d(F) = 20

ExamProblems · examproblems.com/courses/data-structures-and-algorithms