最长的回文子序列VS最长的子序列,其反向也是子序列

时间:2016-10-15 18:54:52

标签: dynamic reverse palindrome subsequence

我试图想一想这两个问题之间有什么区别

给定序列S

1)找出S的最长回文子序列。

2)找到S的最长子序列,其反向也是S的子序列。两个子序列可以相同。
原始措辞是:找到S的最长子序列S',使得有一个与S'相同的子序列和与S'相反的子序列。

我为这两个问题得出的DP配方是相同的。

他们实际上是同样的问题吗?我一直在试着这样思考: 假设最长的回文子序列为longestP,那么longestP本身显然是2)的可能答案。

2)可以有更长的答案吗?假设有一个名为longerP,则longerP的反向也是S的子序列,称之为reverseLongerP。是否重叠,可以从longerPreverseLongerP构建更长的回文结构。因此,与longestP是最长的回文的假设相矛盾。

2)的答案是否会更短?我不这么认为,因为2)要求我们找到这种最长的子序列,而longestP已经是一个可能的答案,任何短于longestP的子序列都不应该被考虑。

以上是我对这个问题的思考,我错过了什么?

我的结论是,他们是同样的问题。然而,我被要求给出一个序列,其中包含一个不是回文序列的字符串s及其相反的序列,而这个序列没有比s长的回文。我不认为这是可能的。

我的想法是,假设存在这样的序列,则s和它的反向可以形成长度为length_of_s + length_of_reverse_s - length_of_overlap的回文,因此该回文的最小长度为length_of_s。但在这种情况下,length_of_overlap等于length_of_s,因此s和它的反向必须相同,s必须是回文,这将违反s不能成为回文限制。

1 个答案:

答案 0 :(得分:0)

好吧,我到了错误的地方。它不能保证s和reverse_of_s可以形成回文。很容易看到这一点,但我一直陷入错误的假设之中。 4 3 1 2 3 4 2 1就是一个很好的例子。