算法设计与分析答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 按分治策略求解棋盘覆盖问题时,对于如图所示的24×24
的特殊棋盘,共需要多少个L 型骨
牌;并在棋盘上填写L 型骨牌的覆盖情况。
2. 假设有7个物品,给出重量和价值。若这些物品均不能被分割,且背包容量M =140,使用回
溯方法求解此0-1背包问题。请画出状态空间搜索树。
3. 假设有7个物品,它们的重量和价值如下表所示。若这些物品均可以被分割,且背包容量M
=140,使用贪心算法求解此背包问题。请写出求解策略和求解过程。 W (35,30,50,60,40,10,25)p (10,40,30,50,35,40,30)
4. 在给出的电路板中,阴影部分是已作了封锁标记的方格,请按照队列式分支限界法在图中确定
a 到
b 的最短布线方案,要求布线时只能沿直线或直角进行,在图中标出求得最优解时各方格情况。
5. 画出字符表的哈夫曼编码对应的二叉树。
6. 已知1
()*()i
i k k ij r r A a +=,k =1,2,3,4,5,6,r 1=5,r 2=10,r 3=3,r 4=8,r 5=5,r 6=20,r 7=6,求
矩阵链积A 1×A 2×A 3×A 4×A 5×A 6的最佳求积顺序。
7. 给出城市网络图,售货员要从城市1出发,经过所有城市回到城市1,画出该问题的解空间树,
描述出用优先队列式分支限界法求解时的搜索情况。表示出优先队列、当前扩展结点等的变化情况。
8. 依据优先队列式分支限界法,求从s 点到t 点的单源最短路径,画出求得最优解的解空间树。
一、假设有7个物品,它们的重量和价值如下表所示。若这些物品均不能被分割,且背包容量M
=150,使用回溯方法求解此背包问题。请写出状态空间搜索树(20分)。
答:按照单位效益从大到小依次排列这7个物品为:FBGDECA 。将它们的序号分别记为1~7。则可生产如下的状态空间搜索树。其中各个节点处的限界函数值通过如下方式求得:【排序1分】
x 5x =6x =7x =17分,
每个节点1分】
a .150115
4040305035190.625
40
-++++⨯=
7(1,1,1,1,
,0,0)
8
b.
150115
4040305030177.560
-++++⨯
=7
(1,1,1,1,0,
,0)12
c .4040305010170++++= (1,1,1,1,0,0,1)
d. 150105
4040303530167.560-++++⨯
=
3(1,1,1,0,1,
,0)
4
e. 150130
404050353017560
-++++⨯
=
1(1,1,0,1,1,,0)
3
f.
150130
4040503510170.7135
-++++⨯
=
4(1,1,0,1,1,0,)
7
g. 40405030160+++= (1,1,0,1,0,1,0)
h.
150140
4040353010146.8535
-++++⨯
=2(1,1,0,0,1,1,)7
i.150125
4030
503530167.5
60
-++++⨯
=5
(1,0,1,1,1,
,0)12
j. 150145
4030503530157.5
60
-++++⨯
=1(0,1,1,1,1,,0)
12
在Q 1处获得该问题的最优解为(1,1,1,1,0,0,1),背包效益为170。即在背包中装入物品F 、B 、G 、D 、A 时达到最大效益,为170,重量为150。【结论2分】
一、
已知1
()*()i
i k k ij r r A a +=,k =1,2,3,4,5,6,r 1=5,r 2=10,r 3=3,r 4=12,r 5=5,r 6=50,r 7=6,
求矩阵链积A 1×A 2×A 3×A 4×A 5×A 6的最佳求积顺序。(要求:给出计算步骤)(20分)
答:使用动态规划算法进行求解。 求解矩阵为:【每个矩阵18分】
因此,最佳乘积序列为(A 1A 2)((A 3A 4)(A 5A 6)),共执行乘法2010次。【结论2分】 二、
假设有7个物品,它们的重量和价值如下表所示。若这些物品均可以被分割,且背包容
量M =150,如果使用贪心方法求解此背包问题,请回答:(20分)。
(1) 对各个物品进行排序时,依据的标准都有哪些?
(2) 使用上述标准分别对7个物品进行排序,并给出利用各个顺序进行贪心求解时获得解。 (3) 上述解中哪个是最优的?
答:
(1)标准:重量、价值和单位价值。【3分,每个1分】
(2)使用重量从小到大:FGBAEDC。得到贪心解为:FGBAE全部放入,而D放入20%,得到价值为165。【5分】
使用价值从大到小:DFBEGCA,得到贪心解为:DFBE全部放入,而G放入80%,得到价值为:189。【5分】
使用单位价值从大到小:FBGDECA,得到贪心解为:FBGD全部放入,而E放入87.5%,得到价值为190.625。【5分】
(3)显然使用单位价值作为标准得到的是最优解。【2分】
三、对于下图使用Dijkstra算法求由顶点a到其他各个顶点的最短路径。并给出求各个顶点对之间的最短路径的算法思想。(20分)。
答:三、用V1表示已经找到最短路径的顶点,V2表示与V1中某个顶点相邻接且不在V1中的顶点;E1表示加入到最短路径中的边,E2为与V1中的顶点相邻接且距离最短的路径。【1分】
步骤V1V2E1E2
1.{a} {b} {} {ab}
2.{a,b} {d} {ab} {bd}
3.{a,b,d} {c,f} {ab,bd} {dc,df}
4.{a,b,d,c} {f} {ab,bd} {df}
5.{a,b,c,d,f} {e} {ab,bd,dc,df} {fe}
6.{a,b,c,d,e,f} {g} {ab,bd,dc,df,fe} {eg}
7.{a,b,c,d,e,f,g} {h} {ab,bd,dc,df,fe,eg} {gh}
8.{a,b,c,d,e,f,g,h} {} {ab,bd,de,df,fe,eg,gh} {} 【以上每步2分】
结果:从a到h的最短路径为a b d f e g h
→→→→→→,权值为18。【1分】求所有顶点对之间的最短路径可以使用Dijkstra算法,使其起始节点从a循环到h,每次求起始节点到其他节点的最短路径,最终可以求得所有顶点对之间的最短路径。【2分】