- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可增流路(增广链):从vs到vt的链中,所有 前向弧都未饱和,所有后向弧都有非零流量。 可增流量为 定理(Ford-Fulkerson):网路中由发点s到收点t的 最大流量值等于最小截集的容量: V(F*)=C*(V,VC) 证明: 令 是源宿间容许的最大流量。 表示源宿间最小截集。 首先 设可行流 已使源宿间的流量最大.从源开 始,令 按以下条件一步步扩大X: 若 间有边,当满足 或 时则把 併入X,这样扩大直到X为 X’,已无端可併入. 则vt必不在 中而在 中.否则vs,vt间必有 可增流的路,与 是最大流矛盾. 按X的扩大条件,若 的前向边上必有 反向边上必有 如在一网路的发端与收端之间,能找到这样的链: 前向弧的流量小于容量,后向弧上的流量大于0, 这样的链叫增广链.因此增广链是可增加流量的 链.各弧上可增的流量为 令θ=Min(θij)并把前向弧上的流量增加θ成为 ,把后向弧上的流减少θ成为 则链上所有弧上的流 ≥ 0,即增广链上的流 仍为可行流 最大流的标号法(分标号和增广两过程) 标号过程 1.在源点s标号[s+, θ(s)=∞],其中s+表源点且为 正向流流出; 2.找出与已标号节点vi相邻的所有未标号的节点: (1)未标号节点是vj且(vi,vj)是正向弧,即流 从vi流向vj。 若fij=cij,节点vj不标号; (2)(vi,vj)是正向弧,但fijcij,则vj标号为 [i+, θ(j)],其中i+表vj的流由vi流来且为正向 流, θ(j)表流入vj的最大流, θ(j)=min[θ(i),(cij-fij)],其中θ (i)为vi可能提供 的最大流; (3)未标号节点是vk,而(vk,vi)是指向vi的后向 弧,若fki=0,节点vk不标号; (4)若反向弧fki0,则对节点vk标号,记作 [i-, θ(k)],i-表示由节点vk流向vi的流,即fki0 其中θ(k)=min[θ(i),fki]; (5)如未标号节点vk有两个以上的邻接标号 节点,为加速迭代,可按(2),(4)所述规则分别计 算θ (k)值,并取其中最大的一个进行标号。 重复2: (1)标号中断,vi点没有标号,说明该网路中不再 存在增广链,给定的s→ t流量即为最大流; (2)vi点得到标号,那末一定可以在网路中找一 条从s→ t的,由标号节点组成的增广链. 增广过程 1.凡在s→t正向弧上,令 , θ(t)为vt的 标号标记值; 2.凡在反向弧上,令 ; 3.非增广链的所有支路,其流量保持不变。 重复标号过程及增广过程直到不再存在任何的 增广链为止。 标号: 增广 标号: 增广 求最短路径的Dijkstra 算法 用dij表示网路中从vi到vj的直接距,vi与vj无连线时dij=∞,dii=0。 1.从一个节点s出发,因 ,故标永久性标号 Ps于节点s旁,并给其他点予临时性标号 ; 2.若vi是最后得到的永久性标号的节点,对其他 点vj 按下式重新计算临时性标号: 其中 是vj的原有临时性标号值。 3.在所有 中找出最小值Pj作为相应节点vj的永久性标号,并在该点旁标号 4.反复(2)(3)两步,每次增加一个永久性标号直到宿点。这时终点的标号即为从始点至此的最短距离; 例 对右图进行 Dijkstra算法。 计算结果可列表如下: vs v1 v2 v3 v4 v5 v6 置定 最短径长 0 ∞ ∞ ∞ ∞ ∞
文档评论(0)