【发布时间】:2020-03-06 04:03:45
【问题描述】:
如果我有一个整数列表,表示完成一项任务所需的时间,并且我有 x 个工作人员只能处理一项任务,直到完成所需的时间结束,我能找到它的最短时间吗可能会采取最好的情况吗?我不需要构成这个最短完成时间的确切排列,只需要时间。
例如,为了简单起见,如果我有一个列表 [2, 4, 6] 并且我有 2 个工作人员,那么如果我从 2 和 4 开始,那么当 2 完成时 6 将开始,这意味着需要 8 秒完成所有任务。但是,如果我从 6 和 2 开始,那么当 2 完成时,4 将与 6 同时开始和完成,因此如果按此顺序完成任务,则只需 6 秒。
有没有比n 知道只需要6 秒的方法!还是蛮力复杂性保证它是可能的最短时间?感谢您提前提供的任何帮助,如果我遗漏了任何细节或您感到困惑,请随时提出问题!
编辑:请帮助:(
编辑 2:有可能吗?有人知道吗?
【问题讨论】:
-
我认为在这种情况下,找到“在最佳情况下可能花费的最短时间”需要与确定任务执行顺序相同的工作量(即确定排列)。这个问题我没有想太多,但它让我想起了Knapsack Problem。但是,找到最小下限是一个更简单的问题,我认为这是您要寻找的术语,而不是“最佳情况”。
-
同意,我想要最短时间的原因是,而不是迭代到 n!为了找到最佳排列,我可以迭代直到找到最短时间然后中断,所以我只是想知道是否有一些公式或其他东西可以确定小于 n 的最短时间!欢呼告诉我背包问题很有趣@Dai
-
顺便说一句,您可能还想查看en.wikipedia.org/wiki/Hungarian_algorithm,因为我认为您的问题是调度问题的一个实例,其中所有工作人员对每个任务都有相同的成本 - 在这种情况下,您可以找到在最多
O(n^4)提供的时间内(其中n == workers * tasks)最好的解决方案(无需寻找界限)优于O(n!)。 -
您正在寻找任务集合的 makespan。有很多先前的工作需要审查。
-
@HighPerformanceMark 你知道我在哪里可以找到这项工作来审查吗?我已经做了一些研究,感谢你告诉我 makepan 这个术语有很大帮助,但几乎我能找到的每一个算法都涉及一些规定,比如 x 任务必须在 y 之前完成,而我的程序没有这样的规定所以他们的算法对我没有多大帮助。感谢您的帮助!
标签: list math optimization scheduled-tasks code-complexity