如何证明以下算法的正确性

时间:2015-11-29 13:20:00

标签: algorithm lcs lis

问题是找到任何给定数组的LIS(最长增加子序列)。 防爆。一个[] = {10,9,7,8,9}; 长度= 3; {7,8,9}

所以在nlogn中做的一种方法是

  1. 对数组进行排序
  2. 采取两者的LCS 结果是LIS。
  3. 现在我明白了怎么做。但是我如何证明它是正确的。如何在这里申请MI?

1 个答案:

答案 0 :(得分:0)

在你的情况下,不需要归纳,你必须展示三件事:

  • 结果方法捕获增加的序列 - 直接来自它是排序数组
  • 的一部分
  • 结果子序列存在于输入数组中 - 直接来自LCS的定义(常见子序列)
  • 不再增加子序列 - 您可以很容易地显示最长的序列必须存在于输入序列(按照定义)和排序的数组中,因此它也将由LCS进行分析,因此它不能超过LCS返回的那个。