算法分析第六章答案.ppt
《算法分析第六章答案.ppt》由会员分享,可在线阅读,更多相关《算法分析第六章答案.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机算法分析计算机算法分析习题课习题课第六章1,2,3,4,5,6,7,8,12,13,15,171 1动态规划动态规划1.多阶段过程2.满足最优性原理3.建立递推关系式2 2P151-1n n递推关系式递推关系式(6.8)对右图成立吗?为对右图成立吗?为什么?什么?n n递推关系式递推关系式(6.8)为什么对于含有负为什么对于含有负长度环的图不能成立?长度环的图不能成立?12345674536-429313 3n nAk(i,j)=minAk-1(i,j),Ak-1(i,k)+Ak-1(k,j),k 1成立,不包含负长度环成立,不包含负长度环.P130可以使结点间的长度任意小。可以使结点间
2、的长度任意小。P151-14 4P151-2 n n修改过程修改过程ALL_PATHS,使其输出每对,使其输出每对结点(结点(i,j)间的最短路径,这个新算法)间的最短路径,这个新算法的时间和空间复杂度是多少?的时间和空间复杂度是多少?n n回忆算法:回忆算法:P131 算法算法6.3P127 算法算法6.1 5 5P131 算法算法6.3n n对矩阵进行初始化,每个元素赋值为边的成本对矩阵进行初始化,每个元素赋值为边的成本(15行行)n n迭代计算最短路径长度迭代计算最短路径长度(612行行)n nAk(i,j)=minAk-1(i,j),Ak-1(i,k)+Ak-1(k,j),k 16 6
3、P127 算法算法6.1n nD(i,j)/D(j):D(i,j)/D(j):从节点从节点从节点从节点j j到汇点到汇点到汇点到汇点t t的最优路径中下一个的最优路径中下一个的最优路径中下一个的最优路径中下一个节点,即最优路径中节点,即最优路径中节点,即最优路径中节点,即最优路径中j j的后继节点。的后继节点。的后继节点。的后继节点。n n算法算法算法算法6.16.1在计算在计算在计算在计算COST(j)COST(j)的同时也记录了的同时也记录了的同时也记录了的同时也记录了D(j)D(j)3 37 7行行行行n n计算出计算出计算出计算出D(j)D(j)之后,即可计算最短路径。之后,即可计算最
4、短路径。之后,即可计算最短路径。之后,即可计算最短路径。9 91111行行行行n n仿照仿照仿照仿照6.1,6.1,用用用用Path(i,j)Path(i,j)表示从表示从表示从表示从i i到到到到j j的最短路径时的最短路径时的最短路径时的最短路径时i i的的的的后继结点。后继结点。后继结点。后继结点。7 7Procedure ShortestPath(COST,n,A,Max)Procedure ShortestPath(COST,n,A,Max)integer i,j,k integer i,j,k real COST(n,n),A(n,n),Path(n,n),Maxreal COST
5、(n,n),A(n,n),Path(n,n),Maxfor i1 to n do/for i1 to n do/初始化最初始化最初始化最初始化最优优优优路径矩路径矩路径矩路径矩阵阵阵阵for j1 to n do for j1 to n do A(i,j)COST(i,j)A(i,j)COST(i,j)if ij and A(i,j)Max thenif ij and A(i,j)Max thenPath(i,j)jPath(i,j)jelseelsePath(i,j)0Path(i,j)0endifendif repeatrepeatrepeatrepeat8 8for k1 to n do
6、/迭代迭代计计算算for i1 to n do for j1 to n do if A(i,j)A(i,k)+A(k,j)thenA(i,j)A(i,k)+A(k,j)Path(i,j)Path(i,k)endifrepeatrepeatrepeat9 9for i1 to n do/for i1 to n do/输输输输出最出最出最出最优优优优路径路径路径路径for j1 to n dofor j1 to n doprint(“the path of i to j is”i)print(“the path of i to j is”i)kpath(i,j)kpath(i,j)while k0
7、 dowhile k0 doprint(k)print(k)kpath(k,j)kpath(k,j)repeatrepeatrepeatrepeatrepeatrepeatend ShortestPath1010复杂度分析复杂度分析n n时间复杂度时间复杂度第一个循环:第一个循环:O(n2)第二个循环:第二个循环:O(n3)第三个循环:第三个循环:O(n3)n n空间复杂度空间复杂度Cost(n,n)A(n,n)Path(n,n)O(n2)1111P151-3n n对对于于标识标识符集符集(a1,a2,a3,a4)=(end,goto,print,stop),已知成功,已知成功检检索概率索概率
8、为为P(1)=1/20,P(2)=1/5,P(3)=1/10,P(4)=1/20,不成功,不成功检检索索概率概率为为Q(0)=1/5,Q(1)=1/10,Q(2)=1/5,Q(3)=1/20,Q(4)=1/20,用算法,用算法OBST对对其其计计算算W(i,j),R(i,j)和和C(i,j)(0i,j4)。1212递推关系式:递推关系式:n nW(i,j)=Q(i)i=jW(i,j-1)+P(j)+Q(j)ij n nC(i,j)=0 i=j W(i,j)+minC(i,k-1)+C(k,j)ij k在在R(i,j-1)和和R(i+1,j)中,使中,使C(i,k-1)+C(k,j)取最小值。取
9、最小值。n nR(i,j)=k1313P136 算法算法6.5n nP(i)P(1)=1/20,P(2)=1/5,P(3)=1/10,P(4)=1/20n nQ(i)Q(0)=1/5,Q(1)=1/10,Q(2)=1/5,Q(3)=1/20,Q(4)=1/20化化简为简为整数形式整数形式n nP(i)P(1)=1,P(2)=4,P(3)=2,P(4)=1n nQ(i)Q(0)=4,Q(1)=2,Q(2)=4,Q(3)=1,Q(4)=11414WWR RC C4 44+2+14+2+1=7=77+4+47+4+4=151515+2+15+2+1=1=181818+1+18+1+1=1=20200
10、 01 12 22 22 20 07 72222 3232 39392 22+4+42+4+4=10=1010+2+10+2+1=1=131313+1+13+1+1=1=15150 02 22 22 20 01010 2020 27274 44+1+24+1+2=7=77+1+17+1+1=9 90 03 33 30 07 712121 11+1+11+1+1=3=30 04 40 03 31 10 00 0ijj-i=0;j-i=1;j-i=2;j-i=3;j-i=4n nP(1)=1,P(2)=4,P(3)=2,P(4)=1P(1)=1,P(2)=4,P(3)=2,P(4)=1n nQ(0
11、)=4,Q(1)=2,Q(2)=4,Q(3)=1,Q(4)=1Q(0)=4,Q(1)=2,Q(2)=4,Q(3)=1,Q(4)=11515P151-4n n证明算法证明算法OBST的计算时间是的计算时间是O(n2)。n n在已知根在已知根R(i,j),0 i 1,求使,求使|w(m,k-1)-w(k,n)|值值最小的最小的k值,不妨设是值,不妨设是r,其中,其中k=m+1,n,rmn=r。令令令令m=mm=m,n=r-1 n=r-1,重复上述过程。,重复上述过程。,重复上述过程。,重复上述过程。令令令令m=rm=r,n=nn=n,重复上述过程。,重复上述过程。,重复上述过程。,重复上述过程。2
12、525Procedure CreateTree(m,n,root,w)Procedure CreateTree(m,n,root,w)integer r,k,root(n,n),w(n,n)integer r,k,root(n,n),w(n,n)real ww,min+real ww,min+if m=n then if m=n then root(m,n)0root(m,n)0else if m=n-1 then else if m=n-1 then root(m,n)nroot(m,n)n else else for km+1 to n do for km+1 to n do ww|w(m
13、,k-1)-w(k,n)|ww|w(m,k-1)-w(k,n)|if ww min then minww,rk endif if ww0,重复下列操作:,重复下列操作:在在在在F(i)F(i)和和和和F(i+1)F(i+1)之间使用二分检索法查找之间使用二分检索法查找之间使用二分检索法查找之间使用二分检索法查找(P,W)(P,W)。若存在,若存在,若存在,若存在,X Xi+1i+1=0;=0;否则,否则,否则,否则,(P,W)=(P-P(P,W)=(P-Pi+1i+1,W-W,W-Wi+1i+1),X Xi+1i+1=1=1。i ii-1i-13030Procedure PARTS(n,F,M
14、,P,W,p,w)Procedure PARTS(n,F,M,P,W,p,w)/*p(n)/*p(n)和和和和w(n)w(n)是存放原数据的,是存放原数据的,是存放原数据的,是存放原数据的,P(m)P(m)和和和和W(m)W(m)是存放是存放是存放是存放S S的,的,的,的,F(n)F(n)是存放指针的,是存放指针的,是存放指针的,是存放指针的,x(n)x(n)是存放元素取舍结果的是存放元素取舍结果的是存放元素取舍结果的是存放元素取舍结果的*/*/integer n,k,i,j,F(0:n),x(n)integer n,k,i,j,F(0:n),x(n)real P(m),W(m),pp,ww
15、,p(n),w(n)real P(m),W(m),pp,ww,p(n),w(n)3131/*/*确定:确定:确定:确定:x(n)x(n)、最优解所对应的序偶、最优解所对应的序偶、最优解所对应的序偶、最优解所对应的序偶(pp,ww)(pp,ww),其所在位置其所在位置其所在位置其所在位置j j,j j在在在在F(n-1)F(n-1)和和和和F(n)F(n)之间之间之间之间*/*/kF(n)-1 kF(n)-1 ww W(k)ww W(k)pp P(k)pp P(k)jk jk /k/k为为为为S Sn-1n-1的最末位置的最末位置的最末位置的最末位置 while W(j)+w(n)M and j
16、=F(n-1)do while W(j)+w(n)M and j=F(n-1)do jj-1jj-1 repeat repeat /找找找找S Sn n的最末位置的最末位置的最末位置的最末位置j jif(pp=F(n-1)if(pp=F(n-1)then x(n)1,pp P(j),ww W(j)then x(n)1,pp P(j),ww W(j)else x(n)0 else x(n)0 endif endif 3232 /*/*使用二分检索法在使用二分检索法在使用二分检索法在使用二分检索法在WW上上上上F(i)F(i)和和和和F(i+1)F(i+1)范围范围范围范围 之间查找之间查找之间查
17、找之间查找wwww,确定确定确定确定x(i+1)*/x(i+1)*/for i n-2 to 0 by-1 do n-2 to 0 by-1 do BINSRCH(W,ww,F(i),F(i+1)-1,j)BINSRCH(W,ww,F(i),F(i+1)-1,j)if(j=0)if(j=0)then x(i+1)1,pppp-p(i+1),wwww-w(i+1)then x(i+1)1,pppp-p(i+1),wwww-w(i+1)else x(i+1)0 else x(i+1)0 endif endif repeat repeatendPARTSendPARTS3333P151-8n n给出
18、一个使得给出一个使得DKNAP(算法算法6.7 P141)出现出现最坏情况的例子,它使得最坏情况的例子,它使得|Si|=2i,0i0:(X),i0:f fi i(X)=max f(X)=max fi i 1 1(X),f(X),fi i 1 1(X(X w wi i)+p)+pi i (6.146.14)3737P151-12(1)(1)对这个问题,推导出相应于式对这个问题,推导出相应于式对这个问题,推导出相应于式对这个问题,推导出相应于式(6.14)(6.14)的动态的动态的动态的动态规划递推关系式。规划递推关系式。规划递推关系式。规划递推关系式。n n设设设设f fi i(X)(X)是是是
19、是ZKNAP(1,i,X)ZKNAP(1,i,X)最优解的值最优解的值最优解的值最优解的值,则则则则对于任意的对于任意的对于任意的对于任意的f fi i(X),i0:(X),i0:3838P152-13n n假定两个仓库假定两个仓库假定两个仓库假定两个仓库WW1 1和和和和WW2 2都存有同一种货物,其库存量分别都存有同一种货物,其库存量分别都存有同一种货物,其库存量分别都存有同一种货物,其库存量分别为为为为r r1 1和和和和r r2 2.现要将其全部发往现要将其全部发往现要将其全部发往现要将其全部发往n n个目的地个目的地个目的地个目的地D D1 1,D D2 2,D Dn n.设设设设发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 第六 答案
限制150内