zoukankan      html  css  js  c++  java
  • 算法9-4:最大流算法复杂度分析

    前面一节介绍了Ford-Fulkerson算法。那么这个算法是否一定可以在有限步骤内结束?要多少步骤呢?


    这个问题的答案是。该算法确实可以在有限步骤之内结束。可是至于须要多少步骤,就要细致分析。


    为了分析问题,须要假定图中全部边的容量都是整数。可是有个严重的问题,比方下图中,假设使用Ford-Fulkerson算法,须要迭代200次才干结束。


    首先将全部边的容量都初始化为0。



    第一次迭代和第二次迭代之后。两条边各添加了1。




    到最后200次迭代之后整个算法才结束。



    这还不算最坏的情况。由于整数最多能够取值大约21亿,那样可能就要迭代21亿次。算法的效率非常差。

    只是好在这样的问题的解决的方法还是比較简单的,由于每次选择路径的时候能够选择最宽的路径。这样迭代次数就少了非常多。


    从这个样例能够看出算法的效率跟路径的选择方式有关。下表总结了路径的不同选择方式对算法复杂度造成的影响。

    • 最短路径,1/2 EV

    • 最宽路径,E ln(EU)

    • 随机路径,E U

    • DFS路径,E U

    当中U代表的是整数的最大取值范围。

  • 相关阅读:
    【必备】史上最全的浏览器 CSS & JS Hack 手册(转)
    iScroll4.2.5中的无法滑动或点击的解决方案(转)
    无障碍网页设计(WCAG2.0)
    大小端
    TCP报文结构
    A*
    shell中uniq与sort -u 两种去重的对别
    login流程
    类模板成员函数
    game 角色相关记录
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5098721.html
Copyright © 2011-2022 走看看