订购2件商品的组合的算法

时间:2018-10-04 10:29:09

标签: algorithm math

我有5个要解决的数学问题,有30个人将尝试解决每个问题。

我知道每个人能够以多快的速度解决诸如此类的特定问题:

Person1将在5秒内解决问题A,在7分钟内解决B,在20分钟内解决C,在2分钟内解决D。

只有一个人可以同时处理一个问题。

是否有任何算法可以帮助我确定对这些人进行编程的顺序,以便获得最短的golbaloverall解决时间?

1 个答案:

答案 0 :(得分:0)

算法: https://en.wikipedia.org/wiki/Backtracking

您有一棵有5个级别(问题阶段)的树。这有点像组合。您将尝试每种组合并节省最佳时间。一旦有一次,并且当前组合大于它,您将回溯并尝试通过其中的一些方式进行其他替代丢弃(比如说,丢弃组合树的分支)。

您可以对元素(人员)进行一些预处理,从而提高性能,从而以首先检查最可能的组合的方式对其进行排序。 您可以先为每组候选人安排最佳计时器。回溯的条件之一可能是IsSolvingOtherProblem bool。

您将拥有其他替代方案的最佳最佳解决方案,但这将使您找到所需的解决方案,而且不会花很多时间。