Math 密码学中的混乱和排列
我有一个问题,我有点麻烦 我们得到一个单字母替换密码的部分密钥(缺少11个字母),并要求我们计算可能的密钥数,因为没有明文字母可以映射到自身 通常情况下,可能的密钥数是丢失字母的错乱数(!11),但是丢失映射的明文字母中有5个已经作为映射存在于部分密钥中,因此从逻辑上讲,这些明文字母的映射是什么并不重要,因为它们永远无法映射到自己 那么,可能的键数不应该是5!6,即(已映射的5个自由字母的排列数)*(其余6个的错乱数) 问题是5!*!6=31800,这远远小于!11=14684570 直觉上,这组混乱应该是一个较小的子集!11,不是吗 我只是在算术上出错了吗?还是我完全没有概念?任何帮助都将不胜感激 谢谢,格斯 我知道这不是严格意义上的编程问题,但它是一个计算问题,与编程项目有关,所以我认为它可能是相关的。另外,我昨天在math.stackexchange.com上发布了它,但还没有收到任何回复Math 密码学中的混乱和排列,math,cryptography,combinatorics,Math,Cryptography,Combinatorics,我有一个问题,我有点麻烦 我们得到一个单字母替换密码的部分密钥(缺少11个字母),并要求我们计算可能的密钥数,因为没有明文字母可以映射到自身 通常情况下,可能的密钥数是丢失字母的错乱数(!11),但是丢失映射的明文字母中有5个已经作为映射存在于部分密钥中,因此从逻辑上讲,这些明文字母的映射是什么并不重要,因为它们永远无法映射到自己 那么,可能的键数不应该是5!6,即(已映射的5个自由字母的排列数)*(其余6个的错乱数) 问题是5!*!6=31800,这远远小于!11=14684570 直觉上,这
编辑:已更正的值!11我认为你的问题可以重新表述如下: 有多少排列具有元素
a_0,a_1。。。a_n-1,b_0,b_1,…,b_m-1
,其中没有a_k
元素位于k
位置?(让我们用p{n,m}
来表示这个数字-您的具体问题是p{6,5}
的值)
请注意,您建议的5号方程式!6不正确,原因如下:
它仅统计a_k
s位于前6个位置(没有任何一个位于自己索引的位置)和b_k
s位于最后5个位置的情况。
您不计算任何其他配置,如:a_3、b_4、b_1、a_0、a_5、b_0、a_2、b_3、a_1、a_4
,其中顺序完全混合
你的另一个想法是,结果是!11所有元件上的元件紊乱也不正确,因为任何b_k
s可以位于任何位置
然而,通过基于a\u 0
的位置将其分为两种情况,我们可以很容易地为p\n,m}
添加一个递归公式
a_0
位于1、2、…、n-1
位置之一。(n-1
不同的可能性。)
这意味着a_0
都不在位置0
,它还通过占据该位置防止另一个a_k
位于位置k
。因此,该a_k
变为“自由”,它可以转到任何其他位置。如果a_0
以这种方式得到修复,其他元素可以以p_{n-2,m+1}
不同的方式进行排列a_0
位于n,n+1,…,n+m-1
位置之一。(m
不同的可能性。)
这样,就不会阻止其他a_k
位于其索引对应的位置。其他元素可以用不同的方式排列p{n,m}=(n-1)*p{n-2,m+1}+m*p{n-1,m}
。停止条件是p_{0,m}=m
对于每个m
,这意味着每个元素可以位于任何位置
我还用python编写了代码:
import math
def derange(n,m):
if n<0:
return 0
elif n==0:
return math.factorial(m)
else:
return (n-1)*derange(n-2, m+1) + m*derange(n-1, m)
print derange(6,5)
导入数学
def紊乱(n,m):
如果这个问题的另一个可能的目的地是(尽管检查他们的帮助部分以确定)。在我发布完整答案之前,只需两条简短的评论:!11不是39916800,5*6.只是正确结果的子集,因为这两个组也可以“混合在一起”,而不仅仅是单独排列。对不起,这是一个拼写错误,11!=39916800, !11=14684570-我将对其进行修改。。您如何将这两个群体表述为“混合在一起”?我想这是我不太明白的部分。。谢谢你的回答,我真的没有想到我需要找到一个循环关系,但现在它是有意义的。谢谢你的帮助!