Trie 节省了空间,但是如何节省空间呢?

2024-04-25

我对 Trie 实现如何节省空间并以最紧凑的形式存储数据感到困惑!

如果你看下面的树。当您在任何节点存储字符时,您还需要存储对该字符的引用,因此对于字符串的每个字符,您需要存储其引用。 好吧,当常见字符到达时,我们节省了一些空间,但在存储对该字符节点的引用时我们失去了更多空间。

那么维护这棵树本身不是有很多结构开销吗?相反,如果使用 TreeMap 来代替它,比如说实现一个字典,这可以节省更多的空间,因为字符串将被保存在一个片段中,因此在存储引用时不会浪费空间,不是吗?


为了在使用 trie 时节省空间,可以使用压缩特里树 http://en.wikipedia.org/wiki/Radix_tree(也称为帕特里夏特里树或基数树),其中一个节点可以表示多个字符:

在计算机科学中,基数树(也称为帕特里夏特里或基数特里) 是一种空间优化的 trie 数据结构,其中每个节点只有一个 孩子与其孩子合并。结果是每个内部节点 至少有两个孩子。与常规尝试不同,边缘可以是 用字符序列和单个字符标记。 这使得它们对于小集合更加有效(特别是如果 字符串很长)以及共享长前缀的字符串集。

基数树的示例:

请注意,trie 通常用作一种有效的数据结构,用于对一组字符串进行前缀匹配。 trie 还可以用作关联数组(如哈希表),其中键是字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Trie 节省了空间,但是如何节省空间呢? 的相关文章

  • 在 C 程序中追踪数组越界访问/写入的推荐方法

    考虑用 C 语言编写一些不太明显的算法的实现 例如 让它成为递归快速排序 我在 K N King 的 C 编程 现代方法 第二版 书中找到了它 可以从here http knking com books c2 programs qsort
  • 为什么从类构造函数调用的方法应该是最终的? [复制]

    这个问题在这里已经有答案了 我是一名 Java 新手 我试图理解 Oracle 网站教程中的以下行 https docs oracle com javase tutorial java IandI final html https docs
  • popen2()在c中如何工作?

    我尝试使用管道 叉子和 dup 在我的程序中执行 md5sume 命令 我发现总和代码运行成功 但我无法理解某些代码行 这是我的代码 int infp outfp char buf 128 if popen2 md5sum infp out
  • Unix 纪元时间转 Java Date 对象

    我有一个包含以下内容的字符串UNIX 纪元时间 https en wikipedia org wiki Unix time 我需要将其转换为 Java Date 对象 String date 1081157732 DateFormat df
  • 未定义条件编译符号

    我无法让 Visual Studio 按照我的预期运行 我创建了 2 个配置文件 一个定义了符号 FOO 另一个定义了符号 BAR 我有这个代码 static class MyClass if FOO public static strin
  • 运行 Espresso 测试时在 Android studio 中找不到属性 android:forceQueryable

    我已经使用 android studio 录制了我的 Android 应用程序 Espresso 测试记录浓缩咖啡测试选项中Run菜单 在记录的最后 我用自己的文件名保存了测试 单击保存按钮后 IDE 会自动在以下位置创建文件Android
  • AWS SQS Batch SendMessageBatchRequest 非常慢

    我的应用程序使用 SendMessageBatchRequest 将每个请求发布 10 条消息到 AWS SQS 每条消息的大小小于250字节 该应用程序预计每天发布约一百万条记录 但要实现这一目标 消息发布的速度非常慢 AmazonSQS
  • Parallel.For 和 Break() 误解?

    我正在研究 For 循环中的并行性中断 看完之后this http tipsandtricks runicsoft com CSharp ParallelClass html and this http reedcopsey com 201
  • 在 C# 中加密并在 Flex 中解密

    我需要解密 Flex 中的一些数据 这些数据是用 C 加密并写入文件的 为了简单起见 我选择使用 as3crypto As3 库和 Bruce Schneier C 库 AS3 as3加密链接 http code google com p
  • 隐藏 JTable 临时列

    我正在使用 JTable 显示数据库中的数据 现在我想通过 Jcombobox 过滤我的 jtable 我正在使用 Jcombo 框 其中包含 030 024 045 等值 这些值已在 jtable 中设置为列标题 当我单击组合时 选定的列
  • gcc 中的“假设”子句

    gcc 最新版本 4 8 4 9 是否有类似于以下的 假设 子句 assume 内置icc支持吗 例如 assume n 8 0 从 gcc 4 8 2 开始 gcc 中没有 assume 的等效项 我不知道为什么 这会非常有用 马夫索建议
  • 修改公共属性的访问修饰符是否是重大更改?

    如果我将公共属性的 setter 的访问修饰符从私有更改为公共 是否会导致引用它的其他程序集发生任何重大更改 UPDATE 这个问题是我 2012 年 1 月博客的主题 https ericlippert com 2012 01 09 ev
  • Yield Return == IEnumerable 和 IEnumerator 吗?

    Is yield return实施的捷径IEnumerable and IEnumerator 是的 您可以在我的书 C in Depth 的第 6 章中找到更多相关信息 幸好第六章是免费提供 http www manning source
  • 如何从标准输入读取一行,阻塞直到找到换行符?

    我试图从命令行的标准输入一次读取任意长度的一行 我不确定是否能够包含 GNU readline 并且更喜欢使用库函数 我读过的文档表明getline应该可以工作 但在我的实验中它不会阻塞 我的示例程序 include
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S
  • 为什么C#不支持多重继承? [复制]

    这个问题在这里已经有答案了 可能的重复 C 应该包含多重继承吗 https stackoverflow com questions 191691 should c include multiple inheritance 为什么C 不支持多
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • 使用 wmi 获取活动会话(Win32_LogonSession 还返回非活动/旧会话)

    有没有办法只显示 wmi 的活动会话 问题是 Win32 LogonSession 还显示不活动 断开连接的会话 ManagementScope scope new ManagementScope ManagementPath Defaul
  • 如何在Asp.Net Core中自定义开发者异常页面?

    这常见于ConfigureStartup cs 文件的方法具有如下所示的代码 if env IsDevelopment app UseDeveloperExceptionPage new DeveloperExceptionPageOpti
  • C++20 范围太多 |运营商?

    我在这段代码中使用 g 10 2 有谁知道为什么我最后收到编译器错误std views reverse on results3 include

