图的python实现
图的储存
1.邻接矩阵
2.邻接表
图的遍历
DFS
递归与非递归
BFS
递归非递归
代码实现
图的邻接矩阵的遍历
"""
author:Anderson
data:2020-11-13
图的邻接矩阵的遍历(递归与非递归)
"""
class GraphAX:
def __init__(self, vertx, mat): # vertx 顶点表;mat邻接矩阵
self.vnum = len(vertx)
self.vertx = vertx
self.mat = mat # [mat[i][:] for i in range(vnum)]
def creat_matrix():
nodes = ['v0', 'v1', 'v2', 'v3', 'v4']
matrix = [[0, 1, 0, 1, 0],
[1, 0, 1, 0, 1],
[0, 1, 0, 1, 1],
[1, 0, 1, 0, 0],
[0, 1, 1, 0, 0]]
mygraph = GraphAX(nodes, matrix)
return mygraph
def DFS1(graph, cur_vertx_indx): # 递归方式
global visited_list
v = graph.vertx[cur_vertx_indx]
print(v, end=' ')
visited_list[cur_vertx_indx] = 1
w = []
for i in range(graph.vnum):
if graph.mat[cur_vertx_indx][i] == 1 and visited_list[i] == 0:
w.append(i)
if len(w) != 0:
for i in range(len(w)):
a = w[i]
if visited_list[a] == 0:
DFS1(graph, a

本文介绍了图的两种存储方式——邻接矩阵和邻接表,并提供了Python代码实现图的深度优先搜索(DFS)和广度优先搜索(BFS)遍历。通过递归和非递归方法展示了DFS,同时使用队列实现了BFS。此外,还讨论了如何计算图中每个顶点的度。
最低0.47元/天 解锁文章
1063

被折叠的 条评论
为什么被折叠?



