免责声明这是针对我的某个课程以及可能是个人使用的加密程序。但是我没有被评分。
我已经破解了这段代码,它是一个随机的caeser密码。 Q PC JI UQTGF TQBMU SIX。 XMGS QJ UMQJ IKGT?
现在用计算字典来解决这个问题并不像旅行商问题那么类似吗?对于最坏的情况,O(n!)。此外,由于计算机无法知道某些内容是否正确,我是否不得不吐出每个结束排列以供审阅?或者我应该为人类审查设置一些下限?像至少40%的匹配?
答案 0 :(得分:0)
Caesar Ciphers只是简单地用字母代替字母并将其替换为s
位置向下移动的字母。
所以:
对于字母表中的每个字母a
,
您迭代a
次。
然后,对于密码中的每个v
字词,您必须翻阅字典中的d
个字词。
通过单词循环,忽略压缩和诸如此类的东西,会产生O(a*v*d)
的复杂性,如果a==26
,O(v*d)
。但是,复杂性基本上取决于您的字典算法如何工作 - O( is_sentence_valid) == O(cipher_solver)