【发布时间】:2014-10-11 05:16:14
【问题描述】:
我需要帮助实现以下调度问题的有效算法。
明天有n的病人来医院做健康检查,但是只有2位医生(A医生和B医生)。每次健康检查需要一个医生的时间段。如果可能的话,我需要将那些n 患者分配到n 时隙,只使用一名医生。如果不可能有 1 位医生,我最多可以分配 2 位医生,因为只有 2 位医生可用。如果2个医生还不够。直接输出impossible
我将患者的可用性作为输入。比如有5个病人,1号病人只在1、2、5时段可用,2号病人在3、4时段可用,3号病人在1号时段可用……以此类推.
P1: 1 2 5
P2: 3 4
P3: 1
P4: 2
P5: 3 5
在这种情况下,我只需要一名医生来完成这项工作。输出
P1: Time slot 5 - Doc A
P2: Time slot 4 - Doc A
P3: Time slot 1 - Doc A
P4: Time slot 2 - Doc A
P5: Time slot 3 - Doc A
如果我得到如下输入:
P1: 1 2 5
P2: 3 4
P3: 2
P4: 2
P5: 3 5
那么我需要分配两位医生,因为 P3 和 P4 在可用性方面存在冲突。 输出:
P1: Time slot 5 - Doc A
P2: Time slot 4 - Doc A
P3: Time slot 2 - Doc A
P4: Time slot 2 - Doc B
P5: Time slot 3 - Doc A
解决此类问题最有效的算法是什么?我该如何为此实现福特富尔克森算法?
到目前为止我做了什么。
我试图将每个患者的可用时间段存储到单独的数组中。
按长度对数组进行排序。首先为患者分配可用时隙最少的患者。
分配患者后,删除其余数组中的此时间段,并再次按长度对数组进行排序。
重复此过程,直到分配所有患者。
【问题讨论】:
-
我有一个想法,但我不知道与您的代码相比是否有效。你能显示你的代码吗?
-
我想知道当她有超过 1 个可用时隙时,您将如何为患者分配最少可用时隙。
标签: java algorithm ford-fulkerson