【图论 Graph Theory】图的定义与储存

一、什么是图:

一个图由结点和边组成,我们通常用 V V V表示点集,用 E E E表示边集。点的个数和边的个数通常用 ∣ V ∣ |V| V ∣ E ∣ |E| E。一般地,我们使用 ( V , E ) (V, E) (V,E)来表示一个图。

二、图的类型:

1、按边分:

图可以分为有向图和无向图,有向图的边是有方向的,只可从一侧走到另一侧,可理解为单行线。而无向图可以在所连接的两个节点中任意行走。

2、按找图的形状分:

按形状分时,图可以分为有环图和无环图。如果存在一个结点 u u u使得有一条路(不重复且沿路的方向)可以到达这个点,则这个图为有环图,反之,为无环图。

注:以上图分为有无权值(长度),没有权值的被称为无权图,有权值的被称为有权图。

三、图的储存:

1、邻接矩阵:

使用一个大小为 V × V V\times V V×V的数组(此处记为G),无权图使用0和1判断(亦可用布尔类型)。有权图存储权值即可,该数组 G [ i ] [ j ] G[i][j] G[i][j]表示 i i i j j j的边。无向图将 G [ i ] [ j ] G[i][j] G[i][j] G [ j ] [ i ] G[j][i] G[j][i]全部存储为相同值即可。
题目:使用邻接矩阵建一个点数为100的无向无权图,将点9与点11连接。
代码:

int udg[100][100];
udg[9][11] = udg[11][9] = 1;

2、邻接表:

使用一个大小为 V V V的数组(此处记为G),内装 V V V s t d : : v e c t o r std::vector std::vector。无权图使用0和1判断(亦可用布尔类型)。有权图存储权值即可,该数组 G [ i ] [ j ] G[i][j] G[i][j]表示 i i i j j j的边。无向图将 G [ i ] [ j ] G[i][j] G[i][j] G [ j ] [ i ] G[j][i] G[j][i]全部存储为相同值即可。
题目:使用邻接表建一个点数为100的有向无权图,添加一条由点9到点11的边。
代码:

vector <int> udg[100];
udg[9].push_back(11);

还有一种图的常用储存方式,由于太过复杂,我们下一篇文章将会提及。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SZSKszmn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值