全部科目 > 软件设计师 >
2017年上半年 上午试卷 综合知识
第 63 题
知识点 动态规划法  
章/节 计算机软件知识  
 
 
某汽车加工工厂有两条装配线L1和L2,每条装配线的工位数均为n(Sij,i=1或2,j= 1,2,...,n),两条装配线对应的工位完成同样的加工工作,但是所需要的时间可能不同(aij,i=1或2,j=1,2,...,n)。汽车底盘开始到进入两条装配线的时间 (e1,e2) 以及装配后到结束的时间(x1x2)也可能不相同。从一个工位加工后流到下一个工位需要迁移时间(tij,i=1或2,j=2,...n)。现在要以最快的时间完成一辆汽车的装配,求最优的装配路线。
分析该问题,发现问题具有最优子结构。以L1为例,除了第一个工位之外,经过第j个工位的最短时间包含了经过L1的第j-1个工位的最短时间或者经过L2的第j-1个工位的最短时间,如式(1)。装配后到结束的最短时间包含离开L1的最短时间或者离开L2的最短时间如式(2)。

由于在求解经过L1和L2的第j个工位的最短时间均包含了经过L1的第j-1个工位的最短时间或者经过L2的第j-1个工位的最短时间,该问题具有重复子问题的性质,故采用迭代方法求解。
该问题采用的算法设计策略是(62),算法的时间复杂度为(63)
以下是一个装配调度实例,其最短的装配时间为(64),装配路线为(65)


 
  A.  θ(lgn)
 
  B.  θ(n)
 
  C.  θ(n2)
 
  D.  θ(nlgn)
 
 




 
 
相关试题     算法设计与分析 

  第65题    2013年下半年  
在求解某问题时,经过分析发现该问题具有最优子结构性质,求解过程中子问题被重复求解,则采用(64)算法设计策略;若定义问题的解空间,以深度优先的方式搜索解空间,则采用(65)算法设计策略。

  第62题    2015年下半年  
已知算法A的运行时间函数为T(n)=8T(n/2)+n2,其中n表示问题的规模,则该算法的时间复杂度为(62)。另已知算法B的运行时间函数为T(n)=XT(n/4)+n2,其中n表示问题的规模。..

  第65题    2016年下半年  
两个矩阵Am*n和Bn*p相乘,用基本的方法进行,则需要的乘法次数为m*n*p。多个矩阵相乘满足结合律,不同的乘法顺序所需要的乘法次数不同。考虑采用动态规划方法确定Mi..

 
知识点讲解
· 动态规划法
 
        动态规划法
               动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是独立的。
               动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解,每个解都对应于一个值,希望找到具有最优值(最大值或最小值)的那个解。当然,最优解可能会有多个,动态规划算法能找出其中的一个最优解。设计一个动态规划算法,通常可按照以下几个步骤进行。
               (1)找出最优解的性质,并刻画其结构特征。
               (2)递归地定义最优解的值。
               (3)以自底向上的方式计算出最优值。
               (4)根据计算最优值时得到的信息,构造一个最优解。
               对一个给定的问题,若其具有以下两个性质,则可以考虑用动态规划法来求解。
               (1)最优子结构。如果一个问题的最优解中包含其子问题的最优解,就说该问题具有最优子结构。当一个问题具有最优子结构时,表示动态规划法可能会适用,但是此时贪心策略可能也是适用的。
               (2)重叠子问题。它指用来解原问题的递归算法可反复地解同样的子问题,而不是总在产生新的子问题。即当一个递归算法不断地调用同一个问题时,就说明该问题包含重叠子问题。此时若用分治法递归求解,则每次遇到子问题都会视为新问题,会极大地降低算法的效率,而动态规划法总是充分利用重叠子问题,对每个子问题仅计算一次,把解保存在一个在需要时就可以查看的表中,而每次查表的时间为常数。



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有