我需要帮助实现以下调度问题的有效算法。
明天有n
病人来医院体检,但只有2位医生(A医生和B医生)。每次健康检查需要一个医生的时间段。如果可能,我需要将这些n
患者分配到n
仅使用 1 名医生的时间段。如果不可能有 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
解决此类问题的最有效算法是什么?我该如何为此实现福特富尔克森算法?
到目前为止我所做的。
我试图将每个患者的可用时间段存储到单独的数组中。
按长度对数组进行排序。首先为患者分配最少可用时间段。
分配患者后,删除其余数组中的此时间段并再次按长度对数组进行排序。
重复此过程,直到分配所有患者。