Algorithm 贪婪启发式求解分配问题
我正在努力解决这个问题: 佩内洛普是新建超级计算机管理团队的一员。 她的工作是把工作站分配给来这里工作的研究人员 在超级计算机上运行他们的计算。佩内洛普很懒,也很聪明 讨厌为即将到来的研究人员打开机器。她可以解锁 这些机器远离她的办公桌,但并没有感觉到这一点 卑微的工作符合她的条件。她应该决定忽略吗 她可以简单地要求研究人员不要这样做 离开时锁定工作站,然后分配新的 研究人员将研究对象转移到不再使用的工作站上,但这些工作站 仍然没有上锁。这样,她只需要解锁每个工作站 对于第一个使用它的研究人员来说,这将是一个巨大的进步 为了佩内洛普 不幸的是,如果发生以下情况,未使用的工作站会自动锁定 它们被闲置的时间超过了一个想法:Algorithm 贪婪启发式求解分配问题,algorithm,kotlin,greedy,Algorithm,Kotlin,Greedy,我正在努力解决这个问题: 佩内洛普是新建超级计算机管理团队的一员。 她的工作是把工作站分配给来这里工作的研究人员 在超级计算机上运行他们的计算。佩内洛普很懒,也很聪明 讨厌为即将到来的研究人员打开机器。她可以解锁 这些机器远离她的办公桌,但并没有感觉到这一点 卑微的工作符合她的条件。她应该决定忽略吗 她可以简单地要求研究人员不要这样做 离开时锁定工作站,然后分配新的 研究人员将研究对象转移到不再使用的工作站上,但这些工作站 仍然没有上锁。这样,她只需要解锁每个工作站 对于第一个使用它的研究人员来
- 让wa、wb两个工作站免费/可用
- 研究员来了
- 佩内洛普应指定最接近锁定的工作站(她将锁定机器的可能性降至最低)
min_{w in workstation} w.lockAt
such that w.lockAt >= arrival + m
如果没有此类机器,则使用锁定的机器。随便哪个。e、 g最小的锁(方便)
为了存储机器,一个按lookAt排序的有序集合将允许以o(klog(k))为单位进行维护
O(max(2nlog(2n),nklog(k)),其中k是工作站的数量
在我的土豆机O3cpp上,我可以在大约2秒内重复10^9次,所以(非常糟糕)
一个贪婪的算法根本不起作用。为了简单起见,忽略空闲时间。假设工作站W在某个时间t开始可用。有两名研究人员在时间t到达。爱丽丝需要10分钟,鲍勃需要20分钟。哪一个被分配到W?这取决于下一位研究人员何时到达。如果卡罗尔在t+10到达,给爱丽丝W。如果David在t+20到达,给Bob打W。如果卡罗尔和大卫都到了怎么办?我们要看看谁在他们后面。如果7名研究人员在t+10到达,11名研究人员在t+20到达,他们都需要不同的时间怎么办?谢谢您的反馈。:)前面两种情况已经介绍过了(因为我使用的是treeset,它允许查找最接近给定开始时间的结束时间)。我认为接下来的每一个案例都可以根据这两个案例的逻辑来处理。经过5个多小时的撞击,我认为你是对的:)有没有正确解决这个问题的方法?