我有以下代码,运行广度优先搜索(bfs)的图形顶点列表。
目前,我有对列表中的每一项运行bfs的代码,但我希望这样做,如果for循环中的下一项已经在发现的节点集中,那么for循环应该跳过它,这样就不必对每个顶点执行bfs。
我这样做的主要原因是因为我必须读入一个非常大的文件,所以当我在每个顶点上执行bfs时,它会导致内存崩溃;我的代码在小测试用例上工作,但在大文件上不工作。
我知道continue语句允许跳过当前迭代,但我不知道如何跳过下一个迭代。
感谢您的帮助。def count_components(g):
dictionary = {}
dict_list = {}
for i in g.vertices():
dictionary = breadth_first_search(g,i)
dictionary_keys = list(dictionary.keys())
dict_list[i] = dictionary_keys
for value in dict_list.values():
for i in range(len(value)):
value[i] = str(value[i])
result = {}
for key, value in dict_list.items():
dict_list[key].sort(key=str.lower)
if value not in result.values():
result[key] = value
count = len(result)
return count