嗯,我玩这个有点开心。当我第一次阅读这个问题时,我首先想到的是群论(尤其是对称群 Sn)。 for 循环通过在每次迭代中组合转置(即交换)来简单地在 Sn 中构建一个置换 σ。我的数学并不是那么出色,而且我有点生疏,所以如果我的符号不合适,请忍耐。
概述
设A 是我们的数组在排列后不变的事件。我们最终被要求找到事件A、Pr(A)的概率。
我的解决方案尝试遵循以下程序:
- 考虑所有可能的排列(即我们的数组的重新排序)
- 根据这些排列所包含的所谓身份转置的数量,将这些排列分成不相交组。这有助于将问题减少到 even 排列。
- 确定在给定排列是偶数(并且具有特定长度)的情况下获得恒等排列的概率。
- 对这些概率求和以获得数组未发生变化的总体概率。
1) 可能的结果
请注意,for 循环的每次迭代都会创建一个交换(或 转置),它会导致以下两种情况之一(但绝不会两者兼而有之):
- 交换了两个元素。
- 元素与自身交换。出于我们的意图和目的,数组没有改变。
我们标记第二种情况。让我们定义一个 identity transposition 如下:
恒等式转置发生在数字与自身交换时。
也就是上面for循环中n == m的时候。
对于列出的代码的任何给定运行,我们编写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 身份转置出现在给定排列中的事件。请注意,这形成了所有可能结果的详尽划分:
- 任何排列都不能同时具有两个不同数量的恒等转座,并且
- 所有可能的排列都必须在
0 和N 之间进行身份转置。
因此我们可以申请Law of Total Probability:
现在我们终于可以利用分区了。请注意,当 non-identity 转置的数量是奇数时,数组不可能保持不变*。因此:
*根据群论,排列是偶数或奇数,但绝不是两者。因此奇排列不可能是恒等排列(因为恒等排列是偶排列)。
3) 确定概率
所以我们现在必须确定N-i even 的两个概率:
-
-
第一学期
第一项 表示获得具有 i 恒等转置的排列的概率。事实证明这是二项式的,因为对于 for 循环的每次迭代:
- 结果独立于之前的结果,并且
- 创建恒等转置的概率相同,即
1/N。
因此对于N 试验,获得i 身份转置的概率为:
第二项
因此,如果您已经做到了这一点,我们已经将问题减少到找到 甚至 N - i。这表示在给定i 的转置是身份的情况下获得身份置换的概率。我使用一种简单的计数方法来确定在可能的排列数量上实现恒等排列的方法的数量。
首先考虑排列 (n, m) 和 (m, n) 等效。然后,让M 成为可能的非身份排列的数量。我们会经常使用这个数量。
这里的目标是确定可以组合转置集合以形成恒等排列的方式数量。我将尝试根据N = 4 的示例构建通用解决方案。
让我们考虑具有所有身份转置的N = 4 情况(即 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 和i = 4,我们可以看一下一般情况。结合上述与之前找到的分母,我们发现:
这很直观。事实上,1 以外的任何其他值都可能会引起您的警觉。想一想:给定的情况是,所有N 转置都被称为身份。在这种情况下,数组可能没有变化?显然,1。
现在,再次对于 N = 4,让我们考虑 2 个身份转置(即 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 没有身份转换的情况(即 i = N - 4 = 0)。由于有很多可能性,它开始变得棘手,我们必须小心不要重复计算。我们以类似的方式开始,在第一个位置放置一个元素并计算出可能的组合。先取最简单的:相同的换位 4 次。
I = _t1_ _t1_ _t1_ _t1_
M * 1 * 1 * 1 => M possibilities
现在让我们考虑两个独特的元素t1 和t2。 t1 有 M 的可能性,而 t2 只有 M-1 的可能性(因为 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 * ? * ? * ?
我们还不能说有多少可能的t2s,我们马上就会知道为什么。
我们现在将t1 放在第三位。请注意,t1 必须去那里,因为如果要在最后一个位置去,我们只会重新创建上面的 (3)rd 安排。重复计算是不好的!这将第三个唯一元素 t3 留在最终位置。
I = _t1_ _t2_ _t1_ _t3_
M * ? * 1 * ?
那么为什么我们要花一点时间来更仔细地考虑t2s 的数量呢? t1 和 t2 的转置 不能 是不相交的排列(ie 它们必须共享一个(并且只有一个,因为它们也不能相等) 他们的n 或m)。这样做的原因是因为如果它们不相交,我们可以交换排列的顺序。这意味着我们将重复计算(1)st 排列。
说t1 = (n, m)。对于某些x 和y,t2 必须采用(n, x) 或(y, m) 的形式,以便不相交。请注意,x 可能不是n 或m 和y,很多都不是n 或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 换位,显然有多种方法可以使用上面未说明的四个独特元素来创建身份。随着排列变长(据我所知......),方式的数量似乎变得越来越难以计数。
无论如何,我绝对不能在采访范围内做这样的事情。如果我幸运的话,我会走到分母一步。除此之外,它似乎很讨厌。