算法分析与设计(work9)
LCS示例
\(X=<A,B,C,B,D,A,B>\)
\(Y=<B,D,C,A,B,A>\)
求\(X\)和\(Y\)的 \(LCS\):
- \(n=0\sim 7\)
- \(m=0\sim 6\)
\(Step1\)
-
\(i=1\)
\(1)、\)( \(j=1\) , \(X.A\neq Y.B\) ): \(C[1,1]=max(C[0,1],C[1,0])=max(0,0)=0\),删除 \(Y\)。
\(2)、\)( \(j=2\) , \(X.A\neq Y.D\) ): \(C[1,2]=max(C[0,1],C[1,1])=max(0,0)=0\),删除 \(Y\)。
\(3)、\)( \(j=3\) , \(X.A\neq Y.C\) ): \(C[1,3]=max(C[0,3],C[1,2])=max(0,0)=0\),删除 \(Y\)。
\(4)、\)( \(j=4\) , \(X.A=Y.A\)): \(C[1,4]=C[0,3]+1=1\),删除两个。
\(5)、\)( \(j=5\) , \(X.A\neq Y.B\) ): \(C[1,5]=max(C[0,4],C[1,4])=max(0,1)=1\),删除 \(Y\)。
\(6)、\)( \(j=6\) , \(X.A=Y.A\) ): \(C[1,6]=C[0,5]+1=1\),删除两个。 -
\(i=2\)
\(1)、\)( \(j=1\) , \(X.B=Y.B\) ): \(C[2,1]=C[1,0]+1=1\),删除两个。
\(2)、\)( \(j=2\) , \(X.B\neq Y.D\) ): \(C[2,2]=max(C[1,2],C[2,1])=max(0,1)=1\),删除 \(Y\)。
\(3)、\)( \(j=3\) , \(X.B\neq Y.C\) ): \(C[2,3]=max(C[1,3],C[2,2])=max(0,1)=1\),删除 \(Y\)。
\(4)、\)( \(j=4\) , \(X.B\neq Y.A\)): \(C[2,4]=max(C[1,4],C[2,3]=max(1,1)=1\),删除 \(Y\)。
\(5)、\)( \(j=5\) , \(X.B=Y.B\) ): \(C[2,5]=C[1,4]+1=2\),删除两个。
\(6)、\)( \(j=6\) , \(X.B\neq Y.A\) ): \(C[2,6]=max(C[1,6],C[2,5])=max(1,2)=2\),删除 \(X\)。 -
\(i=3\)
\(1)、\)( \(j=1\) , \(X.C\neq Y.B\) ): \(C[3,1]=max(C[2,1],C[3,0])=max(1,0)=1\),删除 \(X\)。
\(2)、\)( \(j=2\) , \(X.C\neq Y.D\) ): \(C[3,2]=max(C[2,2],C[3,1])=max(1,1)=1\),删除 \(Y\)。
\(3)、\)( \(j=3\) , \(X.C=Y.C\) ): \(C[3,3]=C[2,2]+1=2\),删除两个。
\(4)、\)( \(j=4\) , \(X.C\neq Y.A\)): \(C[3,4]=max(C[2,4],C[3,3])=max(1,2)=2\),删除 \(Y\)。
\(5)、\)( \(j=5\) , \(X.C\neq Y.B\) ): \(C[3,5]=max(C[2,5],C[3,4])=max(2,2)=2\),删除 \(Y\)。
\(6)、\)( \(j=6\) , \(X.C\neq Y.A\) ): \(C[3,6]=max(C[2,6],C[3,5])=max(2,2)=2\),删除 \(Y\)。 -
\(i=4\)
\(1)、\)( \(j=1\) , \(X.B=Y.B\) ): \(C[4,1]=C[3,0]+1=1\),删除两个。
\(2)、\)( \(j=2\) , \(X.B\neq Y.D\) ): \(C[4,2]=max(C[3,2],C[4,1])=max(1,1)=1\),删除 \(Y\)。
\(3)、\)( \(j=3\) , \(X.B\neq Y.C\) ): \(C[4,3]=max(C[3,3],C[4,2])=max(2,1)=2\),删除 \(X\)。
\(4)、\)( \(j=4\) , \(X.B\neq Y.A\)): \(C[4,4]=max(C[3,4],C[4,3]=max(2,2)=2\),删除 \(Y\)。
\(5)、\)( \(j=5\) , \(X.B=Y.B\) ): \(C[4,5]=C[3,4]+1=3\),删除两个。
\(6)、\)( \(j=6\) , \(X.B\neq Y.A\) ): \(C[4,6]=max(C[3,6],C[4,5])=max(2,3)=3\),删除 \(X\)。 -
\(i=5\)
\(1)、\)( \(j=1\) , \(X.D\neq Y.B\) ): \(C[5,1]=max(C[4,1],C[5,0])=max(1,0)=1\),删除 \(X\)。
\(2)、\)( \(j=2\) , \(X.D=Y.D\) ): \(C[5,2]=C[4,1]+1=2\),删除两个。
\(3)、\)( \(j=3\) , \(X.D\neq Y.C\) ): \(C[5,3]=max(C[4,3],C[5,2])=max(2,2)=2\),删除 \(Y\)。
\(4)、\)( \(j=4\) , \(X.D\neq Y.A\)): \(C[5,4]=max(C[4,4],C[5,3]=max(2,2)=2\),删除 \(Y\)。
\(5)、\)( \(j=5\) , \(X.D\neq Y.B\) ): \(C[5,5]=max(C[4,5],C[5,4])=max(3,2)=3\),删除 \(X\)。
\(6)、\)( \(j=6\) , \(X.D\neq Y.A\) ): \(C[5,6]=max(C[4,6],C[5,5])=max(3,3)=3\),删除 \(Y\)。 -
\(i=6\)
\(1)、\)( \(j=1\) , \(X.A\neq Y.B\) ): \(C[6,1]=max(C[5,1],C[6,0])=max(1,0)=0\),删除 \(X\)。
\(2)、\)( \(j=2\) , \(X.A\neq Y.D\) ): \(C[6,2]=max(C[5,2],C[6,1])=max(2,1)=2\),删除 \(X\)。
\(3)、\)( \(j=3\) , \(X.A\neq Y.C\) ): \(C[6,3]=max(C[5,3],C[6,2])=max(2,2)=2\),删除 \(Y\)。
\(4)、\)( \(j=4\) , \(X.A=Y.A\)): \(C[6,4]=C[5,3]+1=3\),删除两个。
\(5)、\)( \(j=5\) , \(X.A\neq Y.B\) ): \(C[6,5]=max(C[5,5],C[6,4])=max(3,3)=1\),删除 \(Y\)。
\(6)、\)( \(j=6\) , \(X.A=Y.A\) ): \(C[6,6]=C[5,5]+1=4\),删除两个。 -
\(i=7\)
\(1)、\)( \(j=1\) , \(X.B=Y.B\) ): \(C[7,1]=C[6,0]+1=1\),删除两个。
\(2)、\)( \(j=2\) , \(X.B\neq Y.D\) ): \(C[7,2]=max(C[6,2],C[7,1])=max(2,1)=2\),删除 \(X\)。
\(3)、\)( \(j=3\) , \(X.B\neq Y.C\) ): \(C[7,3]=max(C[6,3],C[7,2])=max(2,2)=2\),删除 \(Y\)。
\(4)、\)( \(j=4\) , \(X.B\neq Y.A\)): \(C[7,4]=max(C[6,4],C[7,3]=max(3,2)=3\),删除 \(X\)。
\(5)、\)( \(j=5\) , \(X.B=Y.B\) ): \(C[7,5]=C[6,4]+1=4\),删除两个。
\(6)、\)( \(j=6\) , \(X.B\neq Y.A\) ): \(C[7,6]=max(C[6,6],C[7,5])=max(4,4)=4\),删除 \(Y\)。
\(Step2\)
- \(X=7,Y=6\)
删除 \(Y\),\(X=<A,B,C,B,D,A,B>\),\(Y=<B,D,C,A,B>\) - \(X=7,Y=5\)
删除两个,\(X=<A,B,C,B,D,A>\),\(Y=<B,D,C,A>\)
输出\(B\) - \(X=6,Y=4\)
删除两个,\(X=<A,B,C,B,D>\),\(Y=<B,D,C>\)
输出\(A\) - \(X=5,Y=3\)
删除 \(Y\),\(X=<A,B,C,B,D>\),\(Y=<B,D>\) - \(X=5,Y=2\)
删除两个,\(X=<A,B,C,B>\),\(Y=<B>\)
输出\(D\) - \(X=4,Y=1\)
删除两个,\(X=<A,B,C>\),\(Y=<>\)
输出\(B\) - \(X=3,Y=0\)
算法结束,输出\(<B,A,D,B>\)。
背包问题示例
价格数组\(V=\{8,10,6,3,7,2\}\)
重量数组\(W=\{4,6,2,2,5,1\}\)
设背包容量为\(12\).
\(dp[i][j]\)表示装前\(i\)个物品花费\(j\)容量可以得到的最大价值。
\(dp\)数组为