Algorithm 编码序列的最小距离度量
我正在寻找一个最小距离度量,它保留子序列子替换。我的意思是,第二个序列的任何子序列都可以有不同的表示,但仍然与第一个子序列相同。这两个序列的长度始终相同。我熟悉Hamming或Levenshtein距离,但在这种情况下它们可能是无用的 考虑以下示例:Algorithm 编码序列的最小距离度量,algorithm,encryption,statistics,metrics,Algorithm,Encryption,Statistics,Metrics,我正在寻找一个最小距离度量,它保留子序列子替换。我的意思是,第二个序列的任何子序列都可以有不同的表示,但仍然与第一个子序列相同。这两个序列的长度始终相同。我熟悉Hamming或Levenshtein距离,但在这种情况下它们可能是无用的 考虑以下示例: AABBAA CCDDCC 距离为0,因为A=C和B=D(或AA=CC和BB=DD) 距离为2,因为A=C和B=E(或AA=CC或BB=EE或bbbbbb=EEEE),但B=/=D(或BB=/=DD) 但是,此函数的行为可能与此不同我只需要知道未
AABBAA
CCDDCC
距离为0,因为A=C
和B=D
(或AA=CC
和BB=DD
)
距离为2,因为A=C
和B=E
(或AA=CC
或BB=EE
或bbbbbb=EEEE
),但B=/=D
(或BB=/=DD
)
但是,此函数的行为可能与此不同我只需要知道未编码的序列在重复方面与编码的序列有多相似。您可以假设第二个序列是用类似凯撒密码的东西编码的(尽管我不确定移位是否会随时间而变化)
注:
我还考虑用LZW算法压缩这两个序列,并比较它们的压缩比。还有其他想法吗?您可以从一开始就用连续数字枚举序列中的元素,然后使用Levenshtein距离或类似的方法
AACCAABB --> 11221133 (A->1, C->2, B->3)
CCXXCCYY --> 11221133 (C->1, X->2, Y->3)
d(AACCAABB, CCXXCCYY) = d(11221133, 11221133) = 0
从这个描述中没有什么意义。
AACCAABB --> 11221133 (A->1, C->2, B->3)
CCXXCCYY --> 11221133 (C->1, X->2, Y->3)
d(AACCAABB, CCXXCCYY) = d(11221133, 11221133) = 0