网路流与图匹配-建中首页课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《网路流与图匹配-建中首页课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网路 匹配 建中 首页 课件
- 资源描述:
-
1、Network Flow and Graph Matching網路流的歷史網路流(Network Flow)是近年來在圖論中相當熱門的問題,在1955年,T.E.Harris在研究鐵路最大通量時,首先提出在一個給定的網路上尋求兩點間最大運輸量的問題。1956年,L.R.Ford和D.R.Fulkerson給出解決這類問題的演算法,從而建立了網路流理論。網路流的定義網路(Network):圖G=(V,A)為一有向圖,稱為網路源點與匯點(Source and Sink):令一點S為源點、一點T為匯點,其餘為中間點 容量(Capacity):每條弧上定義一個非負數C(u,v)為該弧的容量流量(Flo
2、w):每條弧上定義一個非負數F(u,v)為流量,所有流量的集合則稱為網路的一個流。網路流的定義剩餘容量(Residual Capacity):每條弧上定義一個非負數Cf(u,v)=C(u,v)F(u,v)為該弧的剩餘容量,而剩餘容量的集合則稱為剩餘網路(Residual Network)網路的流量(Flow of Network):由源點發出,匯點匯集的總流量,若其為該網路能產生的最大流量,則稱其為最大流(Maximum Flow)。網路流的限制 容量限制(Capacity Constraints):所有的F(u,v)C(u,v)(流量不大於容量)流量守恆(Flow Conservation)
3、:對非源點或匯點的點,流入的流量和等於流出的流量和 源點流出的總流量等於流進匯點的總流量斜對稱(Skew Symmetry):對於所有的F(u,v)+F(v,u)=0,由u到v淨流量加上由v到u的淨流量必須為零。可行流(Positive Flow):若一流符合上述三點限制,則稱其為可行流。網路流的弧飽和弧:若一條弧的流量恰好等於容量,則稱其為飽和弧。不飽和弧:若一條弧的流量小於容量,則稱其為不飽和弧。零流弧:若弧的流量為零,稱其零流弧,反之稱非零流弧。前向弧與後向弧:設W為一由源點到匯點的有向路徑,並定義由源點到匯點的方向為該路徑的方向,若路徑上的弧方向與路徑相同,稱其為前向弧,反之為後向弧。
4、增廣路徑設f是一個可行流,W是源點到匯點的一條有向路徑,如果W滿足下列的兩個條件,稱之為關於可行流f的一條增廣路徑:1.每條前向弧是非飽和弧2.每條後向弧是非零流弧也就是說,整條增廣路徑上的Cf(uk,uk+1)大於零,這就代表我們一定可以在這條增廣路徑上的每一條弧上加一流量d,使整個流仍然是可行流並使網路的總流量增加d。割集割集設流量網路G=(V,A)的頂點集V是兩不交的部分S,S的聯集,使源點S,匯點在S中。若A是A的最小的子集,使得G中去掉A後成為兩個不相交的子圖,分別以S,S為頂點集,則稱A是關於(S,S)的割集,而A裡的總容量則稱為割的容量。而若A為G所能產生的割集中容量和最小的,則
5、稱A為最小割(Minimum Cut)網路最大流問題給定一個流量網路 G=(V,A),並指定一點為源點,一點為匯點,要求求出此網路的最大流量為何。s1243t1613104912714420Ford-Fulkerson方法利用殘餘網路的概念每次隨意找一條增廣路徑,修正殘餘網路(亦須對後向弧作更正),並增加路徑中最小的容量作為增加流量,直到找不到增廣路徑為止,而先前累積的流量則為最大流量,複雜度為O(Ef),f為網路的最大流。Ford-Fulkerson方法過程s1243t1613104912714420124845410404流量增加4目前流量為4Ford-Fulkerson方法過程s1243
6、t1310458710020124444451131131107137流量增加7目前流量為13Ford-Fulkerson方法過程s1243t1335800444511113117137流量增加8目前流量為2105831112515Ford-Fulkerson方法過程s1243t5115000124451133117515流量增加4目前流量為25819112091Ford-Fulkerson方法過程s1243t1119000120451133117119已無法找到增廣路徑。最大流為25。12實現Ford-Fulkerson方法-Edmonds-Karps算法算法:原理與Ford-Fulkers
7、on相同,但是以廣度優先搜尋增廣路徑,效率較隨機找高。可避免上述情況s12t以及s21t交替出的話最差須找2,000,000,000次。st121,000,000,0001,000,000,0001,000,000,00011,000,000,000例題 網際網路頻帶給任兩點間的線路容量,線路是雙向的,且任兩點間可能有不只一條線路,求某兩點之間的最大流量。例題 草地排水農夫約翰知道每一條排水溝每分鐘可以流過的水量,和排水系統的準確佈局(起點為水潭而終點為小溪的一張網)。需要注意的是,有些時候從一處到另一處不只有一條排水溝。根據這些信息,計算從水潭排水到小溪的最大流量。對於給出的每條排水溝,雨水
8、只能沿著一個方向流動,注意可能會出現雨水環形流動的情形。最大流最小割定理在一個流量網路G中,以下三個條件為等價條件:1.有一流f 為G的最大流 2.G的殘餘網路沒有增廣路徑 3.存在一割C,其容量為流量f 假設割集中連接分屬兩點集的u,v,我們可以確定Cf(u,v)=0(否則會產生一條增廣路徑使得v在所屬的集合中)又因為Cf(u,v)=C(u,v)-F(u,v),得到C(u,v)=F(u,v),又因為定理中1.3,所以推得C為最小割。最大流最小割定理證明12 若在f的殘餘網路中存在增廣路徑,那麼f就肯定不是最大流,逆否命題成立。23假設f的殘餘網路中不存在增廣路徑,就代表說源點及匯點之間沒有路
9、徑,先設立一個集合S代表源點所無法抵達的點,以及集合T代表除了S之外的所有點,設u為S中一點、v為T中一點,uv之間的流量必等於其割值,因此得證。最大流最小割定理證明31因為f=F(S,T)=F(u,v)C(u,v)=C(S,T)對於每個ST割集 f都不大於C(S,T),所以當 f=C(S,T)時,f 為該網路的最大流。最小割集的求法由於最大流等於最小割,因此最小割的弧一定是飽和弧,在剩餘網路的容量則為0。所以我們可以從源點開始沿著剩餘網路的前向弧搜索,直到找到每條路徑的第一條容量為0的弧,而那些弧就會是最小割集了!例題汙染控制光明牛奶公司不小心發送了一批壞牛奶。你知道這批牛奶要發給哪個零售商
10、,但是要把這批牛奶送到他手中有許多種途徑。送貨網由一些倉庫和運輸卡車組成,每輛卡車都在各自固定的兩個倉庫之間單向運輸牛奶。停止每輛卡車都會有一定的經濟損失。你的任務是,在保證壞牛奶不送到零售商的前提下,制定出停止卡車運輸的方案,使損失最小。點容量一般網路流的限制只在邊上做限制,對點只要符合流量守恆就好了,但是如果給定一個點的流量限制呢?做法很簡單,既然只能在邊上做限制,那就把點當作邊吧,我們把一個點拆成兩個點連結的邊,並在上面做限制,如此一般就可以輕易做到在點上的容量了!sss例題電力輸送DESA正在進行一項電力傳輸的計畫。由於 Dhaka 的人口數相當多,DESA 希望盡可能透過網路傳輸最大
11、的電力給它。但是電力在傳輸時會因電阻而損失,所以他們想要使用變電裝置來達到不損失電力的目標。每個變電裝置有不同的容量。並且連接變電裝置之間的電線也是有一定的容量的。DESA 想要知道在沒有電力損失的情況下,最多可以傳輸的電力是多少。這就是你的任務。例題很火的程式設計師你老闆把你資遣了,所以你很火。你決定要展開報復,讓你老闆再也連不上網路打Heuristic Game。你老闆會經由很多IP分享器才連上公司的數據機,IP分享器之間會有線路,破壞每個IP分享器以及每條線路都會有一定的成本,你最少要花多少成本才可以阻止你老闆打Heuristic Game呢?多個源點與匯點一般網路流的只會有一個源點及一
12、個匯點,但如果有多個呢?解決方法很簡單,只要額外設置一個就好了,將源點看成從一個點發出,最後匯點則將流量全部匯集到一個點,需要注意容量設定成無限大。最小費用最大流問題在一般的網路模型中,我們在每條弧上額外定義弧的單位成本Cost(u,v),整個網路所花費的成本為Cost(u,v)xFlow(u,v),而最小費用最大流問題則是要我們在最大流情況找出流量網路的最小成本。最小費用最大流問題這與最短路徑問題相當類似,只不過最短路徑只有一輛車,但最小費用最大流卻是很多輛車,這又讓我們聯想到當我們在找增廣路徑使flow流過去的時候,不就像是開好多台車(該次增廣的流量)穿過去嗎?所以我們的得到了一個演算法:
13、每次找增廣路徑的時候,都用單源最短路徑演算法(SSSP)找到一條成本最低的最短路徑來增廣,直到找不到增廣路徑為止。因為成本可能是負的,另外也有逆流的問題,所以搭配的SSSP必須要能夠處理負邊才行(像是Bellman-Ford,Johnsons等),不過當然,要一開始用APSP預處理也是可以的,但必須要注意的是,若圖上會出現負圈,就必須將圈消掉,簡言之就是沿圈增廣至殘餘網路不含負圈為止。例題最小花費你是一個貨物經銷商,你銷售著K種商品,現在有N份訂單與M個倉庫,對於不同的商品從不同的倉庫到不同的送貨地點的運輸單位成本是不一樣的,所以你希望在滿足條件下讓你的運輸成本越小越好。建圖的技巧網路流最困難
14、的部分就是如何將一般的問題轉化成網路流模型。首先是源點及匯點的構造,必須要找到一個能讓問題得以開始的起始點以及一個能夠統整問題的解答的終點,若有多個,則額外設置一個。建圖的技巧第二步是點的構造,必須要找到能代表點的事物,可能是一個狀態或者是一個個體之類的,若點上有限制流量,則使用點容量拆點法解決。接下來是弧的構造,我們要找到點與點之間的關聯,並且設置一條條的弧,最困難的地方就在這裡,要如何連線以及設置容量,是網路流的最大重點。最後就讓flow流過去即可。例題出題者的問題你要出一張考卷,涉及了N個領域的題目,每個領域需要出Pi題(i=1.N),你有一個總共有M題的題庫,每一題都和Ri個領域相關(
展开阅读全文