在重构最长公共子序列时,只利用表c,也就是用于保存各子问题的LCS长度,运行时间依然为O(m+n),以下为基于python语言编写的代码:
def LCS_Length(X,Y):#输出最长公共子序列的长度以及记录最优解的构造过程 m=len(X)-1 n=len(Y)-1 a=[[0]*(n+1)]*(m+1) b=[[None]*(n+1)]*(m+1) c=numpy.array(a)#c用于保存c[i,j]的最长公共子序列的长度
本文介绍了如何使用Python语言实现算法导论第三版第15章中15.4-2题的最长公共子序列(LCS)算法,通过只利用子问题的LCS长度表c,保持了O(m+n)的时间复杂度。
在重构最长公共子序列时,只利用表c,也就是用于保存各子问题的LCS长度,运行时间依然为O(m+n),以下为基于python语言编写的代码:
def LCS_Length(X,Y):#输出最长公共子序列的长度以及记录最优解的构造过程 m=len(X)-1 n=len(Y)-1 a=[[0]*(n+1)]*(m+1) b=[[None]*(n+1)]*(m+1) c=numpy.array(a)#c用于保存c[i,j]的最长公共子序列的长度

被折叠的 条评论
为什么被折叠?
&spm=1001.2101.3001.5002&articleId=78200621&d=1&t=3&u=834ca5332d794df381a270b8802ccd7d)