You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Interval scheduling:双组护士排班可行性验证问题(满足[1,t]时段双岗覆盖且组规模不超过I)

护士双组全时段覆盖排班问题解法

我来帮你拆解这个医院护士排班的问题,给出清晰的问题定义、约束条件和示例解法:

问题背景

医院需要确保在整数时段[1, t]内的每一个时刻,都至少有两名护士在岗。不过这里有个特殊要求:这两名护士必须分别来自两个不同的护士组G₁G₂,而且每个组的人数不能超过给定的阈值I

每名护士都有自己的可用工作区间{startₖ, endₖ},你可以灵活安排他们在自己的可用区间内的上岗/离岗时间,只要能达成最优的排班效果就行。

核心问题

我们需要判断:是否能从现有的n名护士中划分出两个组G₁G₂,满足:

  • 组规模限制:|G₁| ≤ I|G₂| ≤ I
  • 全时段覆盖要求:对于[1, t]里的任意时刻,G₁至少有一名护士在岗,同时G₂也至少有一名护士在岗

示例输入

nurses_availability: [ {1, 5}, {1, 6}, {5, 6}, {8, 10}, {6, 10}, {6, 8}, {7, 10} ]
I = 3
t = 10

示例可行方案

  • G₁ = [ {1, 5}, {6, 10} ](组规模为2,满足≤3的约束)
  • G₂ = [ {1, 6}, {6, 8}, {7, 10} ](组规模为3,刚好达到阈值I

覆盖验证

针对1到10的每个整数时刻,两组的在岗情况都满足要求:

  • 时刻1-5:G₁有{1,5}在岗,G₂有{1,6}在岗
  • 时刻6:G₁有{6,10}在岗,G₂有{1,6}{6,8}在岗
  • 时刻7-8:G₁有{6,10}在岗,G₂有{6,8}{7,10}在岗
  • 时刻9-10:G₁有{6,10}在岗,G₂有{7,10}在岗

内容的提问来源于stack exchange,提问作者MOE

火山引擎 最新活动