问题标题: 酷町堂:如何用DINIC切掉二分图匹配?

0
0

1
已采纳
李庚午
李庚午
中级守护
中级守护

@陆麟瑞

建个超级源点,向所有左图的点全部都建一条有向边。

然后建个超级汇点,将所有右图的点全部都向它建一条有向边。

然后以超级源点和超级汇点跑最大流就好。

这应当不难想到。

代码参见我的剪贴板:不要举报,这没有违反社区规则

还有,在CTD问答问网络流怕是石乐志。

李庚午在2018-08-24 23:23:07追加了内容

我还想补充一点的是,网络流求解的复杂度是远远超过匈牙利算法的,您在对JTY的评论里给出的两种算法的复杂度都不对。

 

匈牙利极限复杂度O(n^3),平均是O(n^2)

网络流,,,,这个复杂度不好讲

Dinic O(n^2*m)

EK O(n*m^2)

都显然的要比匈牙利算法慢

然而您要是会ISAP或者预流推进,,,当我没说好了

 

顺带求个换CTD头像的办法啊。

 

0
项依凡
项依凡
初级光能
初级光能

我什么都非常very菜,

被杀了。

 

0
完颜傲伦
完颜傲伦
资深守护
资深守护

匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。我觉得已经行了,下面讲解一下:

其原则大概是:有机会上,没机会创造机会也要上

0
0
0
蒋智航
蒋智航
高级天翼
高级天翼

匈牙利算法貌似是我看来最优解法

0
我要回答