Я недавно начал программировать на Python (3.5), и я пытаюсь решить простую широтой первую задачу поиска в Python (см код)queue.get() не удаляет элемент из очереди
import queue
import networkx as nx
def bfs(graph, start, target):
frontier = queue.Queue()
frontier.put(start)
explored = list()
while not frontier.empty():
state = frontier.get()
explored.append(state)
print(explored)
if state == target:
return 'success'
print(graph.neighbors(state))
for neighbor in graph.neighbors(state):
if neighbor not in explored:
frontier.put(state)
return 'Failure to find path'
код возвращает бесконечный цикл, где кажется, что frontier.get() не удаляет элемент из очереди. Это делает цикл while бесконечным, поскольку первое значение в очереди всегда является начальным узлом, определенным в входе функции. Состояние переменной в каждом цикле равно одному (всегда начальный узел).
Что я делаю неправильно? Как я понял, очередь должна переместиться от стартового узла к соседям стартового узла, и поэтому цикл не должен возникать.