Python 从用户处获取图形输入,用于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

我想写一个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() # 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