【问题标题】:Build optimal dictionary algorithm构建最优字典算法
【发布时间】:2017-10-02 19:04:57
【问题描述】:

所以我有一个大的 ASCII 纯文本脚本,它可以有 256 个字典条目。字典可以包含长度为 3-6 个字母的任何字符串。每个条目在脚本中占用 2 个字节(而不是适当的字典字符串长度)。

我想了很多关于为这种方案构建最佳字典的想法。天真的解决方案是在每个位置构建任何 6 个字母的子字符串,然后计算它们中的每一个并找到最频繁的。然后从初始脚本中排除此子字符串并重复搜索最频繁的第二个最频繁条目。
所有这些看起来都很丑陋,我相信,这项任务背后已经有严肃的数学,但我在任何地方都找不到任何参考资料。 您能否指导我或描述上述任务的可能算法?

【问题讨论】:

  • 没有。霍夫曼编码通过分析它在文本中的频率来应用于每个字符的编码。就我而言,我只想分析文本中所有子字符串的频率并找到最频繁的。
  • 您的可能字符串数量有限 (256)。将这些字符串作为字符进行威胁。这意味着,您将拥有 256 个字符的字母表。
  • 是的,但是我怎样才能建立一个字母表呢?我应该如何发现 A 是一个具体的子字符串“banana”?
  • 这听起来像是压缩,这是一个拥有数十年价值的方法和算法的巨大领域。

标签: algorithm dictionary


【解决方案1】:

我正在寻找的是一种 MTE 代码构建算法。它是在几个工具中实现的,例如here(里面也有C代码)。

背后的想法是一种蛮力:就像我所描述的那样。重要的是,当您找到可能的最佳代码时,您还需要计算实际的 MTE 代码长度,并且只考虑保存的长度减去 MTE 代码长度,这将被考虑。

【讨论】:

    猜你喜欢
    • 2013-12-29
    • 2011-11-23
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多