【发布时间】:2019-05-13 23:00:45
【问题描述】:
我正在寻找一种算法来解决具有以下条件的两个字符串的 LCS 问题:
每个字符串由英文字符组成,每个字符都有一个权重。例如:
序列 1 (S1):“ABBCD”,权重为 [1, 2, 4, 1, 3]
序列 2 (S2):“TBDC”,权重为 [7, 5, 1, 2]
假设MW(s, S)被定义为字符串S中的子序列s相对于相关权重的最大权重。最重的公共子序列(HCS)定义为:
HCS = argmin(MW(s, S1), MW(s, S2))
算法输出应该是字符串和权重中HCS的索引。在这种情况下,索引将是:
I_S1 = [2, 4] --> MW("BD", "ABBCD") = 7
I_S2 = [1, 2] --> MW("BD", "TBDC") = 6
因此HCS = "BD", and weight = min(MW(s, S1), MW(s, S2)) = 6.
【问题讨论】:
-
你为完成任务做了什么?
-
如果权重是非负的,您可以使用与普通 LCS 相同的方法;但是,在递归公式中,您应该使用权重的总和来最小化而不是字符数。不过,我不确定负权重的情况。
-
是的,权重是非负的。你知道我可以使用哪种 LCS 算法来修改和解决我自己的问题吗?
标签: algorithm dynamic-programming lcs