uni-atlas (zh)

Sort Proof

证明:“k个不同球放入n个不同位置”的方法数等于排列数 P(n, k)

摘要: 本证明旨在通过集合论的语言,严格论证“将k个不同元素(球)放入n个不同位置(空位),每位置最多放一个元素”的可能方法总数。证明将通过以下步骤完成:

  1. 问题形式化:将物理问题转化为一个精确的数学模型——单射函数的计数。
  2. 等价性证明:通过构造一个双射 (Bijection),证明单射函数的集合与一个更易于计数的排列集合是等价的。
  3. 基数计算:通过标准线性流程计算排列集合的基数。
  4. 完备性证明:通过证明集合相等,严格论证任意线性计算流程的普适性和正确性。

第一部分:问题形式化 (Problem Modeling)

  • B={b1,b2,,bk}B = \{b_1, b_2, \dots, b_k\}kk 个可区分元素的集合(球),B=k|B|=k
  • P={p1,p2,,pn}P = \{p_1, p_2, \dots, p_n\}nn 个可区分位置的集合,P=n|P|=n

一个合法的“放法”定义了一个函数 f:BPf: B \to P,其中 f(bi)f(b_i) 是球 bib_i 的位置。约束条件“每位置最多放一个元素”要求该函数为单射 (Injective)

Inj(B,P)\mathrm{Inj}(B, P) 为所有从 BBPP 的单射函数的集合。 我们的最终目标是求此集合的基数:Inj(B,P)|\mathrm{Inj}(B, P)|


第二部分:与排列的等价性证明 (Proof of Equivalence with Permutations)

  1. 定义排列集合:TT 为所有由 PPkk 个不同元素构成的有序k元组 (ordered k-tuples) 的集合。该集合是 PP 的k-排列集。 T={(pi1,pi2,,pik)pijP 且所有 pij 互不相同}T = \{ (p_{i_1}, p_{i_2}, \dots, p_{i_k}) \mid p_{i_j} \in P \text{ 且所有 } p_{i_j} \text{ 互不相同} \}

  2. 构造双射 Φ\Phi 我们约定一个对定义域 BB 中元素的标准排序 (b1,b2,,bk)(b_1, b_2, \dots, b_k)。基于此,我们构造一个映射 Φ:Inj(B,P)T\Phi: \mathrm{Inj}(B, P) \to T,其规则为: 对于任意函数 fInj(B,P)f \in \mathrm{Inj}(B, P),其像为一个有序元组: Φ(f)=(f(b1),f(b2),,f(bk))\Phi(f) = (f(b_1), f(b_2), \dots, f(b_k))

  3. 证明 Φ\Phi 是双射 (Bijection):

    • 单射性 (Injectivity): 两个不同的函数 f,gf, g 必然对至少一个球 bib_i 的赋值不同,即 f(bi)g(bi)f(b_i) \neq g(b_i)。因此,它们所对应的元组 Φ(f)\Phi(f)Φ(g)\Phi(g) 也必然不同。
    • 满射性 (Surjectivity): 对于任意一个排列元组 tTt \in T,我们都可以构造出它的前身函数 fInj(B,P)f \in \mathrm{Inj}(B, P)
    • 因为 Φ\Phi 是双射,所以集合基数相等:Inj(B,P)=T|\mathrm{Inj}(B, P)| = |T|

第三部分:基数计算 (Cardinality Calculation)

我们采用一个标准线性流程 (Standard Procedure, Πstd\Pi_{std}) 来计算集合 TT 的大小:即按顺序确定元组中第1位,第2位,…,第k位的值。

  • 为元组的第1位选择一个元素:有 nn 种选择。
  • 为元组的第2位选择一个元素:有 n1n-1 种选择。
  • 为元组的第k位选择一个元素:有 nk+1n-k+1 种选择。

根据乘法原理,由标准流程 Πstd\Pi_{std} 生成的结果集合(记为 SstdS_{std})的大小为: Sstd=n×(n1)××(nk+1)=P(n,k)|S_{std}| = n \times (n-1) \times \dots \times (n-k+1) = P(n, k)


第四部分:计算流程的完备性与普适性证明 (Proof of Completeness and Universality)

目标: 证明我们采用的任意线性计算流程,其生成的结果集合内容都是完全相同的。

  1. 定义:

    • SstdS_{std} 为由标准流程 Πstd\Pi_{std} 生成的结果集合。
    • Πalt\Pi_{alt} 为任意其他顺序的流程,其生成的结果集合为 SaltS_{alt}
    • 我们需要严格证明:Sstd=SaltS_{std} = S_{alt}
  2. 证明 SstdSaltS_{std} \subseteq S_{alt}

    • 任取一个由标准流程生成的排列 tSstdt \in S_{std}
    • 我们证明,排列 tt 同样可以被任意其他流程 Πalt\Pi_{alt} 构造出来。对于 Πalt\Pi_{alt} 的每一步,我们都能在剩下的元素中找到 tt 所对应的那个唯一元素作为合法的选择。
    • 因此,tSaltt \in S_{alt}。因为 tt 是任意选取的,所以 SstdSaltS_{std} \subseteq S_{alt}
  3. 证明 SaltSstdS_{alt} \subseteq S_{std}

    • 通过完全对称的论证,我们也可以任取一个排列 tSaltt' \in S_{alt},并证明它同样可以被我们的标准流程 Πstd\Pi_{std} 所构造出来。因此,SaltSstdS_{alt} \subseteq S_{std}
  4. 结论:

    • 因为 SstdSaltS_{std} \subseteq S_{alt}SaltSstdS_{alt} \subseteq S_{std},所以根据集合相等的定义,我们得出结论:Sstd=SaltS_{std} = S_{alt}

第五部分:最终结论 (Final Conclusion)

综上所述:

  1. “k个不同球放入n个不同位置”的方法总数,等于单射函数集 Inj(B,P)|\mathrm{Inj}(B, P)|
  2. 通过构造双射,我们证明了 Inj(B,P)=T|\mathrm{Inj}(B, P)| = |T|,其中 TT 是所有k-排列的集合。
  3. 通过对任意计算流程的集合等价性证明,我们确认了任何一种线性计算流程都能且只能生成完整的排列集合 TT
  4. 通过标准线性流程的分步乘法原理,我们计算出 T=P(n,k)|T| = P(n, k)

因此,我们最终严谨地证明了,k个不同球放入n个不同位置的方法总数,精确地等于排列数 P(n,k)P(n, k)

对于 k=3,n=5k=3, n=5 的情况,总数为: P(5,3)=5×4×3=60P(5, 3) = 5 \times 4 \times 3 = 60

Q.E.D.

References