大空间的BFS花费了太多时间

时间:2017-09-20 23:45:41

标签: algorithm python-2.7

我在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

正如您所看到的,我没有使用任何东西来存储被访问的节点,因为我需要多次访问节点。

提前致谢

0 个答案:

没有答案