#python
#python
Вопрос:
Привет, я новичок в python, и я борюсь с тем, что мы делаем в activity. Я не совсем понимаю, как закончить этот код, чтобы он мог выполнять поиск в глубину, который останавливается, когда находит заданную вершину.
graph = {'0': ['1', '2'],
'1': ['0', '3', '4'],
'2': ['0', '4'],
'3': ['1', '4'],
'4': ['1', '2', '3', '5'],
'5': ['4', '6'],
'6': ['5']}
def dfs(visited, graph, vertex):
print (vertex)
visited.append(vertex)
for neighbour in graph[vertex]:
if neighbour not in visited:
dfs(visited, graph, neighbour)
# implement this function
def dfs_stop(visited, graph, vertex, target):
pass
dfs([], graph, '0')
print
dfs_stop([], graph, '0', '4')
Комментарии:
1. как насчет простой проверки этого
vertex == target
?2. Почему вы используете 2 функции для 1 DFS?
3. Мне нужно реализовать приведенный ниже код, но я не знаю, как это сделать.
Ответ №1:
Вам просто нужно добавить проверку, равен ли исходный узел целевому узлу, прежде чем вызывать DFS для его соседей.
def dfs_stop(visited, graph, vertex, target):
print (vertex)
visited.append(vertex)
if (vertex == target): # to break/stop the function
return
for neighbour in graph[vertex]:
if neighbour not in visited:
dfs_stop(visited, graph, neighbour)