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

Аркуші з формулами, ключові кроки методів для кожної теми та 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
Ейлер
цикл: усі степені парні; шлях: рівно 2 непарні степені
Гамільтонові цикли в 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.Алгоритми та складністьСередня

Яка часова складність: for i = 1 to n: (j = 1; while j < n: j = j × 2)?

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

Чому алгоритм Дейкстри може давати неправильні результати, коли деякі ваги ребер від'ємні?

  1. AВін зациклюється на кожному від'ємному ребрі
  2. BВід'ємні числа неможливо зберігати в черзі з пріоритетами
  3. CВершину остаточно фіксують під час вилучення, але пізніше від'ємне ребро ще може дати їй коротший шлях
  4. DВін працює лише на неорієнтованих графах
3.Структури данихСередня

Яка часова складність пошуку ключа в збалансованому бінарному дереві пошуку?

  1. AO(log n)
  2. BO(n log n)
  3. CO(n)
  4. DO(1)
4.Структури данихСкладна

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

  1. AB+ дерева зберігають дані лише в корені
  2. BУсі записи розташовані у зв'язаних листках, що робить сканування діапазонів ефективним
  3. CB+ дерева не потребують збалансування
  4. DB+ дерева використовують бінарні внутрішні вузли, що зменшує кількість зчитувань із диска
5.Теорія графівСередня

Дерево має 2 вершин степеня 3, 2 вершин степеня 4, 4 вершин степеня 2, а всі його інші вершини — листки (степінь 1). Скільки листків L воно має?

2 × deg 32 × deg 44 × deg 2
L =
6.Теорія графівСкладна
310201675172ABCDEF

Знайдіть загальну вагу W мінімального остовного дерева зваженого графа.

|V| = 6|E| = 8
W =

3Розчини

1.Алгоритми та складність

Відповідь: A · O(n log n)

Чому це відповідь

Внутрішній цикл виконується близько log₂ n разів для кожної з n зовнішніх ітерацій, що дає O(n log n).

Відповідь

A · O(n log n)
2.Алгоритми та складність

Відповідь: C · Вершину остаточно фіксують під час вилучення, але пізніше від'ємне ребро ще може дати їй коротший шлях

Чому це відповідь

Жадібний крок спирається на невід'ємні ваги, щоб вилучені відстані були остаточними; коли ваги можуть бути від'ємними, використовують Беллмана–Форда.

Відповідь

C · Вершину остаточно фіксують під час вилучення, але пізніше від'ємне ребро ще може дати їй коротший шлях
3.Структури даних

Відповідь: A · O(log n)

Чому це відповідь

Збалансоване дерево має висоту близько log₂ n, тому пошук проходить одним шляхом від кореня до листка.

Відповідь

A · O(log n)
4.Структури даних

Відповідь: B · Усі записи розташовані у зв'язаних листках, що робить сканування діапазонів ефективним

Чому це відповідь

У B+ дереві внутрішні вузли лише спрямовують пошук, а листки зв'язані в порядку ключів, тож запит діапазону знаходить перший ключ і далі проходить уздовж листків.

Відповідь

B · Усі записи розташовані у зв'язаних листках, що робить сканування діапазонів ефективним
5.Теорія графів

Відповідь: L = 8

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

Лема про рукостискання для дерева

L + 22 = 2(L + 8) − 2
L = 8

Відповідь

L = 8

Скорочення: L = 2 + Σ (d − 2) за вершинами зі степенем d ≥ 3.

6.Теорія графів

Відповідь: W = 34

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

Алгоритм Крускала

BE (2): взяти
AB (3): взяти
DE (5): взяти
CE (7): взяти
AC (10): пропустити, замикає цикл
BD (16): пропустити, замикає цикл
DF (17): взяти

Загальна вага

W = 2 + 3 + 5 + 7 + 17 = 34

Відповідь

W = 34

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