算法分析与设计(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\)数组为

posted @ 2021-05-14 16:36  hachuochuo  阅读(60)  评论(0编辑  收藏  举报