波束搜索的时间复杂度和空间复杂度

时间:2016-02-02 06:22:55

标签: algorithm search duplicates

我正在研究Trie的重复数据删除。在trie中,存储算法的哈希值(例如-SHA1)和查找是通过波束搜索完成的(比如波束宽度n = 2)。现在我的问题是光束搜索的时间和空间复杂度以及我应该使用启发函数来选择节点的因素是什么。由于我是所有这些主题的基本学习者,请为我的疑问提供解决方案。

先谢谢。

1 个答案:

答案 0 :(得分:3)

空间复杂度为beam_width * max_fanout,因为这些是您在每一步生成的候选项。然后你需要获得max_fanout最佳选项,并根据你想要/可以多次重复这个过程(取决于树的高度,或你想探索的深度)。

您可以对选项进行排序,这会给您时间复杂度:  O(depth * beam_width * max_fanout * Log(beam_width * max_fanout))

或者您可以使用quickselect算法来识别基本的max_fanout候选者,而无需对所有内容进行排序(link)。这消除了时间复杂度中的日志总计:​​O(depth * beam_width * max_fanout)