输入图:我有一个表示有向图的字典,其中键是节点,值是它指向的节点。
输入英雄:所有节点的集合
该方法用于找到所有节点组合之间的最大分离度。
def largestDegreeOfSeparation(graph, heroes):
q = deque()
currentHighestDoS = 0
DoS = 0
for hero in heroes:
path = (hero,)
q.append(path)
visited = set([hero])
while q:
path = q.popleft()
last_node = path[-1]
for node in graph[last_node]:
if node not in visited:
visited.add(node)
q.append(path + (node,))
DoS = len(path) - 1
if DoS > currentHighestDoS:
currentHighestDoS = DoS
currentHero = path[0]
currentHerosDestination = last_node
print str(currentHero) + '\t' + str(path) + '\t' + str(currentHighestDoS)
这个程序找到了 4 的分离度,然后是 5,然后它就一直在运行,我认为是因为它花费的时间太长了。有没有办法让这个方法运行得更快?