如何解决在python中使用DFS在无向图中找到一个循环
所以,我正在尝试解决一个任务,我应该使用 DFS 找出给定图中是否存在循环。所以我现在正在努力的是匹配节点,因为它们是字符串类型,我有一些麻烦。我收到的错误消息如下:
类型错误:列表索引必须是整数或切片,而不是图形
所以我想知道如何解决这个问题,或者如何使它适用于 string 而不仅仅是 int?
graph = dict()
searched = []
def add_edge(self,node,neighbour):
if node not in self.graph:
self.graph[node] = [neighbour]
else:
self.graph[node].append(neighbour)
def depth_first_search(self,node):
if node not in self.searched:
print("[",end= " ],")
self.searched.append(node)
if node in self.graph:
for neighbour in self.graph[node]:
self.depth_first_search(neighbour)
def find_cycle(node):
searched = [False]
for i in searched[node]:
if searched[i] == [False]*node:
if(self.depth_first_search(i,neighbour)) == True:
return True
return False
def print_edges(self):
for node in self.graph:
for neighbour in self.graph[node]:
print("(",",neighbour,")")
def print_graph(self):
print(self.graph)
my_graph = Graph()
my_graph.add_edge('A','B')
my_graph.add_edge('B','C')
my_graph.add_edge('B','D')
my_graph.add_edge('D','E')
my_graph.add_edge('D','F')
my_graph.add_edge('C','E')
my_graph.add_edge('E','G')
my_graph.add_edge('F','H')
my_graph.print_graph()
my_graph.print_edges()
my_graph.depth_first_search('A')
result = my_graph.find_cycle()
print(result)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。