当前位置: 首页 > wzjs >正文

天津网站建设诺亚成都网站建设公司高新

天津网站建设诺亚,成都网站建设公司高新,十大app软件禁止下载,南安seo关键词一、概念 邻接矩阵(Adjacency Matrix)是图(Graph)的一种表示方法,用于描述图中顶点之间的连接关系。它是一种常见的数据结构,特别适用于表示稠密图(即边数接近于顶点数平方的图)。 …

一、概念

        邻接矩阵(Adjacency Matrix)是图(Graph)的一种表示方法,用于描述图中顶点之间的连接关系。它是一种常见的数据结构,特别适用于表示稠密图(即边数接近于顶点数平方的图)。

在图论中,图由顶点(Vertices)和边(Edges)组成。根据图的类型(有向图或无向图),邻接矩阵的定义略有不同:

  • 无向图:对于无向图,邻接矩阵是对称的,即 A[i][j]=A[j][i]。如果顶点 i 和顶点 j 之间有一条边,则邻接矩阵的元素 A[i][j] 和 A[j][i] 都为1,否则为0。
  • 有向图:对于有向图,邻接矩阵不一定对称。如果有一条从顶点 i 到顶点 j 的有向边,则邻接矩阵的元素 A[i][j] 为1,否则为0。

        邻接矩阵是一个 n×n 的矩阵,其中 n 是图中顶点的数量。矩阵中的每个元素 A[i][j] 表示顶点 i 和顶点 j 之间的连接关系。邻接矩阵的优点是查询顶点之间是否存在边的时间复杂度为O(1),但缺点是空间复杂度较高,为O(n2),不适合表示稀疏图(即边数远小于顶点数平方的图)。

二、原理及特性

1、矩阵构建规则

  • 顶点映射:将图的每个顶点分配唯一索引(如 0,1,...,n−1)。

  • 对称性:无向图的邻接矩阵是对称矩阵(A[i][j]=A[j][i]),而有向图不一定对称。

  • 自环边:若允许顶点到自身的边,则对角线元素 A[i][i] 可能非零。

2、空间复杂度

  • 邻接矩阵的空间复杂度为,其中 n 为顶点数。

  • 适合稠密图(边数接近顶点数的平方),但对稀疏图(边数远小于顶点数平方)会造成空间浪费。

3、时间复杂度

操作时间复杂度说明
检查边是否存在O(1)直接访问矩阵元素
添加/删除边O(1)修改对应元素值
遍历某个顶点的所有邻居O(n)需要扫描整行/列
获取定点度数(无向图)O(n)统计行或列中非零元素个数

三、python实现

1、无向图的邻接矩阵

class UndirectedGraph:def __init__(self, num_vertices):self.num_vertices = num_verticesself.adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]def add_edge(self, i, j):if i >= self.num_vertices or j >= self.num_vertices:raise ValueError("Vertex index out of bounds")self.adj_matrix[i][j] = 1self.adj_matrix[j][i] = 1def remove_edge(self, i, j):if i >= self.num_vertices or j >= self.num_vertices:raise ValueError("Vertex index out of bounds")self.adj_matrix[i][j] = 0self.adj_matrix[j][i] = 0def has_edge(self, i, j):if i >= self.num_vertices or j >= self.num_vertices:raise ValueError("Vertex index out of bounds")return self.adj_matrix[i][j] == 1def display(self):for row in self.adj_matrix:print(row)# 示例使用
graph = UndirectedGraph(5)
graph.add_edge(0, 1)
graph.add_edge(0, 2)
graph.add_edge(1, 2)
graph.add_edge(3, 4)print("邻接矩阵:")
graph.display()print("顶点 0 和 1 之间是否有边:", graph.has_edge(0, 1))
print("顶点 0 和 3 之间是否有边:", graph.has_edge(0, 3))

2、有向图的邻接矩阵

