Python利用邻接矩阵构建图结构的代码实现与解析

温以宁
温以宁
发布时间:2026-10-13 | 3人浏览过
原创

本文详细介绍如何使用Python列表构造图的邻接矩阵。通过具体代码示例,演示无向图的边添加方法及矩阵输出结果。文章同时分析了邻接矩阵在顶点多边少时的空间浪费及查询效率缺陷,为理解图存储结构提供参考。

问题背景

探讨如何利用列表数据结构来构建图模型

采用邻接矩阵作为图的存储方式

以下是Python语言的具体代码实现示例

# !/usr/bin/env python
# -*-encoding: utf-8-*-
# author:LiYanwei
# version:0.1

# 邻接矩阵
'''

a---b\
|  | \
|  | c
|  | /
e---d/

对于无向图顶点之间存在边,则为1,反之则为0

 a b c d e
a 0 1 0 0 1
b 1 0 1 1 0
c 0 1 0 1 0
d 0 1 1 0 1
e 1 0 0 1 0

观察得知对脚线对称

对于有向图,若a--->b存在,则为ab之间为1,ba为0
对于有权值的存在,可以设置相应的数值

缺陷:
1.对于定点多边少的图,构造的矩阵空间浪费
2.获取某个顶点的邻接顶点,需要遍历相应的列表,找到1的顶点

'''

# 构造顶点 列表解析
N = 5
a, b, c, d, e = xrange(5)
G = [[0] * N for _ in xrange(5)]

# 无向图构造边
def addEdge(G, v1 ,v2):
  G[v1][v2] = G[v2][v1] = 1

addEdge(G, a, b)
addEdge(G, b, c)
addEdge(G, b, d)
addEdge(G, b, e)
addEdge(G, d, e)
addEdge(G, d, c)

print G

程序运行输出结果如下:

[[0, 1, 0, 0, 0], [1, 0, 1, 1, 1], [0, 1, 0, 1, 0], [0, 1, 1, 0, 1], [0, 1, 0, 1, 0]]

核心要点总结

以上就是关于Python使用邻接矩阵构造图的完整内容,希望能为读者提供实际帮助。若对先序遍历二叉树、Python3调用微信企业号API发送文本消息或Python实现人脸识别等话题感兴趣,欢迎继续查阅本站相关资源。如有任何疑问,欢迎随时留言,小编将尽快回复。感谢各位朋友对本站的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表