【发布时间】:2011-02-19 07:59:45
【问题描述】:
相信大家都听说过“文字游戏”,您可以尝试通过一次更改一个字母来将一个单词更改为另一个单词,并且只通过有效的英文单词。我正在尝试实现 A* 算法来解决它(只是为了充实我对 A* 的理解),其中需要的一件事是最小距离启发式。
也就是说,这三个突变中的一个可以将任意字符串 a 变成另一个字符串 b 的最小数目: 1) 将一个字母换成另一个字母 2)在任何字母之前或之后添加一个字母 3) 删除任何字母
例子
aabca => abaca:
aabca
abca
abaca
= 2
abcdebf => bgabf:
abcdebf
bcdebf
bcdbf
bgdbf
bgabf
= 4
我尝试了很多算法;我似乎无法找到一个每次都能给出实际答案的人。事实上,有时我甚至不确定我的人类推理是否能找到最佳答案。
有没有人知道任何用于此目的的算法?或者可以帮我找一个吗?
(澄清一下,我要求一种算法,可以将任意字符串转换为任何其他字符串,而不管它们的英语有效性。)
【问题讨论】:
-
如果您实际上并不关心中间步骤是实际的英文单词,您似乎没有根据您在下面留下的评论来判断,您应该在您的问题中提及这一点,因为您重新描述原始文字游戏似乎表明您很在意。
-
对不起;当我说“任意字符串”时,我以为我正在改变我的问题的术语,然后给出了不是单词的字符串示例。但我认为上下文有点误导,所以我会更清楚地说明。谢谢=)
-
问题的第一段完全是误导!这必须是个骗子。
标签: algorithm string heuristics path-finding