Это зависит от того, говорите ли вы о рекурсивных или итеративных реализациях.
Рекурсивная-DFS дважды посещает каждый узел. Итеративно-BFS посещает каждый узел один раз.
Если вы хотите обнаружить цикл, вам нужно исследовать узлы как до, так и после добавления их смещений - как при запуске на узле, так и при завершении работы с узлом.
Это требует больше работы в Iterative-BFS, поэтому большинство людей выбирают Recursive-DFS.
Обратите внимание, что простая реализация Iterative-DFS с, скажем, std :: stack имеет тот же проблема как Iterative-BFS. В этом случае вам нужно поместить фиктивные элементы в стек, чтобы отслеживать, когда вы «завершаете» работу над узлом.
См. Этот ответ для получения более подробной информации о том, как Iterative-DFS требует дополнительной работы, чтобы определить, когда вы «завершить» с узлом (отвечает в контексте TopoSort):
Топологическая сортировка с использованием DFS без рекурсии
Надеюсь, это объясняет, почему люди предпочитают рекурсивный- DFS для проблем, когда вам нужно определить, когда вы «завершаете» обработку узла.
Для получения этой работы в , Windows 10 I должен был открыть окно Docker Settings от системного лотка и перейти в раздел Shared Drives .
я тогда установил флажок рядом с C
. Докер попросил мои настольные учетные данные получать авторизацию записать в мою папку Users.
Тогда я выполнил контейнер докера следование примерам выше и также примеру на той странице настроек, присоединив к /data
в контейнере.
docker run -v c:/Users/<user.name>/Desktop/dockerStorage:/data -other -options