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

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

Яка амортизована часова складність додавання елемента в кінець динамічного масиву, який подвоює свою місткість у разі заповнення?

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

Алгоритм динамічного програмування Гелда–Карпа точно розв'язує задачу комівояжера. Який його час виконання для n міст?

  1. AO(n³)
  2. BO(n!)
  3. CO(n² 2ⁿ)
  4. DO(2n²)
3.Структури данихСередня

Скільки пам'яті займає матриця суміжності графа з V вершинами?

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

Яку проблему лінійного зондування переважно зменшує подвійне гешування?

  1. AПотребу зберігати ключі в таблиці
  2. BПервинну кластеризацію, коли утворюються довгі серії зайнятих комірок
  3. CПотребу в геш-функції
  4. DВартість O(n) читання значення ключа
5.Теорія графівСередня

Зв’язний граф має 20 вершин і 20 ребер. Скільки ребер k треба вилучити, щоб залишилося остовне дерево?

|V| = 20|E| = 20
k =
6.Теорія графівСкладна
8321311710144ABCDEFG

Скористайтеся алгоритмом Дейкстри, щоб знайти довжину d(F) найкоротшого шляху від A до F у зваженому графі.

початок: Aкінець: F
d(F) =

3Розчини

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

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

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

Копіювання всіх елементів відбувається лише на степенях двійки; якщо розподілити ці витрати на всі додавання, середня вартість одного додавання стала.

Відповідь

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

Відповідь: C · O(n² 2ⁿ)

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

Станів близько n 2ⁿ, і кожен обчислюється за O(n); це експоненційно, але значно швидше, ніж перебирати всі (n − 1)! маршрутів.

Відповідь

C · O(n² 2ⁿ)
3.Структури даних

Відповідь: C · O(V²)

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

Матриця суміжності зберігає V × V елементів, що ефективно для щільних графів; списки суміжності займають O(V + E) і краще підходять для розріджених графів.

Відповідь

C · O(V²)
4.Структури даних

Відповідь: B · Первинну кластеризацію, коли утворюються довгі серії зайнятих комірок

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

Лінійне зондування крокує на 1, тож серії зайнятих комірок зростають і зливаються; подвійне гешування використовує другий геш для розміру кроку, тож різні ключі перевіряють різні послідовності.

Відповідь

B · Первинну кластеризацію, коли утворюються довгі серії зайнятих комірок
5.Теорія графів

Відповідь: k = 1

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

Ребра остовного дерева

20 − 1 = 19

Ребра для вилучення

k = 20 − 19 = 1

Відповідь

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

Відповідь: d(F) = 26

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

Алгоритм Дейкстри раунд за раундом

Кожен рядок: зафіксована вершина, її остаточна відстань і сусіди, чия відстань покращується.

A (0): B: 8, C: 3
C (3): B: 5
B (5): D: 18, G: 15
G (15): E: 19
D (18): F: 29
E (19): F: 26
F (26)

Найкоротший шлях

A → C → B → G → E → F
d(F) = 26

Відповідь

d(F) = 26

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