问题描述
所以,我正在尝试解决一个任务,我应该使用 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 (将#修改为@)