我想基于频率分析来破译文本。编程不是问题,但存在一些数学上的困难。
(不用担心,不是因为黑客行为,我想要了解Zodiac 340密码,但问题只是解密http://zodiackillerciphers.com/wiki/images/7/7d/340-cipher-hi-resolution.jpg,而不是密码的其他问题。)
我已将其分解为5个与成本函数相关的简短问题,以显示我的努力,简短答案很好,任何帮助表示赞赏。我的问题是成本函数中值的差异非常小。
有关频率分析的问题:
如果不感兴趣,请跳过。我不想在这里详细介绍,有几种方法可以使用。粗略草图:
成本函数如何?一般可以表达为:
w1 * letterCost + w2 * pairCost + w3 * tripletCost + w4 * wordCost
所有轮动的总和是:
w1 + w2 + w3 + w4 = 1
有关费用函数的问题
现在用简单的频率忽略单词(w4 = 0)你可以只计算频率并取平方差(这就是我现在正在做的事情)。我想知道的是:w1 = w2 = w3或w1 = 27 * w2 = 27 * 27 * w3更合理吗?
如何处理条件概率?
您如何整合有关单词的知识?只计算有多少真正的英语单词,可能按它们的长度加权,还是有更聪明的方法?
答案 0 :(得分:4)
在我看来,你的问题来自过于笼统的概念。如果您不精确算法,则无法计算成本函数。我可以提出一个方法来确定你的概念的第二点:
仍然,第3点和“判断”是非常笼统的,但基于此我可以给你几个答案:
有关费用函数的问题
成本函数
在我的情况下,algortihm的成本是O( n )+ const(对于长词,你可以考虑使用哈希表)+“判断”。问题仍在继续,因为很多问题取决于“判断”将如何解决。