gpt4 book ai didi

algorithm - 文本解密,基于字母频率的方法(关于成本函数的问题)

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:26:45 25 4
gpt4 key购买 nike

我想破译基于频率分析的文本。编程不是问题,但有一些数学上的困难。

(不用担心,不是为了破解,我想试试 Zodiac 340 密码,但问题只是关于解密 http://zodiackillerciphers.com/wiki/images/7/7d/340-cipher-hi-resolution.jpg 的一般问题,而不是关于密码的其他问题。)

我已将其分解为 5 个与成本函数相关的简短问题以展示我的努力,简短的回答很好,任何帮助表示赞赏。我的问题是成本函数中值的差异非常小。

给出

  1. 具有任意数量符号的文本,从现在起称为密码。密码是英文的。密码中的每个符号只代表一个字母,但一个字母可以通过多个符号来表示。我们不知道是否有任何空格(但必须由成本函数评估的字符串将以空格分隔并且只有字母 A-Z)。
  2. 字母频率分析(A-Z 和空格):单个字母、字母对和字母三元组。 4000 个最常用的英语单词或使用 sowpods 拼字游戏词典的“所有”单词。

关于频率分析的问题:

  1. 是只检查最常见的单词还是使用 sowpods 检查所有单词更好(也许删除不在 4000 个最常见单词中的 2 个和 3 个字母的单词)?
  2. 对于字母对和三元组:是只存储它们的频率更好,还是以 P(A|B)(A 跟随 B 的概率)和 P(C|AB) 的形式存储三胞胎?

概念

如果不感兴趣,请跳过。我不想在这里详细介绍,有几种方法可以使用。粗略的草图:

  1. 生成(半)随机解
  2. 根据成本函数对解决方案进行局部优化
  3. 重新开始并转移一些获得的知识
  4. 停滞一段时间后尝试在局部优化之前在固定位置引入空格(以防消息没有空格)
  5. 比较 2 个检索到的解决方案并返回更好的一个

代价函数

成本函数会是什么样子?一般的可以表示为:

w1 * letterCost + w2 * pairCost + w3 * tripletCost + w4 * wordCost

所有权重之和为一:

w1 + w2 + w3 + w4 = 1

关于代价函数的问题

  1. 现在,使用忽略单词的简单频率 (w4 = 0),您可以只计算频率并计算平方差(这就是我目前正在做的)。我想知道的是: w1 = w2 = w3 或 w1 = 27 * w2 = 27 * 27 * w3 哪个更合理?

  2. 它如何处理条件概率?

  3. 您如何整合有关单词的知识?数一数有多少个真正的英语单词,可能是根据它们的长度对它们进行加权,还是有更智能的方法?

最佳答案

在我看来,您的问题源于过于笼统的概念。如果您不精确计算算法,就不可能计算成本函数。我可以提出一种方法来精确地说明您的概念的第二点:

  1. 计算随机的期望值(例如:如果您有 100 000 个字母,则随机三元组应出现 5 次)
  2. n 为密文中的字母数。然后对每个字母增加Letter[y], Pair[y][y+1], Triplet[y][y+1][y+2]的值
  3. 如果某些数据的出现次数明显大于 1 中计算的值。 然后尝试判断您的答案有多接近。

尽管如此,第 3 点和“判断”非常笼统,但基于此我可以给你几个答案:

关于代价函数的问题

  1. 最好只使用最常用的词,因为它可以让您了解与随机结果的偏差。保留所有的话不会给你带来任何好处。
  2. 频率是我的建议。我找不到持有条件概率的任何用法。

代价函数

在我的例子中,algortihm 的成本是 O(n) + const(对于长词,您可以考虑使用哈希表)+“判断”。问题还在继续,因为很多取决于“判断”将如何解决。

  1. 我不知道你为什么选择那样计算成本函数,但对我来说 w1 = 27 * w2 = 27 * 27 * w3 听起来更合理,因为它不太可能在长单词的平均出现次数。
  2. 在我的解决方案中,使用条件概率没有必要也没有优势。
  3. 这个问题是另一个大问题,在我看来与“生成(半)随机解决方案”有很多共同之处。假设您猜对了字母“t”、“h”、“e”、“y”。你的算法应该检测到单词“the”、“them”、“they”,但完全漏掉了“and”、“work”、“no”、“will”等单词。您可以使用单词的特征,例如“the”是常见前缀,“will”中的第 3 个和第 4 个字母相同等。这会使解决方案复杂化,但它应该会提供更好的结果。

关于algorithm - 文本解密,基于字母频率的方法(关于成本函数的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29723152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com