摘要: dinic算法是网络流最大流的优化算法之一,每一步对原图进行分层,然后用DFS求增广路。时间复杂度是O(n^2*m)(n是点数,m是边数)层次图:把原图中的点按照到源的距离分“层”,只保留不同层之间的边的图。算法流程:1、根据残量网络计算层次图。2、在层次图中使用DFS进行增广直到不存在增广路。3、重复以上步骤直到无法增广。时间复杂度:因为在Dinic的执行过程中,每次重新分层,汇点所在的层次是严格递增的,而n个点的层次图最多有n层,所以最多重新分层n次。在同一个层次图中,因为每条增广路都有一个瓶颈,而两次增广的瓶颈不可能相同,所以增广路最多m条。搜索每一条增广路时,前进和回溯都最多n次,所以 阅读全文
posted @ 2012-08-13 19:12 pushing my way 阅读(496) 评论(0) 推荐(0) 编辑