Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: DFS, graph traversal, depth-first search, recursion, stack

Как работает обход графа в глубину?

Вопрос проверяет понимание алгоритма обхода графа в глубину (DFS), его реализации и применения для решения задач на графах.

Короткий ответ

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

Длинный ответ

Что такое обход в глубину?

Обход в глубину (Depth-First Search, DFS) — это алгоритм для обхода или поиска в структурах данных, таких как графы и деревья. Он начинает с выбранной начальной вершины и рекурсивно или итеративно исследует каждую ветвь до конца, прежде чем вернуться назад. Это контрастирует с обходом в ширину (BFS), который исследует все вершины на текущем уровне перед переходом на следующий.

Как работает DFS?

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

  • Пометить текущую вершину как посещенную.
  • Для каждого соседа, который еще не посещен, рекурсивно вызвать DFS.
  • Когда все соседи обработаны, вернуться к предыдущей вершине.

Пример реализации на JavaScript

const graph = {
  A: ['B', 'C'],
  B: ['A', 'D', 'E'],
  C: ['A', 'F'],
  D: ['B'],
  E: ['B', 'F'],
  F: ['C', 'E']
};

function dfs(graph, start, visited = new Set()) {
  visited.add(start);
  console.log(start);
  for (const neighbor of graph[start]) {
    if (!visited.has(neighbor)) {
      dfs(graph, neighbor, visited);
    }
  }
}

dfs(graph, 'A'); // A, B, D, E, F, C

Применение DFS

DFS используется во многих задачах:

  • Поиск пути в лабиринте или графе.
  • Проверка связности графа.
  • Топологическая сортировка (в ориентированных ациклических графах).
  • Обнаружение циклов.
  • Решение головоломок, таких как судоку или задача о восьми ферзях.

Вывод

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

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Networks

Ключевые слова

#DFS

#graph traversal

#depth-first search

#recursion

#stack

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.