Javatpoint标志
Javatpoint标志

装配线调度

问题陈述

这是一个可以用动态规划方法解决的流行问题。流水线是工业用较少的人力和更快的速度来生产产品的机械。在流水线上,原料被放到生产线上,经过几个步骤,对原料进行一些操作。

在这个问题中,我们有两条装配线,每条线都有N电台。N站有他们的功能,如绘画,形状制作等。这两条线除了所用的时间外,就功而言是相同的。

由于进入时间分别需要进入流水线1和流水线2,因此有e1和e2。

也有x1和x2作为各自线路的退出时间。

如果我们在任何一站,我们会加上该站的时间,然后我们会移动到下一站。下一站我们有两种选择,要么我们去同一线路的下一站,要么我们去另一条线路的下一站。如果我们选择去另一条生产线的下一站,我们将不得不增加从装配线转移的过渡时间。

最后,我们必须计算出从装配线退出产品所需的最短时间。

例如:

装配线调度

我们有两条装配线,假设我们决定选择突出显示的路径。所需时间为:

8+12+5+4+3+2+10+12+8+9+2 = 75个单位。

我们必须选择一条时间最短的路。

Method1

我们将用递归方法来解决这个问题。因为在每一站,我们都有两种可能,要么去同一线路的下一站,要么去另一条线路的下一站。

Java代码:

输出:

装配线调度

解释

在上面的代码中,我们有两个2d数组。一个数组表示两条线路上每个站的时间,另一个2d数组表示过渡时间。

我们可以从1号线或2号线开始。我们有两个选择,所以我们取两个选项的最小值并开始递归调用。

在每个站点,我们进行两次递归调用,并返回两个结果的最小值。对于基本情况,如果我们在最后一站,我们将把该站的时间和该线的出口时间相加,并返回该值。

因为在每一个连续的步骤中,我们有两个递归选择

时间复杂度:O(2n),其中n为车站数。

空间复杂度:O(n)用于递归。

Method2

由于存在重叠的递归调用,我们将使用动态编程方法来解决这个问题。我们将使用制表的方法来解决这个问题,我们将从下到上在表格中得到结果。

Java代码:

输出:

装配线调度

时间复杂度: O (nx2)

空间复杂度: O (nx2)

我们可以将时间复杂度降低到常数,因为在表中,我们只需要下一个迭代的两个条目,这已经解决了。

Method3

Java代码:

输出:

装配线调度

解释

在上面的代码中,我们只使用了四个变量而不是一个数组,它与站点的数量无关,所以它是在常数时间内。

时间复杂度(nx2)

空间复杂度: O (1)







Youtube 观看视频请加入我们的Youtube频道:现在加入

反馈


帮助他人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


B.Tech / MCA






Baidu
map