【问题标题】:Time complexity and space complexity for beam search波束搜索的时间复杂度和空间复杂度
【发布时间】:2016-02-02 06:22:55
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: algorithm search duplicates


    【解决方案1】:

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

    您可以对选项进行排序,这将为您提供以下时间复杂度: O(depth * beam_width * max_fanout * Log(beam_width * max_fanout))

    或者您可以使用快速选择算法来识别基本的 max_fanout 候选者,而无需对所有内容进行排序 (link)。这样就消除了日志的时间复杂度一共为:O(depth * beam_width * max_fanout)

    【讨论】:

    • 您可以使用快速选择在 O(max_fanout) 时间内选择前 b 个元素,不是吗?不需要完全排序?
    • 是的,我不知道快速选择。确定答案。
    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2013-09-12
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多