Вопрос проверяет понимание различий между BFS и DFS для обхода графов и сбора контекстной информации.
BFS (Breadth-First Search) использует очередь и обрабатывает узлы по уровням, начиная с корня. DFS (Depth-First Search) использует стек (или рекурсию) и идет по одному пути до конца, затем возвращается. Это влияет на порядок сбора контекста из графа.
Если граф представляет зависимости или иерархию, BFS гарантирует, что сначала будут собраны все элементы одного уровня (например, все прямые зависимости), что полезно для построения плоских списков. DFS подходит для глубокого анализа, например, поиска всех путей от корня до листьев.
// BFS сбор контекста
function bfsCollect(graph, start) {
const visited = new Set();
const queue = [start];
const context = [];
while (queue.length) {
const node = queue.shift();
if (!visited.has(node)) {
visited.add(node);
context.push(node);
for (const neighbor of graph[node]) {
queue.push(neighbor);
}
}
}
return context;
}
// DFS сбор контекста
function dfsCollect(graph, start, visited = new Set(), context = []) {
if (visited.has(start)) return context;
visited.add(start);
context.push(start);
for (const neighbor of graph[start]) {
dfsCollect(graph, neighbor, visited, context);
}
return context;
}Выбор между BFS и DFS зависит от задачи: BFS лучше для поиска кратчайшего пути или сбора данных по уровням, DFS — для глубокого анализа и экономии памяти при больших графах.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
Networks
Ключевые слова
Подпишись на Python Developer в телеграм