Python 从用户处获取图形输入,用于dfs算法
我想写一个DFS算法,当输入请求时,它可以给我任何图形的DFS结果 但我找不到解决办法。我唯一能找到的就是代码中特定图形的算法Python 从用户处获取图形输入,用于dfs算法,python,algorithm,input,user-input,depth-first-search,Python,Algorithm,Input,User Input,Depth First Search,我想写一个DFS算法,当输入请求时,它可以给我任何图形的DFS结果 但我找不到解决办法。我唯一能找到的就是代码中特定图形的算法 # Using a Python dictionary to act as an adjacency list graph = { 'A' : ['B','C'], 'B' : ['D', 'E'], 'C' : ['F'], 'D' : [], 'E' : ['F'], 'F' : [] } visited = set
# Using a Python dictionary to act as an adjacency list
graph = {
'A' : ['B','C'],
'B' : ['D', 'E'],
'C' : ['F'],
'D' : [],
'E' : ['F'],
'F' : []
}
visited = set() # Set to keep track of visited nodes.
def dfs(visited, graph, node):
if node not in visited:
print (node)
visited.add(node)
for neighbour in graph[node]:
dfs(visited, graph, neighbour)
# Driver Code
dfs(visited, graph, 'A')
这是工作代码,您可以更改图形或输入自己的代码。此DFS适用于加权路径。图形表示如下:
adjacency_list = {
'A': [('B', 1)],
'B': [('A', 1), ('C', 1)],
'C': [('A', 1)]
}
要输入图形,请输入knot,然后在数组中为邻居输入元组(使用某些字符或数字停止输入该knot)
这是DFS
class Graph:
def __init__(self, adjacency_list):
self.adjacency_list = adjacency_list
def __str__(self):
return str(self.adjacency_list)
def get_neighbors(self, v):
return self.adjacency_list[v]
def dfs(self, start, stop):
visited = set([])
visited.add(start)
path = [start]
while len(path) > 0:
n = path[-1]
if n == stop:
print('Path found: {}'.format(path))
return path
has_unvisited = False
for (m, weight) in self.get_neighbors(n):
if m not in visited:
path.append(m)
visited.add(m)
has_unvisited = True
break
if (not has_unvisited):
path.pop()
print('Path doesnt exist')
return None
您可以通过以下方式调用DFS:
g = Graph(adjacency_list)
g.dfs('A','C')
如果代码中没有指定图形,那么图形应该来自哪里?当我们运行代码时,它将需要一个名为“请输入图形”的输入。然后,您可以在一行中添加自己的图形,按enter键,它将为您提供dfs的结果
dfs
函数应该已经适用于任何图形,它不仅适用于此处显示的特定图形。您可以举一个示例,说明如何在一行中输入一个图形吗?如下所示?{“A”:[“B”,“C”],“B”:[“C”,“D”],“C”:[“D”],“D”:[“C”],“E”:[“F”],“F”:[“C”]}哇!非常感谢你!!我会查一查,看看它是怎么工作的!thnxxx