迪尼茨在1969年一月向他人公布了他发明的算法,又在1970年将其发布在《Doklady Akademii nauk SSSR杂志》。在1974年,希蒙·埃文和(他之后的博士学生)Alon Itai在海法的以色列理工学院对迪尼茨的算法以及亚历山大·卡尔扎诺夫的阻塞流的想法很感兴趣。但是杂志上的文章每篇的篇幅被限制在四页以内,很多细节都被忽略,这导致他们很难根据文章还原出算法。但他们没有放弃,在后三天不断地努力,设法了解这两个文件中的分层网络的维护问题。在接下来的几年,Even由于在讲学中将Dinitz念为Dinic,导致Dinic算法反而成为了它的名称。埃文和Itai也将算法与BFS和DFS结合起来,形成了当前版本的算法。[3]
^Yefim Dinitz. Algorithm for solution of a problem of maximum flow in a network with power estimation (PDF). Doklady Akademii nauk SSSR. 1970, 11: 1277–1280 [2016-08-04]. (原始内容 (PDF)于2016-08-22).
^Ilan Kadar; Sivan Albagli. Dinitz's algorithm for finding a maximum flow in a network. 2009-11-27 [2016-08-04]. (原始内容于2016-06-24).
^Yefim Dinitz. Dinitz's Algorithm: The Original Version and Even's Version (PDF). [2016-08-04]. (原始内容 (PDF)于2016-08-20).
^Even, Shimon; Tarjan, R. Endre. Network Flow and Testing Graph Connectivity. SIAM Journal on Computing. 1975, 4 (4): 507–518. ISSN 0097-5397. doi:10.1137/0204043.
迪尼茨算法, 是在网络流计算最大流的强多项式复杂度的算法, 设想由以色列计算机科学家叶菲姆, 迪尼茨在1970年提出, 算法o, displaystyle, 的时间复杂度类似于埃德蒙兹, 卡普算法, 其时间复杂度为o, displaystyle, 与埃德蒙兹, 卡普算法的不同之处在于它每轮算法都选择最短的可行路径进行增广, 中采用高度标号, level, graph, 以及阻塞流, blocking, flow, 实现性能, 目录, 历史, 定义, 算法, 分析, 特殊情况, 参考文献, 参见历史, 编辑叶菲姆, . 迪尼茨算法是在网络流计算最大流的强多项式复杂度的算法 设想由以色列计算机科学家叶菲姆 迪尼茨在1970年提出 1 算法O V 2 E displaystyle O V 2 E 的时间复杂度类似于埃德蒙兹 卡普算法 其时间复杂度为O V E 2 displaystyle O VE 2 迪尼茨算法与埃德蒙兹 卡普算法的不同之处在于它每轮算法都选择最短的可行路径进行增广 迪尼茨算法中采用高度标号 level graph 以及阻塞流 blocking flow 实现性能 目录 1 历史 2 定义 3 算法 4 分析 4 1 特殊情况 5 参考文献 6 参见历史 编辑叶菲姆 迪尼茨在Adel son Vel sky AVL树的发明者之一 的算法课的课前活动上发明了这个算法 当时他不知道关于福特 富尔克森算法的基本事实 2 迪尼茨在1969年一月向他人公布了他发明的算法 又在1970年将其发布在 Doklady Akademii nauk SSSR杂志 在1974年 希蒙 埃文和 他之后的博士学生 Alon Itai在海法的以色列理工学院对迪尼茨的算法以及亚历山大 卡尔扎诺夫的阻塞流的想法很感兴趣 但是杂志上的文章每篇的篇幅被限制在四页以内 很多细节都被忽略 这导致他们很难根据文章还原出算法 但他们没有放弃 在后三天不断地努力 设法了解这两个文件中的分层网络的维护问题 在接下来的几年 Even由于在讲学中将Dinitz念为Dinic 导致Dinic算法反而成为了它的名称 埃文和Itai也将算法与BFS和DFS结合起来 形成了当前版本的算法 3 在福特 富尔克森算法发明后约十年之内 是否有算法能在多项式复杂度之内处理無理數邊權是未知的 这造成缺乏任何已知的多项式复杂度算法解决最大流问题 迪尼茨算法和埃德蒙兹 卡普算法在1972年发布 证明在福特 富尔克森算法中 如果每次总选择最短的一条增广路 路径长度将单调增加 且算法总能终止 定义 编辑设G V E c s t displaystyle G V E c s t 为一个每条边的容量为c u v displaystyle c u v 流为f u v displaystyle f u v 的网络 残留容量c f V V R displaystyle c f colon V times V to R 的定义为 如果 u v E displaystyle u v in E c f u v c u v f u v displaystyle c f u v c u v f u v c f v u f u v displaystyle c f v u f u v 否则c f u v 0 displaystyle c f u v 0 则残留网络为G f V E f c f E f s t displaystyle G f V E f c f E f s t 其中E f u v V V c f u v gt 0 displaystyle E f u v in V times V c f u v gt 0 dd 增广路指通过残留网络G f displaystyle G f 的从源点s displaystyle s 到汇点t displaystyle t 的一条有效路径 定义dist v displaystyle operatorname dist v 为G f displaystyle G f 中从源点s displaystyle s 到点v displaystyle v 的最短距离 那么G f displaystyle G f 的高度标号为G L V E L c f E L s t displaystyle G L V E L c f E L s t 其中E L u v E f dist v dist u 1 displaystyle E L u v in E f operatorname dist v operatorname dist u 1 dd 设图G V E L s t displaystyle G V E L s t 其中E L u v f u v lt c f E L u v displaystyle E L u v f u v lt c f E L u v 不包含从s displaystyle s 到t displaystyle t 的路径 则阻塞流为一条从s displaystyle s 到t displaystyle t 的流f displaystyle f 算法 编辑迪尼茨算法 输入 网络G V E c s t displaystyle G V E c s t 输出 s t displaystyle s t 的流f displaystyle f 的最大值 对每条边e E displaystyle e in E 设f e 0 displaystyle f e 0 在图G displaystyle G 的残留网络G f displaystyle G f 中计算G L displaystyle G L 如果dist t displaystyle operatorname dist t infty 停止程序并输出f displaystyle f 在G L displaystyle G L 找到一条阻塞流f displaystyle f 将 f displaystyle f 增加f displaystyle f 并返回第二步 分析 编辑可以证明每轮算法中找到的阻塞流的边数至少增加1 因此整个网络中最多有n 1 displaystyle n 1 条阻塞流 n displaystyle n 为网络中顶点的数量 高度标号G L displaystyle G L 可以在O E displaystyle O E 的时间复杂度内用BFS构建 一条阻塞流可以在O V E displaystyle O VE 的复杂度内构建 因此 算法的时间复杂度为O V 2 E displaystyle O V 2 E 使用一种叫做动态树的数据结构 找到阻塞流的时间复杂度可以降到O E log V displaystyle O E log V 此时迪尼茨算法的复杂度可以降到O V E log V displaystyle O VE log V 特殊情况 编辑 在具有单位容量的网络中 迪尼茨算法可以在更短的时间内输出结果 每条阻塞流可以在O E displaystyle O E 的时间内构建 并且阶段 phases 的数量不超过O E displaystyle O sqrt E 或O V 2 3 displaystyle O V 2 3 此时算法的复杂度为O min V 2 3 E 1 2 E displaystyle O min V 2 3 E 1 2 E 4 在二分图匹配问题的网络中 阶段的数量不超过O V displaystyle O sqrt V 算法的时间复杂度不超过O V E displaystyle O sqrt V E 这种算法又叫霍普克罗夫特 卡普算法 同樣的上界也適用於更一般情況 即unit网络 网络中除源點及匯點外的頂點 都僅有一條容量為1的外向邊 或是僅有一條容量為1的內向邊 并且所有的容量限制都是整数 5 参考文献 编辑 Yefim Dinitz Algorithm for solution of a problem of maximum flow in a network with power estimation PDF Doklady Akademii nauk SSSR 1970 11 1277 1280 2016 08 04 原始内容存档 PDF 于2016 08 22 Ilan Kadar Sivan Albagli Dinitz s algorithm for finding a maximum flow in a network 2009 11 27 2016 08 04 原始内容存档于2016 06 24 Yefim Dinitz Dinitz s Algorithm The Original Version and Even s Version PDF 2016 08 04 原始内容存档 PDF 于2016 08 20 Even Shimon Tarjan R Endre Network Flow and Testing Graph Connectivity SIAM Journal on Computing 1975 4 4 507 518 ISSN 0097 5397 doi 10 1137 0204043 Tarjan 1983 第102頁 Tarjan R E Data structures and network algorithms 1983 参见 编辑网络流 福特 富尔克森算法 取自 https zh wikipedia org w index php title 迪尼茨算法 amp oldid 69639147, 维基百科,wiki,书籍,书籍,图书馆,