Закрепление материала: Графы

Модуль "Графы" • урок 3 из 4 • ~6 минут

Суть урока. Мы познакомились с графами - универсальной структурой данных для моделирования связей. Разобрали три представления (матрица смежности, список смежности, список ребер) и два фундаментальных обхода - в глубину и в ширину. Проверим, насколько хорошо усвоен материал.
карта модуля о графах: три способа хранения графа и два обхода со своими структурами данных
Весь модуль на одной картинке: слева - чем хранить, справа - чем обходить

Краткое резюме модуля

В этом модуле мы заложили базу для работы со связными данными:

Ключевые идеи

Главные концепции, определяющие выбор алгоритмов на графах:

Коротко: главное

  • Граф - универсальная структура для моделирования связей. Дерево - его частный случай.
  • Для разреженных графов используйте список смежности, для плотных - матрицу.
  • В глубину = стек, в ширину = очередь. Оба работают за время O(N + M).
  • Поиск в ширину гарантированно находит кратчайший путь в невзвешенном графе, поиск в глубину для этого не подходит.

Проверьте себя

Вопрос 1

Какую структуру данных использует поиск в глубину для хранения вершин, ожидающих обработки?

Вопрос 2

Дан разреженный граф: 10 000 вершин и 20 000 ребер. Какое представление будет наименее эффективным по памяти?

Вопрос 3

Как с помощью базовых обходов найти все изолированные компоненты связности графа?

Как вам урок? Спасибо за отзыв!