【问题标题】:Complexity of trietrie的复杂性
【发布时间】:2015-06-27 08:38:37
【问题描述】:

如果必须至少读取输入字符串数组中的所有字符才能将字符串一一插入到 trie 中,那么 trie 有什么用处?所以复杂度是 O(size_of_array)。假设输入的字符串数组是{"hello",world","stack","overflow"},并且我们想要搜索“stack”,那么我们至少必须遍历整个数组才能将键插入到 trie 中。所以复杂度是 O(size_of_array)。我们可以毫不费力地做到这一点。

【问题讨论】:

    标签: algorithm data-structures time-complexity trie


    【解决方案1】:

    trie 的重点是针对许多查​​询。

    • trie 可以相对便宜地插入每个字符串。
    • trie 提供了相对便宜的字符串搜索。

    这意味着,如果您有一个数组,并且您只需要查询其中是否存在一个字符串 - 这可能不会很有帮助,因为为单个查询创建 trie 是一种浪费。

    但是,如果您有一本字典,并且接下来要查询它数百万次 - 搜索 trie 比重复搜索数组要高效得多 - 这就是您从中受益的地方。

    【讨论】:

    • @amit 根据我的经验,实际情况并非如此(它是一个 非常 缓慢的数据结构用作字典)。不过,它是一个很好的自动完成器,并且还有一些其他(有限的适用性)用途。
    • @AmiTavory 该问题询问渐近复杂性(在问题中使用大 O 表示法),所以我解释了为什么(以及何时)在这些术语中 trie 比数组更可取。另外,我故意在答案中使用了 relatively - 将我与数组替代方案进行比较。
    猜你喜欢
    • 2011-02-12
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多