Frod

01.08.2026

обход графа в ширину python

Frod — свобода без границ

Обход графа в ширину на Python: понимая алгоритм и его применение

Обход графа в ширину — это один из основных алгоритмов в теории графов, используемый для поиска всех вершин графа от определенной вершины, начальной или исходной вершины. Этот алгоритм имеет важное значение в информатике и компьютерных науках, поскольку он позволяет решать множество задач, связанных с поиском кратчайшего пути, обнаружением связности графа и другим задачам.

В этом руководстве мы рассмотрим обход графа в ширину на Python и его применение в реальных задачах. Мы также затронем теоретические основы алгоритма и его вариации.

Классическая реализация обхода графа в ширину

Первый этап — реализовать классическую версию алгоритма обхода графа в ширину на Python. Чтобы сделать это, нам понадобится implementing граф в виде графа, представленного в виде матрицы смежности или списка смежности.

from collections import deque

class Graph:
 def __init__(self, vertices):
 self.vertices = vertices
 self.adjacency_list = [[] for _ in range(vertices)]

 def add_edge(self, u, v):
 self.adjacency_list[u].append(v)
 self.adjacency_list[v].append(u)

 def bfs(self, start_vertex):
 visited = [False] * self.vertices
 queue = deque()
 queue.append(start_vertex)
 visited[start_vertex] = True

 while queue:
 vertex = queue.popleft()
 print(vertex, end=" ")

 for neighbor in self.adjacency_list[vertex]:
 if not visited[neighbor]:
 queue.append(neighbor)
 visited[neighbor] = True

Создание графа и обход в ширину
g = Graph(7)
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 3)
g.add_edge(2, 4)
g.add_edge(3, 5)
g.add_edge(4, 6)

print("Обход графа в ширину:")
g.bfs(0)

Применение обхода графа в ширину

Обход графа в ширину имеет множество применений в реальных задачах, включая:

  1. Поиск кратчайшего пути: Обход графа в ширину можно использовать для поиска кратчайшего пути между двумя вершинами графа.
  2. Обнаружение связности графа: Обход графа в ширину может быть использован для обнаружения связности графа, т. е. для определения, являются ли все вершины графа соединены или нет.
  3. Определение компонентов связности: Обход графа в ширину можно использовать для определения компонентов связности графа, т. е. для определения групп вершин, между которыми есть прямая связь.

Вариации обхода графа в ширину

Исходный алгоритм обхода графа в ширину может быть модифицирован для решения различных задач. Некоторые из этих вариаций включают:

  1. Обход графа в ширину с использованием приоритетности: В этом варианте обход графа в ширину выполняется с использованием приоритетности, где вершины с большей степени приоритетности обрабатываются раньше других.
  2. Обход графа в ширину с использованием ограничений: В этом варианте обход графа в ширину выполняется с использованием ограничений, где вершины, удовлетворяющие определенным условиям, обрабатываются раньше других.
  3. Обход графа в ширину с использованием параллелизма: В этом варианте обход графа в ширину выполняется с использованием параллелизма, где процессорные ресурсы используются одновременно для обработки вершин графа.

В этом руководстве мы рассмотрели обход графа в ширину на Python и его применение в реальных задачах. Мы также затронем теоретические основы алгоритма и его вариации.