是否存在仅允许特定,多字符替换,插入和删除的编辑距离算法?

时间:2019-04-15 14:28:42

标签: distance edit

我正在尝试创建一种算法,以尽可能少的步骤将我从一个字符串串(即10110100到1100110100)中获取。可以应用的步骤限于以下步骤:

a) anywhere, we may insert 10
b) anywhere, we may delete 10
This can be summarized as . <--> 10
Also, we may insert or remove a 01 as long as it's 'inside' another 01.
c) 01 --> 0011
d) 0011 --> 01
In other words: 01 <--> 0011

例如,在上面的字符串中,我们应用     b)在0:

10 110100 --> 110100

c) at 2:

11 01 00 --> 11 0011 00

a) at 5:

11001 100 --> 11001 10 100

我们完成了3个步骤。

我认为这可以通过最小编辑距离的实现来实现,但是规则比Leveshtein距离要严格得多。特别是,您可以替换的内容取决于站点周围的符号。我当时想正确的方法是,将“字母”视为位之间的点,然后通过对左右位进行计数来确定16个可能的符号。

如果这太困难了,可以放宽规则,只允许在任何地方插入和删除01和10,这需要做更多的工作,我想我可以很容易地恢复遵循原始规则的最快路线规则。

任何帮助我起步的人,例如算法名称,将不胜感激!

不幸的是,我只发现了像Leveshtein这样的东西,最多只能进行拆分和合并,但这似乎并不是完全相同的结构。

如上所述,代码不仅应该找到距离,还应该找到从开始到目标的(非唯一)最佳步骤序列,据我所知,在构建Levenshtein矩阵之后,这相当容易。 / p>

0 个答案:

没有答案