图论网络流agent解题报告_第1页
图论网络流agent解题报告_第2页
图论网络流agent解题报告_第3页
图论网络流agent解题报告_第4页
图论网络流agent解题报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Agent 解题沙郡中学高 992 班湖南【问题描述】Agent.doc【算法分析】这是一道典型的图论问题,首先可以根据问题给定的条件,建立起一个网络模型另一方面,因为只要Cost: Extended;弧的代价Arc,这条弧的所对应的一条前向弧或后向弧 Next: TLink;end;TPath = object每次求得的增广轨f, 该节点在增广轨上的前驱节点Min:eger;表示从初始节点到该节点的增广轨能够扩充的最大流量d: Extended;从初始节点到该节点的增广路径的总代价Po end;er: TLink;指向该节点与其在增广轨上的前驱节点之间的有向弧varG: array 1 Pa

2、th: array n, k, s, t:. 1MaxNode of TLink;邻接表. MaxNode of TPath; eger;procedure CreateGraph(const x, y, Arc :建立每一条有向弧 varp, q: TLink; begineger; Factor : Extended);New(p); p.c :=q.c := p.Next q.Nextend;New(q);Arc; p.f := Arc; p.n := y; p.Cost := - Factor;Arc; q.f := 0; q.n := x;q.Cost:=Factor;:= Gx;

3、Gx:= Gy; Gy:= p; p.Arc:= q; q.Arc:=:=q;p;procedure varInit;输出i, s1, x, y, Flow:eger;Temp, Factor: Extended;c: array 1 . MaxN of Extended; beginAssign(Input, InputFileName); Reset(Input);Readln(n, k);s := n + 1; 源点s1 := n + 2; 辅助节点t := n + for i := for i := begin3;汇点1 to n do Read(ci); 1 to n doRead(

4、x);if x 0 then CreateGraph(s1, i, x, ln(ci); end;Temp := ln(1); CreateGraph(s, s1, k, Temp); for i := 1 to n dobeginRead(x);if x 0 then CreateGraph(i, t, k, end;Read(x, y);while not (x = -1) and (y = -1) do beginReadln(Factor, Flow); Factor := ln(Factor);CreateGraph(x, y, Flow, Factor); CreateGraph(

5、y, x, Flow, Factor); Read(x, y);end;Close(Input); Inc(n, 3); end;Temp);procedure Main; varMore: i, x, Temp:;Setup:eger; Extended;p: TLink; beginrepeatfor i := 1 to n do初始化 path 数组 with Pathi dobegin := Max; d := Max; Poer:= nil;end;Paths.d := 0;repeat求解目前代价最小的增广轨 More := True;for i := 1 to n doif Pa

6、thi.d Max then beginp := Gi;while p nil do beginif p.f 0 then beginTemp := Pathi.d + p.Cost; x := p.n;if Pathx.d Temp + limit then beginMore := False; Pathx.d := Temp;Pathx.f := i;Pathx.Min := Pathi.Min;if p.f Pathx.Mhen Pathx.Min:=p.f;Pathx.Po end;end;p := p.Next; end;end; until More;Setup := Patht

7、.Min;er := p;if Setup = Max then Break;不存在可增广轨 x := t;while x s do修改增广轨上弧的流量 beginp := Pathx.Poer;p.f := p.f - Setup; p.Arc.f := p.Arc.f + Setup; x := Pathx.f;end; until False;end;procedure vari, j: Answer,Show;输出eger;Temp: Extended;p: TLink; beginAnswer := 1;for i := 1 to n do计算总的安全系数 beginp := Gi;while p nil do beginif p.Cost 0 then beginTemp := Exp(- p.Cost * (p.c - Answer := Answer * Temp;end;p := p.Next; end;end;Assign(Output, OutputFileName); Rewrite(Output);i := 0;while Answer 10000 dop.f);begin Answer := Answer * 10; Inc(i)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论