5图与网络分析

一、图与网络的基本概念

定义1:一个图是由点集V={vi}和边集E={ek}(所有边的端点都属于V)所构成的二元组,记为G=(V,E)。vi为顶点,ek为边,当V、E为有限集时G为有限图。

无向图:任意边都是无向边的图
有向图:任意边都是有向边的图
环:边的两端点相同也称环,如e1;
多重边:两点间多于一条边,如e4,e5 有向图中两点之间有不同方向的两条边,不是多重边。

定义3: 每一对顶点间都有边相连的无向简单图称为完全图。每一对顶点间有且仅有一条有向边的简单图称为有向完全图。

定义4:图G的点集V可以分成两个非空子集X,Y,使得E中每条边的两个端点必有一个属于X,另一个属于Y,则G称为二部图。

定义5:以点v为端点的边数叫做点v的次。记为deg(v),简记d(v)。
次为奇数的点称为奇点,次为偶数的点称为偶点。次为0的点称为孤立点。
定理1:任何图中,顶点次数的总和等于边数的2倍。
定理2:任何图中,次为奇数的顶点必为偶数个。

定义6:有向图中以vi为始点的边数称为vi的出次,记为d+(vi) ,以vi为终点的边数称为vi的入次,记为d-(vi) 。

定义7:图G=(V,E),若E’是E的子集,V’是V的子集,且E’中的边仅与V’中的顶点相关联,则称G’=(V’,E’)是G的一个子图。若V’=V, 则G’称为G的生成子图。

二、连通图
定义8:无向图G中能够连接两点的点、边序列构成一条链。没有重复点或重复边的链为初等链。
定义9:无向图G中一条链的始点和终点是同一点时,称为圈。没有重复点或重复边的圈为初等圈。

三、图的矩阵表示
定义11:网络(赋权图)G=(V,E)上的边(vi,vj)有权wij,构造矩阵A=(aij)n×n,其中

四、欧拉回路与中国邮路问题
定义13:连通图中,若存在一条回路,经过每边一次且仅一次,则称之为欧拉回路。具有欧拉回路的图称为欧拉图(E图)。
定理3:无向连通图G是欧拉图,当且仅当G中无奇点。奇次
定理4:有向连通图G是欧拉图,当且仅当G的每个顶点的出次等于入次。

中国邮路问题可以转化为如下问题:
在连通图G=(V,E)中,求一个边集E1 ∈E,把G属于E1的边均变为二重边得到G*=G+E1,使其满足G*无奇点,且L(E1)最小。

定理5:已知图G*=G+E1无奇点,则L(E1)最小的充要条件是:
(1)每条边最多重复一次;
(2)对图G中每个初等圈来讲,重复边的长度之和不超过圈长的一半。

5.2 树
定义14:连通且不含圈的无向图称为树。树中次为1的点称为树叶(最末尾),次大于1的点称为分枝点。
定理6:图T=(V,E)的V有n个顶点,E有m条边,则下面对树的说法是等价的:
(1) T是一个树;
(2) T无圈,且m=n-1;
(3) T连通,且m=n-1;
(4) T无圈,但每加一新边即得唯一一个圈;
(5) T连通,但舍去一边就不连通;
(6) T中任意两点,有唯一链相连。

定义15:若图G的生成子图是一棵树,则称该树为G的生成树(支撑树),简称G的树。G中属于生成树的边称为树枝,不在生成树中的边称为弦。

定理7:图G(V,E)有生成树的充要条件是G是连通图

(a)深探法
(1)任取一点v,标号0;
(2)若某点u已编号i,检查端点有u的各边,其另一端是否已编号?
①若有边(u,w)的w端未标号,则标w为i+1,令w取代u,重复步骤(2);
②若有u的所有边另一端均已编号,退到i-1编号的点r,以r代替u,重复步骤(2);
如此重复直到全部点得到编号为止,得到生成树。

(b)广探法
(1)任取一点v,标号0;
(2)检查编号i的点,包含i点的所有边的另一端是否已编号?对所有未编号的这些点都编相同的号i+1;
(3)对编号i+1的所有点重复步骤(2);
如此重复直到全部点得到编号为止,得到生成树。

三、最小生成树问题
定义16:连通图G=(V,E),每条边上有非负权L(e)。一棵生成树所有树枝上权的总和,称为生成树的权。具有最小权的生成树称为最小生成树(最小支撑树),简称最小树。

找出最小树的算法:
(a)Kruskal算法:
(1)从未选的边中选取边e,使它与已选边不构成圈,且e是未选边中最小权边;
(2)重复步骤(1),直至选够n-1(n为图的顶点数)条边为止。

(b)破圈法:
(1)从图G中任选一棵树T1;
(2)加上一条弦e1,使T1+e1能生成一个圈。去掉此圈中最大权边,得到新树T2。以T2代替T1,重复步骤2,直到所有弦检查完毕。

四、根树及其应用
定义17:一个有向图在不考虑边的方向时是一棵树,则这个有向图为有向树。
定义18:有向树T恰有一个结点入次为0,其余各点入次均为1,则称T为根树(又称外向树)。入次为0的点为根,出次为0的点称为叶,其他顶点称为分枝点。
设每边长为1,则根到某点vi的路长称为vi点的层次。(有多少条边就多少层)

