Алгоритмы - поиск по глубине графа

89
10

Я изучаю график и DFS, и пытаюсь сделать что-то похожее на то, как ANT разрешает зависимость. Я что-то смущен, и все статьи, которые я читаю, полагают, что все это знают.

Я думаю, что у меня есть Map> with key = file, а value = набор файлов, от которых зависит ключ.

Алгоритм DFS показывает, что я должен изменить цвет узла, если он уже посещен, что означает, что ссылка на тот же файлNode должна быть одинаковой между клавишей и клавишей Set <> right?

Поэтому я думаю, каждый раз, когда создается узел (включая соседние узлы), я бы добавил его в еще одну коллекцию (возможно, другую карту?), Тогда всякий раз, когда новый узел должен быть добавлен в график (как ключ), найдите эту коллекцию и используйте эту ссылку вместо этого? я трачу слишком много места? Как это обычно делается? есть ли другой лучший способ?

спросил(а) 2021-01-25T15:39:12+03:00 5 месяцев назад
1
Решение
99

Во время моих исследований алгоритм DFS реализовывался следующим образом:

Поместите все узлы графа в стек (это структура, в которой вы можете только извлекать и удалять первый элемент).

Извлеките первый элемент, установите его для просмотра, это можно сделать либо с помощью раскраски, либо путем установки атрибута, чтобы вызвать его isSeen, в true.

Затем вы смотрите на всех соседей этого узла, и если их уже не видно, вы кладете их в стек.

Когда вы посмотрите на всех соседей, вы удалите узел из стека и получите следующий элемент стека и выполните то же самое, что и для первого.

Результатом будет то, что все узлы, которые могут быть достигнуты от исходного узла, будут иметь атрибут, который установлен на видимый.

Надеюсь, это помогло.

ответил(а) 2021-01-25T15:39:12+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема