我在python2中使用了一个修改过的BFS算法,下面的类是树的节点:
class Node(object):
def __init__(self, data, parent):
self.data = data
self.children = []
self.parent = parent
def add_child(self, obj):
self.children.append(obj)
我的BFS算法应该能够根据某些条件遍历一个节点多次。由于这个事实,内存消耗和运行时间相当高(5分钟是限制)。对于64的搜索空间,它持续约30秒(内存使用量约为4-5gb),搜索空间为100,超过5分钟限制,内存使用量> 10gb。我能做些什么来解决这个问题吗?
def bfs_search(start):
n = Node(start, None)
queue = Queue.Queue()
queue.put(n)
flag2 = 0
while queue is not empty:
next = queue.get()
for node in graph[next.data]:
#CHECK CONDITION
if condition is true:
element = Node(node, next)
#CHECK ENDING CONDITION
if ending condition is true:
return True
next.add_child(element)
queue.put(element)
return False
正如您所看到的,我没有使用任何东西来存储被访问的节点,因为我需要多次访问节点。
提前致谢