【发布时间】:2010-10-29 20:05:21
【问题描述】:
我正在玩Levenshteins Edit Distance algorithm,我想扩展它以将换位(即相邻字母的交换)计算为 1 编辑。未修改的算法计算从另一个字符串到达某个字符串所需的插入、删除或替换。例如,从“KITTEN”到“SITTING”的编辑距离为 3。这是来自 Wikipedia 的解释:
- kitten → sitten(将 'k' 替换为 's')
- sitten → sittin(将“e”替换为“i”)
- 坐着 → 坐着(在末尾插入“g”)。
按照同样的方法,“CHIAR”到“CHAIR”的编辑距离为2:
- CHIAR → CHAR(删除“我”)
- CHAR → CHAIR(插入“I”)
我想将此算作“1 次编辑”,因为我只交换了两个相邻的字母。我该怎么做呢?
【问题讨论】:
-
很久以前我已经修改了 LED 以考虑键盘上的按键位置(例如,如果您在 QWERTY 或 AZERTY 键盘上键入“dpgs”,那么我的算法将给出“dogs " 比 "digs" 更近,因为 'o' 在 'p' 旁边,而 'i' 是两个键)但我从未按照您想要的方式修改它。 (顺便说一句,我的修改是一个相对容易的修改,算法保留了它所有的动态编程属性)
标签: algorithm string levenshtein-distance