【问题标题】:Which search is faster, binary search or using prefix tree?哪种搜索更快,二分搜索还是使用前缀树?
【发布时间】:2013-06-20 19:42:05
【问题描述】:

假设我有一个字符串列表和这些字符串的前缀树,我想找到一个给定键的字符串,哪个更快?二分查找还是前缀树查找?

为什么以及什么是时间复杂度?

谢谢!

【问题讨论】:

    标签: algorithm binary-search prefix-tree


    【解决方案1】:

    这两种技术各有优缺点:

    后缀树

    • 优点:
      • O(N) 构建复杂度
      • O(M) 搜索长度为 M 的模式
      • 它们允许在线构建
    • 缺点:
      • 空间效率低
      • 真正复杂的构造算法

    二分查找(带后缀数组)

    • 优点:
      • 您可以在 O(N) 时间内对字符串数组进行排序
      • 节省空间(内存减少五倍(至少))
      • 简单直接的构造算法
    • 缺点:
      • 他们不支持在线建设
      • O(M lg N) 时间在 N 个字符串中搜索长度为 M 的模式(这可以减少到 O(M+lg N),但这仍然比后缀树慢一点)

    这两种数据结构都非常强大。如果您的应用程序需要快速搜索,并且提供的空间足够,那么肯定会选择后缀树。但是如果空间很重要,那么后缀数组(二进制搜索)是您唯一的选择......

    【讨论】:

    • 后缀树和前缀树有区别吗?它们是一样的吗?
    • 我认为如果你构建一个由良好的散列函数索引的二叉树,搜索是O(log N),因为你将使用数字索引进行搜索
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2014-11-05
    • 2018-08-13
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多