图的基本概念及存储方法

16 篇文章 0 订阅
9 篇文章 0 订阅

一、图的基本概念

一个图是由点集V和边集E组成的,一般记做图G=<V,E>,一条边连接两个顶点。

无向图:全部由无向边构成的图。

有向图:由有向边构成的图。

自环:边连接的两个点是同一个点。

重边:无向图中指两点之间有多条边连接,有向图中指两点之间有多条同方向的边连接。

孤点:没有连接边的点。

简单图:没有自环和重边的图。

无向图的度数:对于顶点v,v作为边的端点的次数称为v的度数,记为d(v)。

有向图的度数:对于顶点v,v作为边的起点的次数称为v的出度,记为 d + ( v ) d^+(v) d+(v);v作为边的终点的次数称为v的入度,记为 d − ( v ) d^-(v) d(v);顶点v的度数 d ( v ) = d + ( v ) + d − ( v ) d(v)=d^+(v)+d^-(v) d(v)=d+(v)+d(v)

每个图G的最大度为所有顶点度数的最大值,记作Δ(G),最小度为所有顶点度数的最小值,记作δ(G)。

一张图G所有点的度数和为边数的两倍。

有向图出度和等于入度和。

二、完全图和竞赛图

无向完全图:设G为一个有n个节点的无向简单图,若G中每个顶点都与其他n-1个顶点有边相连,则称G为n阶无向完全图(n阶完全图),记作 K n K_n Kn

有向完全图:设G为一个有n个节点的有向简单图,若G中每个顶点都有连到其他n-1个顶点的边,且都有这些节点连向它的边,则称G为n阶有向完全图。

竞赛图:基于n阶无向完全图,给每条边任意确定一个方向形成的图称为n阶竞赛图。

三、同构

设G和G’是分别具有顶点集V和V’的两个图。如果存在一个双射h:V→V’,满足当且仅当 ( v i , v j ) (v_i,v_j) (vi,vj)是G的边时, ( h ( v i ) , h ( v j ) ) (h(v_i),h(v_j)) (h(vi),h(vj))是G’的边,则称图G和G’同构。

四、通路、回路、路径、距离

对于一个图G,G中顶点与边的交替序列 v 0 e 1 v 1 e 2 v 2 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ e n v n v_0e_1v_1e_2v_2······e_nv_n v0e1v1e2v2envn称为 v 0 v_0 v0 v n v_n vn的通路,其中 v 0 v_0 v0 v n v_n vn称为通路的起点和终点,通路中边的条数称为它的长度。

对于一条通路,如果 v 0 = v n v_0=v_n v0=vn则称为回路,如果 v 0 = v n v_0=v_n v0=vn且其他所有顶点都不相同,则称为环。

如果通路的所有的边都不相同,称为迹。如果通路中的所有顶点都不相同,称为路径。

图中连接两点之间最短的路径长度称为距离。

五、连通性与连通块

连通性:设图G=<V,E>,u,v属于V,如果u,v之间相互可达,则称u,v是连通的。对于任意一个点v,v和v自己是连通的。

连通图:对于任意非空无向图G,若,若G中任意两个顶点都是连通的,则称G为连通图。

连通块:对于无向图G的一个连通子图H,如果H是一个极大连通子图(任意加一个点或者一条边后不是连通子图),则称H是G的一个连通块(连通分量)。

强连通:如果有向图G中的顶点两两可达,则称G为强连通图。

强连通块:对于有向图G的一个强连通子图H,如果H是一个极大强连通子图(任意加一个点或者一条边后不是强连通子图),则称H是G的一个强连通块(强连通分量)。

六、图的存储

①邻接矩阵

//a->b的边,边权为c
g[a][b]=c;

②邻接表

邻接表是由多个单链表组合而成的

// 用数组模拟
int h[N], w[N], e[N], ne[N], idx;

// 添加一条边a->b,边权为c
void add(int a, int b, int c)
{
    e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++ ;
}

// 初始化
idx = 0;
memset(h, -1, sizeof h);
typedef pair<int, int> PII;
vector<PII> edge[N];

// 添加一条边a->b,边权为c
void add(int a, int b, int c)
{
    edge[a].push_back({b,c});
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值