最大網路流 Max (Network) Flow

Slides:



Advertisements
Similar presentations
1 教師敘薪 Q & A 教師敘薪 Q & A 新竹縣立新湖國中 陳淑芬 新竹縣立自強國中 楊美娟
Advertisements

103 學年度縣內介聘申請說明會 南郭國小 教務主任張妙芬.  重要作業日程 : 1 、 5/1( 四 ) 前超額學校 ( 含移撥超額 ) 備文函報縣府教 育處輔導介聘教師名單 2 、 5/7( 三 ) 超額教師積分審查( 9 : : 00 、 13 : : 00 )。 3.
大學甄選申請入學 〃備審資料 〃面試. 確認你的追求對象 學校環境概況 系別特質 有無交換學生 未來出路 性質相似的科系要清楚之間的差別 ex: 社會福利學系,社會工作學系, 社會學系.
人文行動考察 羅東聖母醫院 老人醫療大樓 吳采凌 黃玨宸 劉映姍 陳嫚萱.
焦點 1 陸域生態系. 臺灣的陸域生態系 臺灣四面環海 黑潮通過  高溫, 雨量充沛 熱帶, 亞熱帶氣候.
景美樣品房工程變更 / 追加請款 / 說明 102/08/09 樣品房停工 102/10/10 樣品房完工 102/09/26 向工務部提出 追加工程估價單 102/10/25 經工務部審核 轉送採發部門 102/09/03 工地會議 確認後續施工方式 102/11/ /11/ /12/09.
統計之迷思問題 保險 4B 張君翌. 迷思問題及教學者之對策 常見迷思概念教學者之對策 解題的過程重於答案 例 : 全班有 50 位同學,英文不及格的有 15 人,數學不及格的有 19 人,英文與 數學都及格的有 21 人。請問英文與數 學都不及格的有幾人? 老師常使用畫圖來解決這樣的問題,英文和.
社團法人台南市癲癇之友協會 講師:王乃央老師
寓言 何謂寓言? 寓言中的主角選擇 以動物為主角,形象分析—以成語及諺語中來歸納動物形象 以人為主角,形象分析
第七章 外營力作用 第一節 風化 第二節 崩壞 第三節 侵蝕與堆積.
物理治療師之僱傭關係 九十二年四月十二日.
勿讓權利睡著- 談車禍之損害賠償與消滅時效.
二、開港前的經濟發展 (一)土地開墾和農業發展 1.漢人移民的遷徙與拓墾 (1)遷徙 A.居住區 a.泉州人最多:沿海
設計新銳能量輔導 實習期中感想 實習生:賴美廷 部落格:TO13004.
日本的〈地獄劇〉 與 中國的〈目連戲〉.
授課教師:羅雅柔 博士 學員:吳沛臻/邱美如/張維庭/黃茹巧
寫作教學—標點符號.
國小教師檢定經驗分享 分享者:胡瑋婷 現職:國語日報語文中心寫作班教師 閱讀寫作營教材編輯及任課講師 榮獲「教育部教育實習績優獎」全國第三名.
民主政治的運作
教育與學習科技學系 103學年度課程說明 103年9月2日.
政府採購法規概要 報告人:杜國正 行政院公共工程委員會企劃處.
國有不動產撥、借用法令與實務 財政部國有財產局 接收保管組撥用科 蔡芳宜.
公務人員 育嬰留職停薪權益.
大學教、職員之法義務規範與法律效果 台南地檢署林仲斌.
第三課 政府的組織、功能與權限 一、內閣制 壹、民主國家的政府體制 二、總統制 三、混合制 四、小結 一、前言 貳、我國的中央政府體制
明代開國謀臣 劉伯溫 組員:吳政儒 林天財 王鈴秀 陳冠呈 施典均 李孟儒.
之 魔 析 妖 鬼 解 怪 大 沈家仪小组出品.
中央與地方教育權限 第八組 王湘婷 邱淑婷 全 彥 洪英博
中國宦官 鄭永富 鄭雅之 莊尉慈.
Criminal Law II 主讲人: 王娜 上海政法学院
簡報大綱 壹、親師溝通 貳、學生不當行為的處理 參、學生輔導 肆、個案研討分析.
指導教授:古錦松 分享同學: 蔡斗溍、陳姿云 陳俊仰、陳國睿(助教)
福山國小 100學年度 新生家長始業輔導.
貨物稅稅務法令介紹 竹東稽徵所.
ACM/ICPC暑期集训讲座 二分图匹配 cnhawk
九年一貫課程綱要微調 健康與體育領域召集人 「課綱微調轉化」研習
第九章 长期资产及摊销 2017/3/21.
公私立大學特色介紹 (以第二類組為主) 報告人:吳婉綺.
危險情人的特徵 危險情人的特徵.
機關團體所得稅申報實務 中區國稅局苗栗縣分局第一課林天琴.
幼兒環境學習規畫 期末報告 指導老師:蔡其蓁 老師
財政部臺灣省北區國稅局中壢稽徵所 各類所得扣繳暨免扣繳法令.
「103年寒假教育優先區中小學生營隊」 校外補助計畫申請說明會.
水土保持法中「連續處罰」及「限期改正」制度之法律研究
國有公用財產管理及被占用處理暨活化運用法規與實務(含座談) 104年度教育部暨部屬機關學校總務人員研習會-不動產管理班
7.5 擴張樹 (Spanning Tree) 一個無向相連圖 G 的子圖 G’ 如果可用最少的邊來連接G 的
第8章 圖形結構(Graphs) 8-1 圖形的基本觀念 8-2 圖形的表示法 8-3 圖形的走訪 8-4 擴張樹
提升國民小學教師健康教育專業能力三年計畫
程序设计期末复习 黎金宁
101北一女中 資訊選手培訓營 最短路徑 Shortest Path Nan.
電子音樂 通訊系 B 楊穎穆.
Artificial Intelligence - 人工智慧導論
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
馬公高中100學年101大學博覽會 專題演講 演講主題 如何選填適合自己的大學科系
性騷擾防治宣導.
程式結構&語法.
創業環境分析與 風險評估 赫斯提亞負責人:謝馥仲先生 主講 演講時間 : 2008/05/01.
今天, AC 你 了吗? 2019/4/26.
葉脈標本的創意製作.
第三章 世界文明的蛻變與互動 第一節 歐洲社會的蛻變 第二節 世界文明的交匯 第三節 亞洲大帝國的發展 1.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
英語職涯規劃 移民署職場生涯 5.2.1善用慈濟資源‧提升職涯就業力.
Advanced Competitive Programming
最大網路流 Max (Network) Flow
Maximum Flow.
11506: Angry Programmer ★★★★☆ 題組:Contest Set Archive with Online Judge
作业反馈3-12 TC ,      Problem 26.1  26.2.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
函式庫補充資料 1.
Presentation transcript:

最大網路流 Max (Network) Flow 101北一女中 資訊選手培訓營 最大網路流 Max (Network) Flow 2012.08. 16 Nan

什麼是最大網路流問題? A 10 C 5 6 4 5 S 7 D 6 T 6 8 15 8 B 3 E F 10 給你一張有向圖,有起點和終點,邊有權重,代表「容量限制」。 要請你找出從起點究竟能有多少「流」到終點。 (可以把那些邊都想成水管,這個流就變成水流。)

兩個要遵守的原則 流量限制原則(Capacity Law) 流過任何邊的流都不可以超過上限 流量守恆原則(Conservation Law) 一個點流入的流量恆等於流出的流量

剩餘網路的概念 當水流流過去了一條邊,我們就產生一條相對應容量的反向邊在圖上,並把原邊減去那個容量。 A C B E F D 5 7 4 3 8 6 S T 15 1 10 A C B E F D 5/10 7 5 4 3 8 6 S T 5/5 15 5/6 10

Max-Flow的一種解法 從起點(source)開始,找到一條路徑到達終點(target) 將這條路徑流滿(找到路徑上剩下最少容量的邊) 建出剩餘網路 對剩餘網路,重複1~4的動作,直到沒路可走

A 10 C 5 6 4 5 S 7 D 6 T 6 8 15 8 B 3 E F 10

找到一條路徑 A C B E F D 5/10 7 5 4 3 8 6 S T 5/5 15 5/6 10 建出剩餘網路 A C B E F D 5 7 4 3 8 6 S T 15 1 10

找到一條路徑 A C B E F D 5 7 4 3/3 8 6 S T 3/15 1 3/10 3/8 建出剩餘網路 A C B E F D 5 7 4 3 8 6 S T 1 12