class DirectedGraph:def __init__(self, num_vertices):self.num_vertices = num_verticesself.adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]def add_edge(self, i, j):if i >= self.num_vertices or j >= self.num_vertices:raise ValueError("Vertex index out of bounds")self.adj_matrix[i][j] = 1def remove_edge(self, i, j):if i >= self.num_vertices or j >= self.num_vertices:raise ValueError("Vertex index out of bounds")self.adj_matrix[i][j] = 0def has_edge(self, i, j):if i >= self.num_vertices or j >= self.num_vertices:raise ValueError("Vertex index out of bounds")return self.adj_matrix[i][j] == 1def display(self):for row in self.adj_matrix:print(row)# 示例使用
graph = DirectedGraph(5)
graph.add_edge(0, 1)
graph.add_edge(0, 2)
graph.add_edge(1, 2)
graph.add_edge(3, 4)print("邻接矩阵:")
graph.display()print("顶点 0 和 1 之间是否有边:", graph.has_edge(0, 1))
print("顶点 0 和 3 之间是否有边:", graph.has_edge(0, 3))

 


文章转载自:

http://pHY5ror2.wtdyq.cn
http://6P41JgSp.wtdyq.cn
http://65rPrmCu.wtdyq.cn
http://r6pHOg5i.wtdyq.cn
http://SWS18BJY.wtdyq.cn
http://53p7hRiQ.wtdyq.cn
http://2Mlwd32o.wtdyq.cn
http://4deBZZEp.wtdyq.cn
http://Q63f3Of4.wtdyq.cn
http://Nta4MN0F.wtdyq.cn
http://IU0x8fmU.wtdyq.cn
http://LbfpeF7L.wtdyq.cn
http://cFfuq4hv.wtdyq.cn
http://7I5VoXcq.wtdyq.cn
http://WtPn2r6L.wtdyq.cn
http://BAwlduQo.wtdyq.cn
http://26jR06wR.wtdyq.cn
http://QbeLtSO5.wtdyq.cn
http://8wDd2PNP.wtdyq.cn
http://c2a3A120.wtdyq.cn
http://bvV2kpoQ.wtdyq.cn
http://bnOjwdmV.wtdyq.cn
http://0vIFoWsE.wtdyq.cn
http://qQtYGeNm.wtdyq.cn
http://KIhoAUgA.wtdyq.cn
http://2ixilk5R.wtdyq.cn
http://Ol6tPI0i.wtdyq.cn
http://ahnTZN4b.wtdyq.cn
http://n5bEwnVQ.wtdyq.cn
http://f8apgJKR.wtdyq.cn
http://www.dtcms.com/wzjs/616988.html

相关文章:

  • 长丰县住房和建设局网站无锡网站怎么推广效果好
  • 滨州淄博网站建设福建福州罗源建设局网站
  • 织梦网站模板安装广告设计公司方案
  • 平台网站建设多少钱网页设计师必备软件
  • 建设部网站房地产资质南京网络推广外包
  • 学习吧网站导视设计报价
  • 镇江网站建设优化语言网站开发
  • 深圳市建设工程造价管理站官网企业网站建设一般考虑哪些因素?
  • 网站营销的特征有wordpress缓存文件在哪
  • 海南省住房和建设厅网站免费的网站有哪些平台
  • 上海网站排名网站运营商查询
  • 谁需要做网站的嘉兴温州建校网站
  • 网站开发快速盈利保定电子商务网站建设
  • 女子医院网站设计怎么做全网营销整合推广
  • 做网站上饶属于网站的管理 更新 维护
  • 门户网站建设的公司做网站的公司排名
  • 怎么区分营销型网站谷歌seo零基础教程
  • 西安免费做网站哪家好wordpress快递查询
  • 网站开发的代码太原网站建设价格
  • 衡水需要做网站的公司wordpress slider教程
  • 手机网站建设liedns做搬家服务网站问卷调查的目的
  • 闵行区网站制作html网页制作免费模板下载
  • 歌曲推广平台有哪些seo排名优化方式方法
  • 一个网站开发小组南宁网站制作最新招聘信息
  • 深圳建设银行分行网站30秒网站
  • 网站备案后内容本地电脑搭建服务器
  • 网站开发与维护 专业自己可以做网站服务器吗
  • 兰州网站优化推广网页设计制作软件
  • wordpress两个站合并科技有限公司的经营范围
  • 网站后台功能模块设计手机如何建立网站