好吧,我对这个有一点乐趣。当我第一次阅读这个问题时,我首先想到的是群论(特别是对称群 S n)。for 循环通过在每次迭代中组合转置(即交换)来简单地在 S n中构建置换 σ 。我的数学并没有那么出色,而且我有点生疏,所以如果我的符号不合适,请忍耐。
概述
假设A
我们的数组在排列后不变。我们最终被要求找到事件的概率A
,Pr(A)
。
我的解决方案尝试遵循以下过程:
- 考虑所有可能的排列(即我们数组的重新排序)
- 根据它们包含的所谓身份转置的数量,将这些排列划分为不相交的集合。这有助于将问题减少到仅偶数排列。
- 假设排列是偶数(并且具有特定长度),确定获得恒等排列的概率。
- 对这些概率求和以获得数组不变的整体概率。
1) 可能的结果
请注意,for 循环的每次迭代都会创建一个交换(或转置),它会导致以下两种情况之一(但绝不会同时出现两种情况):
- 交换了两个元素。
- 元素与自身交换。出于我们的意图和目的,数组没有改变。
我们标记第二种情况。让我们定义一个恒等转置如下:
当一个数字与自身交换时,就会发生身份转置。也就是说,当 n == m 在上面的 for 循环中时。
对于列出的代码的任何给定运行,我们组合N
转置。在这个“链”中可能会0, 1, 2, ... , N
出现身份换位。
例如,考虑一个N = 3
案例:
Given our input [0, 1, 2].
Swap (0 1) and get [1, 0, 2].
Swap (1 1) and get [1, 0, 2]. ** Here is an identity **
Swap (2 2) and get [1, 0, 2]. ** And another **
请注意,有奇数个非恒等转置 (1) 并且数组已更改。
2) 基于身份转置次数的分区
假设K_i
身份i
转置出现在给定的排列中。请注意,这形成了所有可能结果的详尽划分:
- 没有一个排列可以同时有两个不同数量的恒等换位,并且
- 所有可能的排列都必须具有 between
0
和N
identity 换位。
因此我们可以应用全概率定律:
现在我们终于可以利用分区了。请注意,当非恒等转置的数量为奇数时,数组不可能保持不变*。因此:
*根据群论,排列是偶数或奇数,但绝不是两者兼而有之。因此奇排列不能是恒等排列(因为恒等排列是偶排列)。
3) 确定概率
所以我们现在必须确定两个N-i
偶数概率:
第一学期
第一项 ,表示获得具有i
恒等转置的排列的概率。事实证明这是二项式的,因为对于 for 循环的每次迭代:
- 结果独立于之前的结果,并且
- 创建恒等转置的概率是相同的,即
1/N
。
因此,对于N
试验,获得i
同一性转置的概率为:
第二学期
因此,如果您已经做到了这一点,我们已经将问题减少到寻找偶数N - i
。i
这表示在给定转置是身份的情况下获得身份置换的概率。我使用一种简单的计数方法来确定在可能的排列数量上实现恒等排列的方法的数量。
首先考虑排列(n, m)
和(m, n)
等价。然后,让M
是可能的非恒等排列的数量。我们会经常使用这个数量。
这里的目标是确定可以组合转置集合以形成恒等排列的方式的数量。我将尝试构建一个通用的解决方案N = 4
。
让我们考虑N = 4
所有身份转置(ie i = N = 4
)的情况。让我们X
表示一个身份转置。对于每个X
,都有N
可能(它们是:n = m = 0, 1, 2, ... , N - 1
)。因此存在N^i = 4^4
实现身份置换的可能性。为了完整起见,我们添加了二项式系数 ,C(N, i)
以考虑恒等转置的排序(这里它仅等于 1)。我试图用上面元素的物理布局和下面的可能性数量来描述这个:
I = _X_ _X_ _X_ _X_
N * N * N * N * C(4, 4) => N^N * C(N, N) possibilities
现在没有明确地替换N = 4
and i = 4
,我们可以看一下一般情况。将上述内容与之前找到的分母相结合,我们发现:
这是直观的。事实上,除此之外的任何其他值1
都可能会引起您的警觉。想一想:我们处于这样一种情况,在这种情况下,所有的N
换位都被称为同一性。在这种情况下,数组可能没有变化?很明显,1
.
现在,再次为N = 4
,让我们考虑 2 个单位换位(ie i = N - 2 = 2
)。作为约定,我们将把这两个身份放在最后(并考虑稍后的排序)。我们现在知道我们需要选择两个转置,当它们组合时,它们将成为恒等排列。让我们将任何元素放在第一个位置,称之为t1
。如上所述,有M
可能假设t1
不是一个身份(它不可能是因为我们已经放置了两个)。
I = _t1_ ___ _X_ _X_
M * ? * N * N
剩下的唯一可能出现在第二个位置的元素是 的逆t1
,实际上是t1
(这是唯一的逆唯一性)。我们再次包括二项式系数:在这种情况下,我们有 4 个开放位置,我们正在寻找放置 2 个身份排列。我们有多少种方法可以做到这一点?4选2。
I = _t1_ _t1_ _X_ _X_
M * 1 * N * N * C(4, 2) => C(N, N-2) * M * N^(N-2) possibilities
再看一般情况,这都对应于:
最后我们做N = 4
没有身份转置的情况(ie i = N - 4 = 0
)。由于有很多可能性,它开始变得棘手,我们必须小心不要重复计算。我们以类似的方式开始,在第一个位置放置一个元素并计算出可能的组合。先取最简单的:相同的换位4次。
I = _t1_ _t1_ _t1_ _t1_
M * 1 * 1 * 1 => M possibilities
现在让我们考虑两个独特的元素t1
和t2
。(因为不能等于)有并且只有M
可能。如果我们用尽所有安排,我们将得到以下模式:t1
M-1
t2
t2
t1
I = _t1_ _t1_ _t2_ _t2_
M * 1 * M-1 * 1 => M * (M - 1) possibilities (1)st
= _t1_ _t2_ _t1_ _t2_
M * M-1 * 1 * 1 => M * (M - 1) possibilities (2)nd
= _t1_ _t2_ _t2_ _t1_
M * M-1 * 1 * 1 => M * (M - 1) possibilities (3)rd
现在让我们考虑三个独特的元素t1
, t2
, t3
。让我们t1
先放置然后再放置t2
。像往常一样,我们有:
I = _t1_ _t2_ ___ ___
M * ? * ? * ?
我们还不能说有多少可能t2
的 s,我们马上就会知道为什么。
我们现在排t1
在第三位。注意,t1
必须去那里,因为如果要在最后一个地方去,我们只会重新创建(3)rd
上面的安排。重复计算是不好的!这将第三个唯一元素留t3
到最终位置。
I = _t1_ _t2_ _t1_ _t3_
M * ? * 1 * ?
那么为什么我们要花一分钟时间来t2
更仔细地考虑 s 的数量呢?转置t1
和t2
不能是不相交的排列(即它们必须共享一个(并且只有一个,因为它们也不能相等)它们的n
or m
)。这样做的原因是因为如果它们不相交,我们可以交换排列的顺序。这意味着我们将重复计算(1)st
安排。
说t1 = (n, m)
。t2
必须是形式(n, x)
或(y, m)
对某些人来说x
,并且y
为了不脱节。请注意,x
可能不是n
orm
并且y
很多不是n
or m
。因此,可能的排列数t2
实际上是2 * (N - 2)
。
所以,回到我们的布局:
I = _t1_ _t2_ _t1_ _t3_
M * 2(N-2) * 1 * ?
现在t3
必须是 的组合的倒数t1 t2 t1
。让我们手动完成:
(n, m)(n, x)(n, m) = (m, x)
因此t3
必须是(m, x)
。请注意,这与任何一个都不相交t1
也不等于,t1
因此t2
这种情况下没有重复计算。
I = _t1_ _t2_ _t1_ _t3_
M * 2(N-2) * 1 * 1 => M * 2(N - 2) possibilities
最后,将所有这些放在一起:
4)把它们放在一起
就是这样了。向后工作,将我们发现的内容代入步骤 2 中给出的原始总和。我计算了N = 4
以下案例的答案。它与另一个答案中的经验数字非常接近!
N = 4
M = 6 _________ _____________ _________
| Pr(K_i) | Pr(A | K_i) | 产品 |
_________|_________|_____________|_________|
| | | | |
| 我 = 0 | 0.316 | 120 / 1296 | 0.029 |
|_________|_________|_____________|_________|
| | | | |
| 我 = 2 | 0.211 | 6 / 36 | 0.035 |
|_________|_________|_____________|_________|
| | | | |
| 我 = 4 | 0.004 | 1 / 1 | 0.004 |
|_________|_________|_____________|_________|
| | |
| 总和:| 0.068 |
|_____________|_________|
正确性
如果能在这里应用群论的结果,那就太酷了——也许有!它肯定会帮助让所有这些繁琐的计数完全消失(并将问题简化为更优雅的东西)。我停止在N = 4
. 对于N > 5
,给出的只是一个近似值(有多好,我不确定)。如果您考虑一下,就会很清楚为什么会这样:例如,给定换位,显然有多种方法可以使用上面未说明的四个独特元素来N = 8
创建身份。随着排列变长(据我所知......),方式的数量似乎变得越来越难以计数。
无论如何,我绝对不能在采访的范围内做这样的事情。如果我幸运的话,我会走到分母一步。除此之外,它似乎非常讨厌。