随机推荐

  • 如何制作通用的jpa存储库?我应该这样做吗?为什么?

    我是堆栈溢出的新手 并且正在使用 hibernate 和 mysql 处理 spring jpa 数据 我为每个实体类创建了一个 JpaRepository 但现在我觉得我应该对所有实体使用一个存储库 因为我所有的存储库都有通用的 CRUD
  • 比较枚举的最佳方法[重复]

    这个问题在这里已经有答案了 例如 我有一个枚举enum Color Red Brown 我还有一些该类型的变量 Color c1 Brown c2 Red 与恒定值进行比较的最佳方法是什么 if c1 Color Brown is brow
  • Magento CSRF 保护

    我正在 Magento 中查看自定义表单 我看到了这些教程 http fastdivision com 2012 03 29 diy magento create ajax login registration forms for your
  • cakephp 3 中的授权和 ACL

    我搜索了文档 但没有找到有关 cakephp 3 中 ACL 实现的任何信息 如何在 cakephp 3 中使用 ACL 实现授权 ACL 不像 CakePHP 2 那样内置在 CakePHP 3 中 它现在作为单独的插件提供 引用自htt
  • 企业在无法通过互联网访问 Chrome 网上商店的锁定 Windows 计算机上部署 Chrome 扩展程序

    对于 Windows 上企业安装的 Chrome 扩展程序 是否有任何替代部署方法不会从 Chrome 网上应用店获取扩展程序 情况是 一些企业使用锁定的网络 无法访问外部互联网 并且不允许访问公共 Google URL 来获取扩展程序 有
  • 如何在 Win32 中滚动条到达底部时启用按钮?

    我正在用 Win32 编写一个许可协议对话框 但我很困惑 与往常一样 我希望当 RichEdit 控件的滚动条滑块到达底部时启用 接受 不接受 按钮 但我找不到获得该事件通知的方法 我最早能够了解它是当用户释放鼠标左键时 有没有办法做到这一
  • ClearCase 中的子分支?

    当我想在 CC 中使用分支时 我通常会在配置规范中添加如下内容 element first branch LATEST element Main LATEST mkbranch first branch element Main LATES
  • Sparksql 多条件过滤(使用where子句选择)

    您好 我有以下问题 numeric registerTempTable numeric 我想要过滤的所有值都是文字空字符串 而不是 N A 或空值 我尝试了这三个选项 numeric filtered numeric filter nume
  • Android 中的 Firebase:传递的服务器密钥无效或发件人无权执行请求

    这是该部分的PHP file Firebase config define FIREBASE SERVER KEY key 我在 Firebase 网页上找到了该密钥 那是服务器密钥 而不是网络API key 当我尝试发送推送通知时 我收到
  • 使用命名空间和前缀进行 JAXB 解组

    我正在使用 JAXB 解析 SOAP 响应中的 xml 元素 我已经为 xml 元素定义了 POJO 类 我已经测试了没有命名空间和前缀的 pojo 类 其工作正常 尽管当我尝试使用命名空间和前缀进行解析时 面临以下异常 要求是解析来自 S
  • data.table := 不在包函数中工作

    我已将创建的函数移至 R 包中 但它已停止工作 我收到错误 Error in value 1 Check that is data table DT TRUE Otherwise and are defined for use in j o
  • Google Play 商店中的下载次数是如何计算的?

    Google Play 商店中显示的下载次数是根据生命周期数字计算的吗 我的应用程序 Match4app 在 Google Play Console 上显示 5 10 K 用户安装量 生命周期 然而 在 Google Play 商店上它只显
  • 并行发送 HTTP 请求数小时后 ServicePoint 对象尺寸过大

    我们正在使用HttpClient并行发送请求到远程 Web API public async Task
  • includepdf 将文档堆栈覆盖在一页上

    我正在尝试使用以下方法在文档中包含 PDF includepdf 问题是 Latex 将 pdf 的所有站点放在文档的一页上 彼此重叠 我对此有点迷失 没有找到任何解决方案 begin figure H includepdf landsca
  • 为什么我的性能计数器不会改变?

    我一定在这里做错了什么 我创建了一个自定义性能计数器 如下所示 string counterCategory Test Category string counterName Test Counter if PerformanceCount
  • 布隆过滤器在cassandra中的作用是什么?

    从 Cassandra 文档的两个不同链接中 我发现 link 1 http docs datastax com en cassandra 3 0 cassandra dml dmlHowDataWritten html 存储在内存中的结构
  • 隐藏包中未记录的函数 - 使用 .function_name?

    我需要在包中提供一些功能 但我不想导出它们或为它们编写文档 我只是将它们隐藏在另一个函数中 但它们需要可供多个函数使用 因此这样做会成为范围界定和维护问题 这样做的正确方法是什么 我的意思是他们是否需要特殊的名字 他们是否会去其他地方 R子
  • 使用 Castle Fluent 接口注册拦截器

    我正在尝试实施通过拦截器 无法弄清楚如何通过流畅的机制注册接口 我看到一个 Component For
  • R/Javascript:崩溃和扩展的网络

    我正在使用 R 编程语言 我有以下图形网络数据 library igraph library visNetwork from lt c Boss TeamA TeamA TeamA SubteamA1 SubteamA1 SubteamA1
  • Trie 节省了空间,但是如何节省空间呢?

    我对 Trie 实现如何节省空间并以最紧凑的形式存储数据感到困惑 如果你看下面的树 当您在任何节点存储字符时 您还需要存储对该字符的引用 因此对于字符串的每个字符 您需要存储其引用 好吧 当常见字符到达时 我们节省了一些空间 但在存储对该字