高效算法,可随机生成一个多集的两个分散,无序排列
背景 \newcommand\ms[1]{\mathsf #1}\def\msD{\ms D}\def\msS{\ms S}\def\mfS{\mathfrak S}\newcommand\mfm[1]{#1}\def\po{\color{#f63}{\mfm{1}}}\def\pc{\color{#6c0}{\mfm{c}}}\def\pt{\color{#08d}{\mfm{2}}}\def\pth{\color{#6c0}{\mfm{3}}}\def\pf{4}\def\pv{\color{#999}5}\def\gr{\color{#ccc}}\let\ss\gr假设我有两个相同批次的nnn大理石。每个大理石可以是ccc种颜色之一,其中c≤nc≤nc≤n。令ninin_i表示每批中颜色为i的大理石的数量iii。 令SS\msS为多集{1,…,1n1,2,…,2n2,…,1c,…,cnc}{1,…,1⏞n1,2,…,2⏞n2,…,1c,…,c⏞nc}\small\{\overbrace{\po,…,\po}^{n_1},\;\overbrace{\pt,…,\pt}^{n_2},\;…,\;\overbrace{\vphantom 1\pc,…,\pc}^{n_c}\}代表一批。在频率表示中,SS\msS也可以写为(1n12n2…cnc)(1n12n2…cnc)(\po^{n_1} \;\pt^{n_2}\; … \;\pc^{n_c})。 \ msS的不同置换数SS\msS由多项式给出: |SS|=(nn1,n2,…,nc)=n!n1!n2!⋯nc!=n!∏i=1c1ni!.|SS|=(nn1,n2,…,nc)=n!n1!n2!⋯nc!=n!∏i=1c1ni!.\left|\mfS_{\msS}\right|=\binom{n}{n_1,n_2,\dots,n_c}=\frac{n!}{n_1!\,n_2!\cdots n_c!}=n! \prod_{i=1}^c \frac1{n_i!}. 题 是否有一个有效的算法来生成两个弥漫,错乱排列PPP和QQQ的SS\msS随意?(分布应均匀。) 甲置换PPP是漫如果对于每个不同的元件iii的PPP,的实例iii在大致均匀间隔的出PPP。 例如,假设S=(1424)={1,1,1,1,2,2,2,2}S=(1424)={1,1,1,1,2,2,2,2}\msS=(\po^4\;\pt^4)=\{\po,\po,\po,\po,\pt,\pt,\pt,\pt\}。 {1,1,1,2,2,2,2,1}{1,1,1,2,2,2,2,1}\{\po, \po, \po, \pt, \pt, \pt, \pt, \po\}不扩散 {1,2,1,2,1,2,1,2}{1,2,1,2,1,2,1,2}\{\po, \pt, \po, \pt, \po, \pt, \po, \pt\}是分散的 更严格地: 如果,则只有一个实例要在 “间隔” ,所以让。ni=1ni=1n_i=1iiiPPPΔ(i)=0Δ(i)=0\Delta(i)=0 否则,令是实例之间的距离 和实例 的在。从中减去期望的实例之间的距离,定义以下内容: 如果在均匀分布,则应该为零,或者如果为非常接近零。d(i,j)d(i,j)d(i,j)jjjj+1j+1j+1iiiPPPiiiδ(i,j)=d(i,j)−nniΔ(i)=∑j=1ni−1δ(i,j)2δ(i,j)=d(i,j)−nniΔ(i)=∑j=1ni−1δ(i,j)2\delta(i,j)=d(i,j)-\frac n{n_i}\qquad\qquad\Delta(i)=\sum_{j=1}^{n_i-1} \delta(i,j)^2iiiPPPΔ(i)Δ(i)\Delta(i)ni∤nni∤nn_i\nmid n 现在定义统计量来衡量每个在均匀间隔的数量。如果接近零,或大致,我们称弥散。(可以选择特定于的阈值,以便在使扩散。)s(P)=∑ci=1Δ(i)s(P)=∑i=1cΔ(i)s(P)=\sum_{i=1}^c\Delta(i)iiiPPPPPPs(P)s(P)s(P)s(P)≪n2s(P)≪n2s(P)\ll n^2k≪1k≪1k\ll1SS\msSPPPs(P)<kn2s(P)<kn2s(P)<kn^2 …