在数据结构Python的学习中,图(Graph)是一种非常重要的非线性数据结构。而邻接矩阵是表示图的一种经典方式。本教程将带你从零开始,用Python邻接矩阵来表示图,即使是编程小白也能轻松上手!
邻接矩阵是一个二维数组(或列表的列表),用于表示图中顶点之间的连接关系。对于一个包含 n 个顶点的图,其邻接矩阵就是一个 n × n 的方阵。
i 和顶点 j 之间有边,则矩阵中 [i][j] 位置的值为 1(或边的权重)。
下面我们用一个简单的例子来演示如何用Python邻接矩阵表示一个图。
假设我们有一个包含4个顶点(A、B、C、D)的无向图,边如下:
首先,创建一个 4×4 的全零矩阵:
# 初始化一个4x4的邻接矩阵(全0)n = 4adj_matrix = [[0 for _ in range(n)] for _ in range(n)]print("初始邻接矩阵:")for row in adj_matrix: print(row) 根据图的边关系,在矩阵对应位置填入1。注意:无向图是对称的,所以 [i][j] 和 [j][i] 都要设为1。
# 添加边# A(0) - B(1)adj_matrix[0][1] = 1adj_matrix[1][0] = 1# A(0) - C(2)adj_matrix[0][2] = 1adj_matrix[2][0] = 1# B(1) - D(3)adj_matrix[1][3] = 1adj_matrix[3][1] = 1# C(2) - D(3)adj_matrix[2][3] = 1adj_matrix[3][2] = 1print("添加边后的邻接矩阵:")for row in adj_matrix: print(row) 运行结果如下:
[0, 1, 1, 0][1, 0, 0, 1][1, 0, 0, 1][0, 1, 1, 0] 为了更方便地使用,我们可以将邻接矩阵封装成一个图类:
class Graph: def __init__(self, vertices): self.vertices = vertices self.adj_matrix = [[0] * vertices for _ in range(vertices)] def add_edge(self, u, v): # 无向图:双向添加 self.adj_matrix[u][v] = 1 self.adj_matrix[v][u] = 1 def print_matrix(self): for row in self.adj_matrix: print(row)# 使用示例g = Graph(4)g.add_edge(0, 1) # A-Bg.add_edge(0, 2) # A-Cg.add_edge(1, 3) # B-Dg.add_edge(2, 3) # C-Dg.print_matrix() 优点:
缺点:
通过本教程,你已经掌握了如何用Python邻接矩阵表示图的基本方法。这是学习图的表示方法的重要一步,也是理解更复杂图算法(如DFS、BFS、最短路径等)的基础。希望这篇邻接矩阵教程对你有所帮助!
提示:在实际项目中,如果图很稀疏,可以考虑使用邻接表(Adjacency List)来节省内存。
本文由主机测评网于2025-12-25发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251212666.html