当前位置: 首页 > article >正文

GNN Maximum Flow Problem (From Shusen Wang)

Maximum Flow Problem

ShusenWang 图数据结构和算法课程笔记 Slides

  • Maximum Flow Problem
    • Description
      在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • Naive Algorithm
    • Residual = Capacity - Flow
    • Left: Original Graph
    • Right: Residual Graph
      在这里插入图片描述

在这里插入图片描述

- Bottleneck capacity = 2

在这里插入图片描述

在这里插入图片描述

- Iteration 2:
  - Find an augmenting path: s -> v_1 -> v_3 -> t
  - Update residuals

在这里插入图片描述

  - Remove saturated edge
- Iteration 3:
  - Find an augmenting path: s -> v_1 -> v_4 -> t
  - Update residuals

在这里插入图片描述

  - Remove saturated edge
- Iteration 4:
  - Cannot find an augmenting path: end of procedure
- Summay
  - Inputs: a weighted directed graph, the source 𝑠, and the sink 𝑡.
  - Goal: Send as much water as possible from 𝑠 to 𝑡
  - Constraints:
    - Each edge has a weight (i.e., the capacity of the pipe).
    - The flow must not exceed capacity.
  - naïve algorithm
    - Build a residual graph; initialize the residuals to the capacity. 
    - While augmenting path can be found: 
      - a. Find an augmenting path (on the residual graph.) 
      - b. Find the bottleneck capacity 𝑥 in the augmenting path. 
      - c. Update the residuals. (residual ← residual − 𝑥.)
  - The naïve algorithm can fail
    - The naïve algorithm always finds the blocking flow.
    - However, the outcome may not be the maximum flow.
  • Ford-Fulkerson Algorithm
    • Problem with the naïve algorithm
      在这里插入图片描述

    • Procedure
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • Worst-Case Time Complexity
      在这里插入图片描述

    • Summary

      • Ford-Fulkerson Algorithm
        • Build a residual graph; initialize the residuals to the capacities
        • While augmenting path can be found:
          • Find an augmenting path (on the residual graph.)
          • Find the bottleneck capacity 𝑥 on the augmenting path.
          • Update the residuals. (residual ← residual − 𝑥.)
          • Add a backward path. (Along the path, all edges have weights of 𝑥.)
      • Time complexity: 𝑂(𝑓⋅𝑚). (𝑓 is the max flow; 𝑚 is #edges.)
  • Edmonds-Karp Algorithm
    • Procedure
      • Build a residual graph; initialize the residuals to the capacities.
      • While augmenting path can be found:
        • Find the shortest augmenting path (on the residual graph.)
        • Find the bottleneck capacity 𝑥 on the augmenting path.
        • Update the residuals. (residual ← residual − 𝑥.)
        • Add a backward path. (Along the path, all edges have weights of 𝑥.)
    • Note: Edmonds-Karp algorithm uses the shortest path from source to sink. (Apply weight 1 to all the edges of the residual graph.)
    • Time complexity: O ( m 2 ⋅ n ) O(m^2 \cdot n) O(m2n) . (m is #edges; n is #vertices.)
  • Dinic’s Algorithm
    • Time complexity: O ( m ⋅ n 2 ) O(m \cdot n^2) O(mn2) . (m is #edges; n is #vertices.)

    • Key Concept: Blocking Flow
      在这里插入图片描述

    • Key Concept: Level Graph
      在这里插入图片描述

在这里插入图片描述

- Procedure

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  - On the level graph, no flow can be found!
  - End of Procedure

在这里插入图片描述

- Summary
  1. Initially, the residual graph is a copy of the original graph. 
  2. Repeat: 
    1. Construct the level graph of the residual graph. 
    2. Find a blocking flow on the level graph. 
    3. Update the residual graph (update the weights, remove saturated edges, and add backward edges.)
- Time complexity: $O(m \cdot n^2)$ . (m is #edges; n is #vertices.)
  • Minimum Cut Problem
    • statement
      在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  - Capacity (S, T) = sum of weights of the edges leaving S.
  - In the figure, three edges leave S.
    - Capacity (S,T) = 2 + 2 + 2 = 6

在这里插入图片描述

- Max-Flow Min-Cut Theorem
  - In a flow network, the maximum amount of flow from s to t is equal to the capacity of the minimum s-t cut.
  - In short, amount of max-flow = capacity of min-cut.

在这里插入图片描述

- Algorithm
  - Run any max-flow algorithm to obtain the final residual graph.
    - E.g., Edmonds–Karp        algorithm or Dinic’s algorithm.
    - Ignore the backward edges on the final residual graph
  - Find the minimum s-t cut (S,T) :
    - On the residual graph, find paths from source 𝑠 to all the other vertices.
    - S ← all the vertices that have finite distance. (Reachable from s.)
    - T ← all the remaining vertices. (Not reachable from s.)
- Example

在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/158722.html

相关文章:

  • Debezium-MySqlConnectorTask
  • 近几年新笔记本重装系统方法及一些注意事项
  • 抖音热门素材去哪找?优质抖音视频素材网站推荐!
  • 爬虫——Requests库的使用
  • 定时器简介
  • uniapp微信小程序接入airkiss插件进行WIFI配网
  • 7+WGCNA+机器学习+实验+泛癌分析,多要素干湿结合
  • TCP 半连接队列和全连接队列
  • 区分(GIOU、DIOU、CIOU)(正则化、归一化、标准化)
  • 【小白推荐】安装OpenCV4.8 系统 Ubuntu 22.04LST Linux.
  • 第17章 匿名函数
  • 【PTA题目】6-1 猴子吃桃-递归 分数 10
  • 6.5 Windows驱动开发:内核枚举PspCidTable句柄表
  • 优化汽车产业用户营运:精细化策略
  • 使用C语言创建高性能网络爬虫IP池
  • 语义分割网络FCN
  • SQL Sever 基础知识 - 限制行数
  • NLP/Natural Language Processing
  • 春秋云镜ED01-CMS v20180505 存在任意文件上传漏洞
  • 【面试】Java最新面试题资深开发-JVM第一弹
  • 基于机器深度学习的交通标志目标识别
  • 智能故障诊断期刊推荐【英文期刊】
  • 华为OD机试真题-CPU算力分配-2023年OD统一考试(C卷)
  • 《微信小程序开发从入门到实战》学习四十一
  • 广域网(WAN)设备通信过程(通信流程、通信步骤、通信顺序、设备通信、主机通信)(MAC地址在本地链路中的作用)跳跃(hop)
  • 【算法思考记录】力扣2477. 到达首都的最少油耗【Java,深度优先搜索】