应用网络流量

时间:2018-11-05 18:52:49

标签: java python algorithm computer-science network-flow

因此,我最近开始研究网络流量(最大流量,最小切割等),并且网络流量的一般问题始终涉及将某物的“ n”分配给另一物的“ k”。例如,我将如何在拥有“ k”所学校的城市中为“ n”个孩子建立网络流,以使孩子们的住所在学校的x公里之内(为简单起见,假设为1公里)?

如果我要进一步增加限制,例如说每所学校的学生人数不能超过100,该怎么办?还是300名学生?有人可以帮助我如何初步设置算法来解决此类问题(也希望获得任何参考)吗?他们倾向于出现在过去的期中/考试中,所以我只想做好准备

1 个答案:

答案 0 :(得分:0)

为每个学生和每个学校创建顶点。根据您的距离限制,从每个学生到可以参加的每所学校,画一条容量为1的边。为每个学生创建一个容量为1的源顶点。创建一个汇聚顶点的汇聚顶点,其边缘来自每个学校,容量等于每个学校的最大容量。

运行标准的最大流量算法将使尽可能多的学生上学。当然,在有限制的情况下,并不是每个学生都能保证上学。

这基本上是对标准最大二分匹配算法的修改。主要区别在于接收器的容量大于1,这允许多个学生匹配到一所学校。