有上下界的网络流

本文探讨了网络流模型的变种——有上下界的网络流模型,详细讲解了如何通过引入附加流和构造源点及汇点,将无源汇上下界网络流转化为标准网络流问题,从而求解可行流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有上下界的网络流

给定一个网络,一个加权的有向图G,其中的每条边都有一个容量上界C。其中的两点:S只有出度没有入度,T只有入度没有出度。求S到T最大可以流过的流量,这是最大流的模型。
且满足以下条件:

  1. 容量限制:每条边的流量0≤f≤C0≤f≤C0fC
  2. 流量平衡:任意一个点iii∑(u,i)∈Ef(u,i)=∑(i,v)∈Ef(i,v)\sum_{(u,i)\in E}f(u,i)=\sum_{(i,v)\in E}f(i,v)(u,i)Ef(u,i)=(i,v)Ef(i,v)(除了S,T节点)

这就是一个有源点和汇点的网络流模型
如果将条件1改为B≤f≤CB\leq f \leq CBfC那么该模型就变成了有上下界的网络流模型
如果再将条件2中的除了S,T节点去掉,那么该模型就变为无源汇上下界网络流


现在我们考虑如何判断无源汇网络流的可行流。
我们会求网络流的最大流,也会判断网络流是否有可行流,所以我们的思路是如何把无源汇上下界网络流变成网络流?也就是把那个下届去掉。
看下面这个图在这里插入图片描述
上面那副图是一个无源汇上下界网络流,我们现在把他的下届单独拿出来,形成一个新的边,(C为上界,B为下界)如下图红边所示,然后把原来的边变为C′=C−BC' =C-BC=CB。假设有一个可行流(这个可行流是循环的),那么真正的可行流在每条边上的值一定≥\geq(定义),也就是说每个红边加上原来的黑边的某一个值才是真正的可行流流过这个边的值(这句话可能太长…本人语文表达并不好)。现在我们令红边是B(u,i)B(u,i)B(u,i),显然,
∑u∈VB(u,i)≠∑v∈VB(i,v)\sum_{u\in V}B(u,i) \neq \sum_{v \in V}B(i,v)uVB(u,i)̸=vVB(i,v)
也就如果用每个边的下界来当作流的话显然不满足流量守恒
但是可行流的流量≥\geqB,所以我们此时需要从那个黑边中寻找一些流,让他与红边不满足流量守恒的流量在每个对应位置相加,就可以得到满足上下界的可行流。
如何求黑边中的流呢?我们只会求有源点和汇点的最大流,并且流量守恒,黑边中寻找到的流也不满足流量守恒(因为他需要和红边相加才能满足流量守恒,红边不满足了,它肯定也不满足),并且这些流还是循环流。我们需要把他转变成网络流问题。


现在我们给黑边起个名字叫附加流,记作g(u,v)g(u,v)g(u,v),我们需要把黑边中找到的流和红边的流相加满足流量守恒也就是
∑u∈V[B(u,i)+g(u,i)]=∑v∈V[B(i,v)+g(i,v)]\sum_{u\in V}[B(u,i) +g(u,i)] = \sum_{v \in V}[B(i,v)+g(i,v)]uV[B(u,i)+g(u,i)]=vV[B(i,v)+g(i,v)]
移项
∑u∈VB(u,i)−∑v∈VB(i,v)=∑v∈Vg(i,v)−∑u∈Vg(u,i)\sum_{u\in V}B(u,i) - \sum_{v \in V}B(i,v)= \sum_{v \in V} g(i,v) - \sum_{u \in V}g(u,i)uVB(u,i)vVB(i,v)=vVg(i,v)uVg(u,i)
我们令∑u∈VB(u,i)−∑v∈VB(i,v)=M(i)\sum_{u\in V}B(u,i) - \sum_{v \in V}B(i,v)=M(i)uVB(u,i)vVB(i,v)=M(i)
M(i)≥0M(i) \geq0M(i)0(M(i)M(i)M(i)为已知量),那么∑v∈Vg(i,v)−∑u∈Vg(u,i)≥0\sum_{v \in V} g(i,v) - \sum_{u \in V}g(u,i) \geq0vVg(i,v)uVg(u,i)0
说明对于iii节点,流出的附加流应该大于流进的附加流,且大于多少呢?大于M(i)M(i)M(i),也就是说节点iii两边的附加流只有严格满足这个条件的时候才能满足流量守恒,我们现在创建一个源点SSSSSS,让SSSSSS流入iii节点M(i)M(i)M(i)流量。
M(i)≤0M(i) \leq 0M(i)0,也就是
∑v∈Vg(i,v)−∑u∈Vg(u,i)≤0\sum_{v \in V} g(i,v) - \sum_{u \in V}g(u,i) \leq0vVg(i,v)uVg(u,i)0
说明对于iii节点,流入的附加流应该大于流出的附加流,
创建一个节点TTTTTT,让iii节点流出M(i)M(i)M(i)流量到TTTTTT节点。

对所有的节点都重复以上操作

我们现在不去管那些g(u,i)g(u,i)g(u,i),而只关注M(i)M(i)M(i),我们只需要从SSSSSS流出到和流入到TTTTTT的那些流,这些流混杂在附加流中,附加流如果去掉每个附加流中包含的M(i)M(i)M(i),肯定满足流量守恒(这是最难理解的),如果iii节点流入的附加流大于流出的附加流,并且大M(i)M(i)M(i),那么流入的附加流去掉M(i)M(i)M(i)后,肯定满足流量守恒啊,反之流出大于流入也是如此,那么这些阻碍附加流满足流量守恒M(i)M(i)M(i),如果我们看看他们在无源汇上下界网络流中是否能够流动起来不就得了吗?想想最大网络流正好是干这个事情的。
正好SSSSSS和图中每个节点的链接就是这些捣乱的M(i)M(i)M(i)TTTTTT也是,所以我们只需要从SSSSSSTTTTTT求一个最大网络流就可以了。
明天继续有上下界的’最大’网络流

内容概要:本文详细探讨了杯形谐波减速器的齿廓修形方法及寿命预测分析。文章首先介绍了针对柔轮与波发生器装配时出现的啮合干涉问题,提出了一种柔轮齿廓修形方法。通过有限元法装配仿真确定修形量,并对修形后的柔轮进行装配和运转有限元分析。基于Miner线性疲劳理论,使用Fe-safe软件预测柔轮寿命。结果显示,修形后柔轮装配最大应力从962.2 MPa降至532.7 MPa,负载运转应力为609.9 MPa,解决了啮合干涉问题,柔轮寿命循环次数达到4.28×10⁶次。此外,文中还提供了详细的Python代码实现及ANSYS APDL脚本,用于柔轮变形分析、齿廓修形设计、有限元验证和疲劳寿命预测。 适合人群:机械工程领域的研究人员、工程师,尤其是从事精密传动系统设计和分析的专业人士。 使用场景及目标:①解决杯形谐波减速器中柔轮与波发生器装配时的啮合干涉问题;②通过优化齿廓修形提高柔轮的力学性能和使用寿命;③利用有限元分析和疲劳寿命预测技术评估修形效果,确保设计方案的可靠性和可行性。 阅读建议:本文涉及大量有限元分析和疲劳寿命预测的具体实现细节,建议读者具备一定的机械工程基础知识和有限元分析经验。同时,读者可以通过提供的Python代码和ANSYS APDL脚本进行实际操作和验证,加深对修形方法和技术路线的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值