算法设计与分析试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计与分析试题

一、

对于下图使用Dijkstra 算法求由顶点a 到顶点h 的最短路径。

a h

g

f e

d

c

b

1

2

1

2

2

8

2

3

22

3

解:用V 1表示已经找到最短路径的顶点,V 2表示与V 1中某个顶点相邻接且不在

V 1中的顶点;E 1表示加入到最短路径中的边,E 2为与V 1中的顶点相邻接且距离最

短的路径。【1分】

步骤 V 1 V 2 E 1 E 2 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分】

二、

假设有7个物品,它们的重量和价值如下表所示。若这些物品

均不能被分割,且背包容量M =150,使用回溯方法求解此背包问题。请写出状态空间搜索树。

品 A B C D E F G 重

量 3

5 3

0 6

0 5

0 4

0 1

0 2

5 价

值 1

0 4

0 3

0 5

0 3

5 4

0 3

解:按照单位效益从大到小依次排列这7个物品为:FBGDECA 。将它们的序号分

别记为1~7。则可生产如下的状态空间搜索树。其中各个节点处的限界函数值通过如下方式求得:【排序1分】

a

a a

b

a

a

c

Q 1

11

x =21

x =31

x =41

x =50

x =60

x =70

x =d

e

e

40

x =30

x =41

x =e

51

x =f

60

x =g

50

x =h 40

x =i

20

x =j

10

x =【状态空间搜索树及其计算过程17分,

每个节点1分】

a .1501154040305035190.62540

-++++⨯= 7(1,1,1,1,,0,0)8

b. 1501154040305030177.560

-++++⨯=7(1,1,1,1,0,,0)12

c .4040305010170++++= (1,1,1,1,0,0,1)

d. 1501054040303530167.560

-++++⨯= 3(1,1,1,0,1,,0)4

e. 150130404050353017560

-++++⨯= 1(1,1,0,1,1,,0)3

f. 1501304040503510170.7135

-++++⨯= 4(1,1,0,1,1,0,)7

g. 40405030160+++= (1,1,0,1,0,1,0)

h. 1501404040353010146.8535-++++⨯=

2

(1,1,0,0,1,1,)

7

i.1501254030503530167.560

-++++⨯=5(1,0,1,1,1,,0)12

j. 1501454030503530157.560

-++++⨯=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的最佳

求积顺序。(要求:给出计算步骤) 解:使用动态规划算法进行求解。

求解矩阵为:【每个矩阵18分】 1 2 3 4 5

6 1 0 150 330 405 1655 2010 2 0 360 330 2430 1950 3 0 180 930 1770 4 0 3000 1860 5 0 1500 6

因此,最佳乘积序列为(A 1A 2)((A 3A 4)(A 5A 6)),共执行乘法2010次。【结论2分】

1 2 3 4 5 6 1 0 1 2 2 4 2 2 0 2 2 2 2 3 0 3 4 4 4 0 4 4 5 0 5 6 0

相关文档
最新文档