算法导论part-II 图的相关算法

这篇博客介绍了图的基本概念,包括顶点、边和图的分类,如有向图与无向图。文章详细阐述了图的两种常见表示方法——邻接矩阵和邻接表,分析了它们的存储代价。此外,还讨论了图的性质,如顶点数与边数的关系,并定义了稀疏图和密集图的概念。最后,提供了关于图的两个关键推论。
摘要由CSDN通过智能技术生成

从这一篇博客开始,我们逐渐会开始学习一些图的相关的算法了。

首先我们明白一下什么时图。

我们通常提到的图都是有两个组成部分:顶点,边。

顶点是图的基本元素,而边则是代表顶点之间有没有连接关系。根据边的方向性,图又分为有向图和无向图两种。

举个简单的例子,成都和北京,两个城市就可以看作是两个顶点。彼此间有飞机可以来往,既可以从成都到北京,又可以从北京到成都,因此这个关系可以表示为无向图。但是如果假设某一天打仗了。因为敌人的干扰,我们只能从成都到北京,而北京的飞机出不来。那么此时,就是一个有向图了。

而通常图的表示有两种方法。邻接矩阵和邻接表。

邻接矩阵是用一个矩阵来保存图,是一个n x n的矩阵A,n为顶点数。如下图所示:

矩阵元素A_{i,j}=1代表顶点i 到顶点 j有连接, 这里这个1 也可以换成是i 到 j 的路径权重。可以看到邻接矩阵存储代价为n^{2}

邻接表的表示如下:

如上图所示,第一条信息表示 节点0 与节点1存在通路, 通常我们还要在1 后面存储下0 到1通路的权重。第二条信息表示,节点1 与节点 0  2  3 存在通路,后面的信息类似。

邻接表的存储代价为2n+2m, 其中m代表边的数量。化简为\mathcal{O}(n+m)

下面给出一些图的简单的推论。

lemma 1: 顶点为n的图,最少存在n-1条边,最多为\frac{n(n+1)}{2}

Proof: n个顶点的的图,边最少的情况为 连成一条直线的情况,即每增加一个点,只增加了一条边。递推式为 E(n) = E(n-1) + 1; 

边数最多的情况,是每增加一个点,都与当前已有的点连一条边。递推式为E(n) = E(n-1) + (n-1), 此时总的边数为 1+2+...+n=\frac{n(n+1)}{2}

lemma 2: 边数接近\mathcal{O}(n)的图称为稀疏图,边数接近\mathcal{O}(n^{2})的图成为密集图。

注:文中邻接矩阵和邻接表的图引用自这个博客:

https://blog.csdn.net/qq_19782019/article/details/79044766

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值