【发布时间】:2021-12-04 05:16:26
【问题描述】:
我一直被以下一个问题困住了一段时间。这个问题是一个经典的Word阶梯问题,稍作修改。我需要编写一个函数,该函数将在某些给定的无向图中(每条边的权重为 1)返回 first_word 的索引,以便它为 desired_words 中的每个单词创建整体最短的单词阶梯(更准确地说,它返回一个单词的索引,其中desired_words中任何单词的最长单词阶梯尽可能短);如果可能有多个单词,它只会返回其中一个。
假设我有以下列表,lst = ["aaa","aad","dad","daa","aca","acc","aab","abb"],然后我们创建 Graph 类的实例。例如,如果我们的desired_words 是dad, abb, acc,那么我们的函数将返回 0,因为在这种情况下最好的first_word 将是aaa。如果我们在 aaa, aca, acc 上运行我们的函数,那么它将返回 4,因为在这种情况下,最好的 first_word 将是 aca。
我在想各种方法:在每个节点上运行 Dijkstra 算法,然后找到到每个 desired_words 的最短距离,或者找到一个图(约旦)中心,找到节点之间的最低共同祖先,但它们对我来说似乎都没有意义。我只是不知道如何应用任何已知算法,以便返回最佳节点。
谁能建议解决这个问题的正确方法是什么?只是一个一般的想法,或者一些逐步的算法。非常感谢。
附: python 代码会有所帮助,但不是必需的。
【问题讨论】:
-
要么发布一些代码和你坚持的部分,要么这可能应该去计算机科学委员会
-
我并不是真的在寻找代码,更像是建议的算法/方法
-
从每个想要的单词运行 Dijkstra 都可以。
-
但是我怎样才能确保它返回一个所有所需单词共有的节点,并且它是最佳的?
-
Running Dijkstra's from
dad给出红色距离, fromabb给出绿色距离, fromacc给出蓝色距离。对于每个顶点,您只需要保留最差的结果。对于aaa,最差的结果是 2。对于所有其他顶点,最差的结果是 3 或 4。所以aaa获胜。
标签: python algorithm graph-theory shortest-path dijkstra