定义19:根树中每个顶点的出次小于或等于m,则称这棵树为m叉树。若每个顶点的出次恰好都等于m或0,则称之为完全m叉树。当m=2时,称为二叉树。
令有s个叶子的二叉树T各叶子的权分别为pi,根到各叶子的距离(层次)为 li (i=1,…,s),则二叉树的总权数为 总权数=权*层次
满足总权数最小的二叉树称为最优二叉树。

求最优二叉树的算法:霍夫曼算法
(1)将s个叶子按权由小至大排序,设p1 ≤p2 ≤… ≤ps;
(2)将两个具有最小权的叶子合并成一个新分枝点,其权为p1+p2 ,将该新分枝点作为一个叶子,令s=s-1(若s=1停止计算),转步骤(1)。

https://blog.csdn.net/weixin_45720782/article/details/109316157
超好理解的哈夫曼树(最优二叉树)与例题

5.3 最短路问题
一、Dijkstra算法
基本原理:若{vs,v1,…,vt-1,vt}是从vs到vt的最短路,则{vs,v1,…,vt-1}是从vs到vt-1的最短路。该算法采用标号法
此算法每一步把某点的T标记改为P标记,当终点vt得到P标号时,全部计算结束。具体算法如下:
(1)给vs以P标号,P(vs)=0,其余各点均给T标号,T(vi)= ∞;
(2)若vi点为刚得到P标号的点,寻找点vj要求 (vi,vj)属于E且vj为T标号。对所有找到的vj点的T标号值进行更改:T(vj) = min[T(vj), P(vi)+lij];
(3)比较所有T标号的点,把最小T值的点v改为P标号,即P(v)=min[T(vi)]。若全部点均为P标号时算法结束,否则返回步骤(2)。

二、Floyd算法
该算法可直接求出网络中任意两点的最短路。
自己为0,到不了为∞

5.4 最大流问题
定义20:设有向连通图G=(V,E),G的每条边(vi,vj)上有非负的容量cij,仅有一个入次为0的点(发点,或称源)和一个出次为0的点(收点,或称汇),其余点为中间点,则G称为容量网络,记为G=(V,E,C)
对G中任一边(vi,vj)有流量fij,称集合f={fij}为网络G上的一个流。称满足下列条件的流f为可行流:
(1)容量限制条件:对G中每条边(vi,vj) ,有0 ≤ fij ≤ cij;(可以为0,有最大流cij)
(2)平衡条件:中间点vi有∑fij= ∑fki, 即输入输出相等;(中间点输入输出流相等)

1对收、发点vs,vt有 ∑fsi = ∑fjt =W,W为网络总流量。
2可行流总是存在的,f={0}是流量为0的可行流。
3最大流问题就是在容量网络中寻找流量最大的可行流。
4当fij = cij ,称流f 对边(vi,vj)是饱和的。

定义21:容量网络G=(V,E,C)中,vs, vt分别是发、收点,若有边集E’是E的子集,它将G分为两个子图G1, G2,其顶点集合记为S, S’(S∪S’ =V, S∩S’=Ø), 其中vs, vt分属S, S’, 同时满足
(1)G(V, E-E’)不连通;
(2)E’’为E’的真子集时,G(V,E-E’’)仍连通,则称E’为G的割集,记为E’=(S,S’)。
割集中所有始点在S,终点在S’的边的容量之和称为割集容量。割集容量最小的称为G的最小割。

二、最大流-最小割定理
容量网络中割集是由vs到vt的必经之路,无论拿掉哪个割集, vs和vt不再相通,故任一可行流的流量不超过任一割集的容量。

定理10:设f为网络G(V,E,C)的任一可行流, 流量为W, (S,S’)为分离vs和vt的任一割集, 则有W ≤C(S,S’)
定理11: (最大流-最小割定理) 任一网络G中,从vs到vt的最大流流量等于分离vs和vt的最小割容量。
定义22:容量网络G中,若μ为从vs到vt的一条链,给μ定向为从vs到vt,μ上的边与μ同向的称为前向边,与μ反向的称为后向边,其集合分别用μ+和μ-表示,f是一个可行流,如果满足 前向边的容量大于流量,后向边的
则称μ为从vs到vt的(关于f的)可增广链。
推论:可行流f是最大流的充要条件是不存在从vs到vt的(关于f的)可增广链。

三、求最大流的标号算法

  1. 标号过程 (通过标号寻找可增广链) 边上数字(cij,fij)为容量及初始流量
    (1)给发点vs标号(△,+∞),此时 δs=+∞;
    (2)选择一个已标号的顶点vi , 处理vi所有未标号邻接点vj :
    (a)若边(vj,vi) ∈E, 且fji>0, 则令δj=min(fji, δi), ——流量和δi的最小值
    给vj标号(-vi, δj)——标负向
    (b)若(vi,vj) ∈E, 且(包括0)fij<cij , 令δj=min(cij-fij, δi), ——(容量-流量)和δi的最小值
    给vj标号(+vi, δj)——标正向
    © fij=cij , 流量=容量不标号
    (3)重复(2)直到收点vt被标号或不再有顶点可标号为止, 若vt获得标号,则找到可增广链, 转到调整过程, 若vt未获标号且标号过程已无法进行, 则f已是最大流。
  2. 调整过程 (沿可增广链调整f以增加流量)
    (1)令

(2)去掉所有标号, 回到步骤1, 对可行流f’重新标号。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值