我应该使用什么算法

时间:2015-12-10 00:37:50

标签: algorithm

我需要编写一个程序,以确定在天黑之前有多少孩子可以找到睡觉的床。

每个孩子和每张床都有自己的坐标集(x.x,y.y)。

只有一个孩子适合一张床。

没有两个孩子或床位于同一套坐标上。

每个孩子每分钟步行一步,例如,孩子从22.0,0.0到19.0,0.0步行需要3分钟。

示例:

  

Child1为22.0,0.0

     

Child2为0.0,19.0

     

Bed1为18.0,0.0

     

Bed2为50.0,14.0

     

5分钟内会变黑,有多少孩子可以在5分钟内找到床。

我一直在研究最大流量问题,但我认为它不适用于我的问题。

1 个答案:

答案 0 :(得分:1)

要解决此问题,您需要实现二分最大匹配(最大流量的特殊情况)算法。首先,您需要根据数据创建图表。将每个孩子连接到每张床上,除非孩子到床的距离大于离开天黑的时间。因为使用最大流量也可以解决二分最大匹配问题,所以我们从该图中制作流网络并用最大流量求解。为此,您应该创建一个容量为source的{​​{1}}节点,并将其连接到所有子节点,并创建一个infinity节点,其容量为sink,并将每个床连接到它。同时为儿童和床之间的所有边缘指定大小为infinity的容量。之后,通过在此图表上运行最大流量算法,您将找到答案。