A C B E F D 5 7 4 3 8 6 S T 1 12 找不到可到終點的路徑了! 最大流是5+3=8

剛剛找路徑的動作 最初這個演算法被發明的時候,用的是DFS 後來Edmonds&Karp改良他,用BFS去跑 其名為Ford-Fulkerson’s algorithm 複雜度是O(Ef),f為max-flow的值 f可能很大,不能說是多項是時間的演算法 後來Edmonds&Karp改良他,用BFS去跑 每次都跑“最短路徑”(用邊的數量做距離) Edmonds-Karp’s Algorithm: 複雜度O(VE)

為什麼要有反向邊? 因為有些時候一開始流的那條可能占掉了別條的空間,所以要讓他有機會反向取消。 例子?自己想想看XD 提示:某一條流先流在某個點有兩條路可以走,但它選了擋住了另一條的空間的那條。

關於剩餘網路 其實不需要新增一張圖,如果有流過i->j,流過的量是f,那麼只需要 map[i][j]去扣掉f map[j][i]去加上f 就等於是加上反向邊&扣掉正向邊的容量 =新的剩餘網路。

#include <string.h> // 為了用memset這個function所以要include這個 #define INF 2147483647 // 用int的最大值做為無限大 int map[N][N]; // 假設我們有N個點。這裡存的是邊(i->j)的容量上限(有向邊) // 沒有邊時的容量就是0 int queue[N]; // 用來跑BFS用的 int qTail; // =queue裡現在的元素個數 int last[N]; // 紀錄BFS來的上一個點是誰 int min[N]; // 紀錄BFS來到這個點的一路上邊容量最小為多少 int visited[N]; // 跑BFS紀錄那些點被跑過了 int max_flow; // 我們要的解 int edmonds_karp(int src, int tar){ // 整張圖的起點編號src,終點tar max_flow = 0; int new_flow = 0; // 下去一直找path,找到找不到(回傳值為零)為止。 do{ new_flow = find_path_bfs(src, tar); max_flow += new_flow; }while ( new_flow != 0 ); return max_flow; }

int find_path_bfs(int src, int tar){ // 找路用,回傳值為這次找到的大小,起點編號src,終點tar // 用memset歸零 memset(visited, 0, sizeof(visited)); // src本身要做BFS前的初始化 min[src] = INF; last[src] = -1; visited[src] = 1; // 將src放入queue queue[0] = src; qTail = 1; int qHead, i; for ( qHead = 0 ; qHead < qTail ; qHead++ ){ if ( queue[qHead] == tar ) break; // 找到了 int cur = queue[qHead]; // 目前處理的點的編號 for ( i = 0 ; i < N ; i++ ){ if ( visited[i] == 0 && map[cur][i] != 0 ){ queue[qTail++] = i; min[i] = (min[cur] < map[cur][i]) ? min[cur] : map[cur][i]; last[i] = cur; visited[i] = 1; } // 沒路了就會qHead == qTail,直接結束 if ( qHead == qTail ) return 0; build_residual_network(tar); return min[tar]; void build_residual_network(int tar){ // 建剩餘網路 int flow = min[tar]; // 此次流的flow量 int cur = tar; while ( last[cur] != -1 ){ map[ last[cur] ][ cur ] -= flow; // 正向邊減少 map[ cur ][ last[cur] ] += flow; // 反向邊增加 cur = last[cur]; }

Max-Flow應用:二分圖匹配 (Bipartite Matching) 給你Group A和Group B,他們之間要配對,但只能一對一,請你找出配對總數最多的配對法。 Ex: Group A=組員;Group B=工作 他們之間的配對=組員擅長的工作

二分圖:可以把圖分成兩群,所有的邊都在群間,也就是群內無邊。 1 A 2 B 3 C 4 D 5 E 6 7

轉換法:把所有邊變成單向、並加上一個起點跟終點,且所有邊容量為1 A B C D E 1 2 3 4 5 6 7 A B C D E 1 2 3 4 5 6 7 T S 去做max-flow,找出來的flow量就是最大配對數

看完影片你要知道的是 什麼是最大網路流問題 網路流兩個必須遵守的原則 剩餘網路的概念 Max-Flow演算法的操作流程(EK法)