LCS示例
(X=<A,B,C,B,D,A,B>)
(Y=<B,D,C,A,B,A>)
求(X)和(Y)的 (LCS):
- (n=0sim 7)
- (m=0sim 6)
(Step1)
-
(i=1)
(1)、)( (j=1) , (X.A eq Y.B) ): (C[1,1]=max(C[0,1],C[1,0])=max(0,0)=0),删除 (Y)。
(2)、)( (j=2) , (X.A eq Y.D) ): (C[1,2]=max(C[0,1],C[1,1])=max(0,0)=0),删除 (Y)。
(3)、)( (j=3) , (X.A eq 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 eq 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 eq Y.D) ): (C[2,2]=max(C[1,2],C[2,1])=max(0,1)=1),删除 (Y)。
(3)、)( (j=3) , (X.B eq Y.C) ): (C[2,3]=max(C[1,3],C[2,2])=max(0,1)=1),删除 (Y)。
(4)、)( (j=4) , (X.B eq 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 eq Y.A) ): (C[2,6]=max(C[1,6],C[2,5])=max(1,2)=2),删除 (X)。 -
(i=3)
(1)、)( (j=1) , (X.C eq Y.B) ): (C[3,1]=max(C[2,1],C[3,0])=max(1,0)=1),删除 (X)。
(2)、)( (j=2) , (X.C eq 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 eq Y.A)): (C[3,4]=max(C[2,4],C[3,3])=max(1,2)=2),删除 (Y)。
(5)、)( (j=5) , (X.C eq Y.B) ): (C[3,5]=max(C[2,5],C[3,4])=max(2,2)=2),删除 (Y)。
(6)、)( (j=6) , (X.C eq 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 eq Y.D) ): (C[4,2]=max(C[3,2],C[4,1])=max(1,1)=1),删除 (Y)。
(3)、)( (j=3) , (X.B eq Y.C) ): (C[4,3]=max(C[3,3],C[4,2])=max(2,1)=2),删除 (X)。
(4)、)( (j=4) , (X.B eq 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 eq Y.A) ): (C[4,6]=max(C[3,6],C[4,5])=max(2,3)=3),删除 (X)。 -
(i=5)
(1)、)( (j=1) , (X.D eq 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 eq Y.C) ): (C[5,3]=max(C[4,3],C[5,2])=max(2,2)=2),删除 (Y)。
(4)、)( (j=4) , (X.D eq Y.A)): (C[5,4]=max(C[4,4],C[5,3]=max(2,2)=2),删除 (Y)。
(5)、)( (j=5) , (X.D eq Y.B) ): (C[5,5]=max(C[4,5],C[5,4])=max(3,2)=3),删除 (X)。
(6)、)( (j=6) , (X.D eq Y.A) ): (C[5,6]=max(C[4,6],C[5,5])=max(3,3)=3),删除 (Y)。 -
(i=6)
(1)、)( (j=1) , (X.A eq Y.B) ): (C[6,1]=max(C[5,1],C[6,0])=max(1,0)=0),删除 (X)。
(2)、)( (j=2) , (X.A eq Y.D) ): (C[6,2]=max(C[5,2],C[6,1])=max(2,1)=2),删除 (X)。
(3)、)( (j=3) , (X.A eq 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 eq 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 eq Y.D) ): (C[7,2]=max(C[6,2],C[7,1])=max(2,1)=2),删除 (X)。
(3)、)( (j=3) , (X.B eq Y.C) ): (C[7,3]=max(C[6,3],C[7,2])=max(2,2)=2),删除 (Y)。
(4)、)( (j=4) , (X.B eq 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 eq 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)数组为