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

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

Чи правильно казати, що алгоритм O(n²) є також O(n³)?

  1. AНі, бо для великих n n³ менше за n²
  2. BНі, бо «велике O» завжди має вказувати точну швидкість зростання функції
  3. CТак, бо «велике O» — верхня межа, а n² зростає не швидше, ніж n³
  4. DТак, але лише якщо n менше за 100
2.Алгоритми та складністьСкладна

Узявши обидва кінці кожного ребра максимального (за включенням) паросполучення, отримують вершинне покриття. Наскільки воно добре?

  1. AЩонайбільше в log n разів більше за мінімум
  2. BНевідомої якості порівняно з оптимумом
  3. CЩонайбільше вдвічі більше за мінімальне вершинне покриття
  4. DЗавжди мінімальне вершинне покриття
3.Структури данихСередня

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

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

Чим radix-дерево (стиснене префіксне дерево) краще за звичайне trie?

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

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

K5
H =
6.Теорія графівСкладна
17203413916ABCDE

Алгоритм Пріма будує мінімальне остовне дерево, починаючи з вершини D. Клікніть ребро, яке він додає як ребро номер 3.

початок: Dk = 3
  1. 1ребро AB
  2. 2ребро AC
  3. 3ребро BC
  4. 4ребро BD
  5. 5ребро CE
  6. 6ребро DE
  7. 7ребро BE

3Розчини

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

Відповідь: C · Так, бо «велике O» — верхня межа, а n² зростає не швидше, ніж n³

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

«Велике O» — верхня межа, тож твердження правильне, але не точне; Θ(n²) задає точну швидкість зростання.

Відповідь

C · Так, бо «велике O» — верхня межа, а n² зростає не швидше, ніж n³
2.Алгоритми та складність

Відповідь: C · Щонайбільше вдвічі більше за мінімальне вершинне покриття

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

Ребра паросполучення не мають спільних вершин, тож оптимуму потрібна щонайменше одна вершина на ребро, а цей метод бере дві: це 2-наближення.

Відповідь

C · Щонайбільше вдвічі більше за мінімальне вершинне покриття
3.Структури даних

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

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

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

Відповідь

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

Відповідь: D · Воно об'єднує ланцюжки вузлів з однією дитиною в одне ребро, позначене рядком

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

Стискання шляхів без розгалужень зменшує кількість вузлів і використану пам'ять, зберігаючи пошук за префіксом.

Відповідь

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.Теорія графів

Відповідь: ребро DE

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

Алгоритм Пріма

1. BD (4)
2. BC (3)
3. DE (9)
4. AB (17)

номер ребра 3

DE

Відповідь

ребро DE

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