Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 密码学中的混乱和排列_Math_Cryptography_Combinatorics - Fatal编程技术网

Math 密码学中的混乱和排列

Math 密码学中的混乱和排列,math,cryptography,combinatorics,Math,Cryptography,Combinatorics,我有一个问题,我有点麻烦 我们得到一个单字母替换密码的部分密钥(缺少11个字母),并要求我们计算可能的密钥数,因为没有明文字母可以映射到自身 通常情况下,可能的密钥数是丢失字母的错乱数(!11),但是丢失映射的明文字母中有5个已经作为映射存在于部分密钥中,因此从逻辑上讲,这些明文字母的映射是什么并不重要,因为它们永远无法映射到自己 那么,可能的键数不应该是5!6,即(已映射的5个自由字母的排列数)*(其余6个的错乱数) 问题是5!*!6=31800,这远远小于!11=14684570 直觉上,这

我有一个问题,我有点麻烦

我们得到一个单字母替换密码的部分密钥(缺少11个字母),并要求我们计算可能的密钥数,因为没有明文字母可以映射到自身

通常情况下,可能的密钥数是丢失字母的错乱数(!11),但是丢失映射的明文字母中有5个已经作为映射存在于部分密钥中,因此从逻辑上讲,这些明文字母的映射是什么并不重要,因为它们永远无法映射到自己

那么,可能的键数不应该是5!6,即(已映射的5个自由字母的排列数)*(其余6个的错乱数)

问题是5!*!6=31800,这远远小于!11=14684570

直觉上,这组混乱应该是一个较小的子集!11,不是吗

我只是在算术上出错了吗?还是我完全没有概念?任何帮助都将不胜感激

谢谢,格斯

我知道这不是严格意义上的编程问题,但它是一个计算问题,与编程项目有关,所以我认为它可能是相关的。另外,我昨天在math.stackexchange.com上发布了它,但还没有收到任何回复


编辑:已更正的值!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-我将对其进行修改。。您如何将这两个群体表述为“混合在一起”?我想这是我不太明白的部分。。谢谢你的回答,我真的没有想到我需要找到一个循环关系,但现在它是有意义的。谢谢你的帮助!