对于数据结构项目,我必须找到两个单词(如"cat"和"dog")之间的最短路径,一次只更改一个字母。我们为您提供了拼字游戏单词列表,可用于查找我们的路径。例如:
"cat"
"dog"
cat -> bat -> bet -> bot -> bog -> dog
我已经使用广度优先搜索解决了问题,但是正在寻找更好的东西(我用特里表示字典)。
请给我一些更有效的方法的想法(在速度和内存方面)。荒谬和/或挑战性的东西是首选。
我问了我的一个朋友(他是大三),他说 没有 有效的解决方案。他说我会学习为什么要上算法课。对此有何评论?
我们必须一字不漏。我们不能去cat -> dat -> dag -> dog。我们还必须打印出遍历。
cat -> dat -> dag -> dog
新答案
鉴于最近的更新,您可以将汉明距离作为启发式尝试使用A *。这是一种可以允许的启发式方法,因为它不会高估距离
老答案
您可以修改用于计算Levenshtein距离的动态程序,以获得操作顺序。
编辑:如果有恒定数量的字符串,该问题可以在多项式时间内解决。否则,这是NP困难的(在Wikipedia中都存在)..假设您的朋友正在谈论NP困难的问题。
编辑:如果您的字符串长度相等,则可以使用汉明距离。