因此,假设我有一家正在运营的医院,并且有1名医生和5名患者。 1号病人进来了,没人在排队,所以他先走了。
接下来,我还有3个患者。鲍勃已经等了3个小时了。萨莉一直在等待2.吉姆一直在等待1.根据到达,鲍勃先走,然后是萨莉,然后是吉姆。就像常规队列(FIFO)。
接下来鲍勃去了。在鲍勃(Bob)考试期间,杰克(Jack)进来,脑袋里拿着斧头。杰克需要立即关注。我将如何立即停止Bob的检查并在此优先级队列中交换给Jack?
伪代码在结构上看起来像什么?这需要计时器吗?
我正在努力了解自适应优先级队列的工作方式,并想了解其背后的逻辑。不是要求代码,而是这种事情的思考过程。
类似这样的内容:
答案 0 :(得分:0)
我认为所描述的是像POSIX signals这样的信号系统与实际的队列/出队过程的组合,在此过程中,您只需要在出队时先提升某些患者 < / em>,我会以严肃性(分类)猜测。也许是这样的:
SELECT patient_id
FROM wait_list
WHERE queue_status = 'awaiting service'
ORDER BY triage_code, queue_dt # queue_dt is a Date/Time
triage_code
可能具有以下映射:
1 # Very serious
3 # Serious
5 # Stable
7 # Stable Non-Serious
9 # Non-Serious
最后一组可能是疫苗接种等。使其稀疏以使您有所增长,或者只是使用1-3
。我最近做了这个,效果很好。只需保留数字的映射即可。
答案 1 :(得分:0)
您可以创建一个state
字段,以告知您当前的患者治疗状态,可以是:
waiting
interrupted
finished
examining
... 并有一张桌子,您将在该表中记录最后一位被打扰的患者和您将要首先检查的有严重问题的最后一位患者。
这样您就可以跟踪最后被打断的病人,并在遇到严重问题的病人结束后给他回电。
我认为这可以工作