python实现深度优先搜索和广度优先搜索

匿名 (未验证) 提交于 2019-12-02 22:11:45
 # 深度优先搜索 def dfs(g, s, v):     # 递归结束条件     if s in v:         return v     v.append(s)     for i in range(len(g)):         if i not in v and g[s][i]:             v = dfs(g, i, v)     return v   # 广度优先搜索 def bfs(g, s):     v = []     q = []     q.append(s)     while q:         s = q[0]         q.remove(s)         for i in range(len(g)):             if i not in v and i not in q and g[s][i]:                 q.append(i)         v.append(s)     return v    # 手动输入点和边数据 # # 定义输入匿名函数 # def f(): return map(int, input().split())   # # 输入点数和边数 # n, m = f() # # 初始化二维列表作为图邻阶矩阵 # g = [[0] * n for i in range(n)]  # # 输入边集合 # for k in range(m): #     i, j = f() #     g[i][j] = 1 #     g[j][i] = 1  # 手动输入的测试用例: # 8 10 # 0 1 # 0 4 # 1 5 # 2 3 # 2 5 # 2 6 # 3 6 # 3 7 # 5 6 # 6 7   # 手动输入后g的数据  g = [[0, 1, 0, 0, 1, 0, 0, 0],      [1, 0, 0, 0, 0, 1, 0, 0],      [0, 0, 0, 1, 0, 1, 1, 0],      [0, 0, 1, 0, 0, 0, 1, 1],      [1, 0, 0, 0, 0, 0, 0, 0],      [0, 1, 1, 0, 0, 0, 1, 0],      [0, 0, 1, 1, 0, 1, 0, 1],      [0, 0, 0, 1, 0, 0, 1, 0]]   print(dfs(g, 1, [])) print(bfs(g, 1)) 

文章来源: https://blog.csdn.net/daorenfeixueyuhau/article/details/89785163
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!