python 기반 아날로그 bfs와 dfs 코드 실례

2456 단어 pythonbfsdfs
BFS

"""
# @Time  : 2020/11/8
# @Author : Jimou Chen
"""


#  
def bfs(graph, start):
  queue = [start] #  
  visited = set() #  
  visited.add(start)

  while len(queue):
    vertex = queue.pop(0)
    #  
    for v in graph[vertex]:
      if v not in visited:
        queue.append(v)
        visited.add(v)
    #  
    print(vertex, end=' ')


if __name__ == '__main__':
  graph = {
    'A': ['B', 'D', 'I'],
    'B': ['A', 'F'],
    'C': ['D', 'E', 'I'],
    'D': ['A', 'C', 'F'],
    'E': ['C', 'H'],
    'F': ['B', 'H'],
    'G': ['C', 'H'],
    'H': ['E', 'F', 'G'],
    'I': ['A', 'C']
  }

  bfs(graph, 'A')
A B D I F C H E G
Process finished with exit code 0
DFS

"""
# @Time  : 2020/11/8
# @Author : Jimou Chen
"""


#  
def dfs(graph, start):
  stack = [start]
  visited = set()
  visited.add(start)

  while len(stack):
    vertex = stack.pop() #  
    for v in graph[vertex]:
      if v not in visited:
        stack.append(v)
        visited.add(v)

    print(vertex, end=' ')


if __name__ == '__main__':
  graph = {
    'A': ['B', 'D', 'I'],
    'B': ['A', 'F'],
    'C': ['D', 'E', 'I'],
    'D': ['A', 'C', 'F'],
    'E': ['C', 'H'],
    'F': ['B', 'H'],
    'G': ['C', 'H'],
    'H': ['E', 'F', 'G'],
    'I': ['A', 'C']
  }

  dfs(graph, 'E')
E H G F B A I D C
Process finished with exit code 0
총결산
분명히 하나는 대열을 썼고, 하나는 창고를 썼다
python 언어의 장점을 이용하여 팝만 바꾸면 된다
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기