我正在做一个需要用Python实现BFS算法的项目,但我是新手。
这个算法可以完成一个9块拼图(3x3),但执行起来需要非常长的时间(5分钟):
def bfs(self):
fringe = deque([])
# start it
fringe.append(self.stateObj.getState())
while len(fringe) > 0:
state = fringe.popleft()
self.visited.append(state)
# just for tracing
# self.helper.drawBoard(state)
if self.stateObj.isCurrentStateGoalTest(state):
return True
for next_state in self.stateObj.getNextStates(state):
if (next_state not in (self.visited + list(fringe))):
fringe.append(next_state)
有人能指出我如何改进这个以获得更好的性能吗? 任何实用的答案都可以接受。