Skip to Content

Графы и обходы

Граф G=(V,E)G = (V, E) — это множество вершин VV и множество рёбер EE, соединяющих пары вершин. В неориентированном графе ребро {u,v}\{u, v\} не имеет направления; в ориентированном — есть дуга uvu \to v.

Два базовых обхода:

  • BFS (breadth-first search) — в ширину: сначала все соседи, потом соседи соседей. Даёт кратчайшие пути по числу рёбер.
  • DFS (depth-first search) — в глубину: идём по ветке до конца, затем откатываемся.

Ниже — случайный граф Эрдёша–Реньи G(n,p)G(n, p): можно менять число вершин и вероятность ребра, выбрать старт (или кликнуть по вершине) и пройти BFS/DFS по шагам.

Обход графа (BFS / DFS)

Шаг 0/8 · BFS от вершины 0 · старт · клик по вершине меняет старт

Разбор на Python (networkx)

Тот же сюжет в коде: строим граф, считаем BFS-дерево и рисуем его.

Загрузка редактора…
Обновлено