一尘不染

将一个单词转换为另一个单词的最短路径

algorithm

对于数据结构项目,我必须找到两个单词(如"cat""dog")之间的最短路径,一次只更改一个字母。我们为您提供了拼字游戏单词列表,可用于查找我们的路径。例如:

cat -> bat -> bet -> bot -> bog -> dog

我已经使用广度优先搜索解决了问题,但是正在寻找更好的东西(我用特里表示字典)。

请给我一些更有效的方法的想法(在速度和内存方面)。荒谬和/或挑战性的东西是首选。

我问了我的一个朋友(他是大三),他说 没有 有效的解决方案。他说我会学习为什么要上算法课。对此有何评论?

我们必须一字不漏。我们不能去cat -> dat -> dag -> dog。我们还必须打印出遍历。


阅读 334

收藏
2020-07-28

共1个答案

一尘不染

新答案

鉴于最近的更新,您可以将汉明距离作为启发式尝试使用A *。这是一种可以允许的启发式方法,因为它不会高估距离

老答案

您可以修改用于计算Levenshtein距离的动态程序,以获得操作顺序。

编辑:如果有恒定数量的字符串,该问题可以在多项式时间内解决。否则,这是NP困难的(在Wikipedia中都存在)..假设您的朋友正在谈论NP困难的问题。

编辑:如果您的字符串长度相等,则可以使用汉明距离

2020-07-28