Изменения

Перейти к: навигация, поиск

Сортирующая сеть глубины O(log N)

6854 байта добавлено, 19:40, 4 сентября 2022
м
rollbackEdits.php mass rollback
Ажтаи (Ajtai), Комлос (Komlos) и Шимереди (Szemeredi) сконструировали сортирующую сеть на <tex>N </tex> входов глубины <tex> O(\log N) </tex>, при они не углублялись в исследование значения константы, получавшейся при правильном соблюдении необходимой ассимптотики. Впоследствии Патерсон выяснил, что <tex> O(\log N) </tex> можно заменить на <tex> c\log_2 N </tex> с константой приблизительно равной <tex> 6100 </tex>. Здесь будет описана более поздняя реализация, которая включает в себя меньшую константу <tex>c</tex>, а именно, будет доказано, что для любого целого числа <tex>N</tex> такого,что <tex>N \ge 2^{78}</tex> существует сортирующая сеть на <tex>N</tex> входов, такая, что глубина в худшем случае будет <tex>1830 \log_2 N - 58657 </tex>.
Основными составяющими этой конструкции будут сортирующие сети на <tex>M</tex> входов, такие ,что <tex>M</tex> относительно мало. Мы назовем их <tex>M</tex>-сортировщиками. Для любых выбранных положительных целых чисел <tex>M</tex> и <tex>N</tex> таких что <tex> N \ge M</tex>, конструкция будет включать в себя <tex>N</tex> проводов, и будет сделана из <tex>M</tex>-сортировщиков, глубина которых в худшем случае <tex>(48 + о(1))\log_MN + 115</tex> при <tex>M \to \infinfty</tex>.
(Стоит отметить, что асимптотическое <tex>o(1)</tex> здесь относится к <tex>M</tex>, а не к <tex>N</tex>).
'''Идеальным разделителем''' будем называть сеть, выходные провода которой разделены на K блоков одинакового размера, таких, что принимая на вход любые <tex>a</tex> значений, сеть размещает первые <tex>a/k</tex> минимальные по величине ключи в первый блок, следующие <tex>a/k</tex> по величине ключи – во второй, и т.д.
}}
Эти идеальные разделители могут быть использованы как модули для построения сортирующей сети на <tex>N</tex> входов, где <tex>N = k^d</tex> для некоторого положительного числа d. Такая сеть будет представлять собой композицию сетей <tex>N_0, N_1, N_2 .. \dots N_{d-1}</tex>, где <tex>N_t</tex> – парраллельная композиция <tex>k^t</tex> идеальных разделителей одинакового размера.
== Конструкция сети ==
<tex>\omega^*(t) = \dfrac{t\log \dfrac{1}{\nu} + \log(A\nu k)}{\log Ak}</tex>
<tex>\alpha(t) \ge \alpha^*(t),\quad \alpha(t)\equiv t\; mod\; 2 </tex>
<tex>\omega(t) \ge \omega^*(t),\quad \omega(t)\equiv t\; mod\; 2 </tex>
<tex> a(j,t) =
\begin{cases}
0, &\text{ $j \not\equiv i\quad mod \quad 2$,}\\
c(j, t), &\text{ $j = \alpha(t)$,}\\
(1 - \dfrac{1}{A^2k^2})c(j, t) &\text{ $\alpha(t) < j < i, \quad j \equiv i \; mod \; 2$}
\end{cases}
</tex>
<tex>\Delta_2 = \dfrac{\nu}{1 - \delta^2k^2A^2}c</tex>
dfrac
<tex> \Delta =
\begin{cases}
== Конструкция разделителей ==
<tex>M \ge 32A^2k^2 </tex>
 
<tex>a=mn, \quad M/32 < m \le M/16 </tex>
 <tex>|F_j|=fn,\quad|B_j|=bn</tex>  <tex>|F_j|=2^s f_0,\quad|B_j|=2^s b_0</tex>  <tex>2f_0+kb_0 < 2A^2k62 :</tex>  <tex>i=\alpha(t) < \alpha(t+1) </tex> <tex>f_0 = 0, \qquad b_0=1, \qquad 2^s = \dfrac{a(i,t)}{k}, </tex>  <tex>i=\alpha(t) > \alpha(t+1) </tex> <tex>f_0 = \dfrac{k}{2}, \qquad b_0=\dfrac{Ak}{\nu} -1, \qquad 2^s = \dfrac{\nu c(i,t)}{Ak^2}, </tex>  <tex>\alpha(t) < i < \omega(t) </tex> <tex>f_0 = A\nu k - 1, \qquad b_0=2A^2k - 2A\nu, \qquad 2^s = \dfrac{c(i,t)}{2A^2k^2}, </tex>  <tex>i=\omega(t) < \omega(t + 1) </tex> <tex>t\ge 2</tex> <tex>f_0 = A\nu k - 1, \qquad b_0=2A^2k\dfrac{Nk^{-i}}{c(i,t)} - 2A\nu, \qquad 2^s = \dfrac{c(i,t)}{2A^2k^2}, </tex>  <tex>i=\omega(t) < \omega(t + 1) </tex>  <tex>c(i,t) = c(i+1,t+1)/A\nu < AkN^{-i}/\nu</tex> <tex>m_0 = 2f_0 + kb_0 </tex> <tex>a 2^s m_0</tex> <tex>m_0 < M/16</tex> <tex> 2^r m_0 \le M/16 </tex>  <tex> m=2^r m_0, n = a/m, f = 2^r f_0, b = 2^r b_0 </tex> <tex>f \ge \dfrac{\nu}{2Ak} \cdot \dfrac{A\nu k - 1}{A\nu k - \dfrac{\nu}{Ak}}m </tex> где <tex> f \neq 0</tex> Теорема 5.1 <tex>m\ge 100, n\ge 16, f\ge 10 </tex> <tex> m = 2f + kb </tex> <tex> \varepsilon_B \ge \sqrt{\dfrac{2(1 + \ln m)}{m}} </tex> <tex> \delta_F \le 1/25 </tex>  <tex> \varepsilon_F \ge \dfrac{2}{f - 2}\left (1 + \dfrac{\ln(3e^5f)}{\ln(0.12/e\delta_F)}\right )</tex> <tex> \varepsilon_F \ge 4e/f</tex> <tex>1/\varepsilon_F</tex>  <tex>|F_j|=fn,|B_j|=bn</tex> == Анализ сепараторов разделителей ==лемма 6.3<tex> p = \dfrac{1}{kn}\sum\limits _{i=1}^k r_i </tex> <tex>\sum\limits_{i=1}^k|R_i\cap S| \ge (p+t)ks </tex>  <tex> \Bigg( \bigg( \dfrac{p}{p+t} \bigg) ^{p+t} \bigg(\dfrac{1-p}{1-p-t}\bigg)^{1-p-t}\Bigg)^{ks} </tex>  <tex> \bigg( \dfrac{p}{p+t} \bigg) ^{p+t} \bigg(\dfrac{1-p}{1-p-t}\bigg)^{1-p-t} < \exp(-2t^2) </tex>  <tex> \bigg( \dfrac{p}{p+t} \bigg) ^{p+t} \bigg(\dfrac{1-p}{1-p-t}\bigg)^{1-p-t} < \bigg(\dfrac{ep}{p+t}\bigg) ^{p+t} </tex>  <tex> \exp(-2t^2ms) \le (em)^{-n^2/s} \le (em)^{-n} </tex>  <tex> \dfrac{1 + e^{-5}}{1 - e^{-5}} \Bigg(\bigg(\dfrac{efn}{2\varepsilon_Fj}\bigg)^{2/f}\dfrac{2ej}{fn}\Bigg)^{\varepsilon_Fj}</tex>  <tex> p(s) \le \dbinom{n}{s} \bigg(\dfrac{ejs}{(\tfrac{1}{2}fs + \varepsilon_Fj)n}\bigg)^{\tfrac{1}{2}fs+\varepsilon_Fj} </tex>  <tex> p(s) \le \dbinom{n}{s} \bigg(\dfrac{es}{\varepsilon_Fn}\bigg)^{\varepsilon_Fj} </tex>  <tex> p(s) \le \dbinom{n}{s} \bigg(\dfrac{2ej}{fn}\bigg)^{fs/2} </tex> <tex> g(x) =\begin{cases}\bigg(\dfrac{en}{x}\bigg)^x \bigg(\dfrac{ex}{\varepsilon_Fn}\bigg)^{\varepsilon_Fj} &\text{если $x \le \varepsilon_F\cdot2j/f$}\\\bigg(\dfrac{en}{x}\bigg)^x \bigg(\dfrac{2ej}{fn}\bigg)^{fx/2} &\text{если $x \ge \varepsilon_F\cdot2j/f$}\end{cases}</tex>  <tex> \sum\limits_{s-1}^n q(s) \le \dfrac{1 + e^{-5}}{1 - e^{-5}} g(\varepsilon_F\cdot2j/f) </tex>  <tex> x \le \varepsilon_F\cdot2j/f </tex>  <tex> \dfrac{d}{dx}\ln g(x) = \ln\dfrac{n}{x} + \dfrac{\varepsilon_Fj}{x} \ge \dfrac{1}{2}f \ge 5 </tex>  <tex> x \ge \varepsilon_F\cdot2j/f </tex>  <tex> \dfrac{d}{dx}\ln g(x) = \ln\dfrac{n}{x} + \dfrac{1}{2}f\ln\dfrac{2ej}{fn} \\ \le \ln\dfrac{e}{\varepsilon_F} + \left(\dfrac{1}{2}f - 1\right)\ln\dfrac{2ej}{fn} \\ \le \ln\dfrac{f}{4} + \left(\dfrac{1}{2}f - 1\right)\ln\dfrac{2e}{25} \\ <-5</tex> <tex> \delta = e ^{-5}, b=\varepsilon_F\cdot 2j/f, a= \lfloor b\rfloor, c = a + 1</tex>  <tex> \sum\limits_{s=1}^n g(s) = \sum\limits_{s=1}^a g(s) + \sum\limits_{s=c}^n g(s) \\ < \dfrac{1}{1-\delta}(g(a) + g(c)) \\ \le \dfrac{\delta^{b-a} + \delta^{c-b}}{1-\delta}g(b) \\ \le \dfrac{1 + \delta}{1-\delta}g(b) </tex>  <tex> \dfrac{90}{89} \bigg(\dfrac{e^2(f + 2)^2n}{4j}\bigg) ^{2j/(f+2)} </tex>  <tex>s_1,\; s_1,+s_2, \; s_1+s_2+s_3, \; \dots ,\; s_1+s_2+s_3+\dots +s_k </tex>  <tex> \sum\limits_{i = 1}^{k}(s_i+dfrac{1}{2}f) \le j, </tex>  <tex> \sum\limits_{k=0}^n\dbinom{n}{k}\dbinom{j - fk/2}{k} </tex>  <tex>\dbinom{n}{k}\dbinom{j - fk/2}{k} \le \dbinom{n}{k}\dbinom{j}{k} < \bigg(\dfrac{e^2(f+2)^2n}{k^2}\bigg)^k </tex> <tex> 1 + \sum\bigg(\dfrac{e^2(f+2)^2n}{k^2}\bigg)^k < \dfrac{90}{89} \bigg(\dfrac{e^2(f + 2)^2n}{4j}\bigg) ^{2j/(f+2)} </tex> <tex>e^2nj \ge e^2j > 90 </tex>  <tex>x \le 2j/(f+2) </tex> <tex>\dfrac{d}{dx}\ln\bigg(\bigg(\dfrac{e^2nj}{x^2}\bigg)^x\bigg) = \ln\dfrac{nj}{x^2} \ge \ln\dfrac{n(f + 2)^2}{4j} \ge \ln\dfrac{25(f+2)^2}{4f} \ge \ln 90</tex>  <tex> \dfrac{90}{89} \bigg(\dfrac{e^2(f + 2)^2n}{4j}\bigg) ^{2j/(f+2)} \cdot \dfrac{1 + e^{-5}}{1 - e^{-5}} \Bigg(\bigg(\dfrac{efn}{2\varepsilon_Fj}\bigg)^{2/f}\dfrac{2ej}{fn}\Bigg)^{\varepsilon_Fj} </tex>  <tex>x = \bigg(\dfrac{e^2(f + 2)^2n}{4j}\bigg) ^{2/\varepsilon_Ff} \cdot \bigg(\dfrac{efn}{2\varepsilon_Fj}\bigg)^{2/f} \cdot \dfrac{2ej}{fn}; </tex>  <tex>(e^2/\varepsilon_F)^{2/f} =((e^2/\varepsilon_F)^{\varepsilon_F})^{2/\varepsilon_Ff} \le (e^2))^{2/\varepsilon_Ff} </tex> <tex>x \le \bigg(\dfrac{e^4(f+2)^2n}{4j}\bigg)^{2//\varepsilon_Ff}\bigg(\dfrac{2ej}{fn}\bigg)^{(f-2)/f} </tex> <tex>t =\varepsilon_F(f-2)/2 </tex> <tex> x^{f/(f-2)} \le 0.24\Bigg(\dfrac{e^5(f+2)^2}{0.48f}\bigg(\dfrac{ej}{0.12fn}\bigg)^{t-1}\Bigg)^{1/t} \\ \le 0.24\Bigg(3e^5f\bigg(\dfrac{e\delta_F}{0.12}\bigg)^{t-1}\Bigg)^{1/t} </tex> <tex> t-1 \ge \dfrac{\ln(3e^5f)}{\ln(0.12/e\delta_F)} </tex> <tex> x^{f/(f-2)} \le 0.24 </tex> <tex>x <0.32 </tex>  <tex> 1.025 \sum\limits_{i\ge1} 0.32^i </tex>
== Доказательство ==
 
Будем считать, что
<tex>A=k^2</tex> и <tex>\nu = 1/k </tex>.
<tex>\mu = k ^{-5},\; \delta = \dfrac{1}{3}k^{-5}, \; \delta_F = \dfrac{2k}{k^2 - 1} </tex>
 
Тогда получим, что
<tex> t_f = 3d - 20 </tex> и <tex>\alpha(t_f) = \omega(t_f) = d - 6 </tex>, где <tex>d = \log N/\log k </tex>.
 
<tex> \varepsilon_B \le \dfrac{1}{4}k^{-4} \cdot \dfrac{4k-1}{4k} </tex>
 
<tex> \varepsilon_F \le \dfrac{1}{4}k^{-4} \cdot\dfrac{4k-1}{4k} </tex>
 
 
<tex> \varepsilon^* = 2^{-39}\sqrt{1 + 79\ln 2} < 2 ^{-36} </tex>
 
<tex> f > 2^{34} \cdot \dfrac{1-2^{-12}}{1 - 2^{-36}} > 1.7 \times 10^{10} </tex>
 
 
<tex> \varepsilon_B = 2 ^{-29}\sqrt{1 + 59\ln 2} < 1.25 \times 10 ^{-8} </tex>
 
<tex> \delta_F = 128/4095 </tex>
 
<tex> \varepsilon_F = 1/(8\times 10^7) = 1.25 \times 10^{-8} </tex>
 
<tex> \sqrt{\dfrac{2(1+\ln m)}{m}} \le k ^{-6} </tex>
 
<tex> M/32 < m \le M/16 </tex>
 
<tex> \log k = (\dfrac{1}{12} + o(1))\log M </tex> <tex> M \to \infty </tex>
 
<tex> f \ge (1 + o(1))\dfrac{m}{2k^4} \ge (1+o(1))k^8\ln k </tex>
<tex>M \to \infty </tex>
 
<tex> \varepsilon_B = k^{-6}, \; \delta_F = \dfrac{2k}{k^2 - 1}, \; \varepsilon_F = k^{-8} </tex>
 
<tex> \sqrt{\dfrac{2(1+\ln m)}{m}} \le \dfrac{1}{5}k^{-4} </tex>
 
<tex> \log k = (\dfrac{1}{8} + o(1))\log M </tex>
 
<tex> \sqrt{\dfrac{2(1 + \ln \lfloor M^{3/2}\rfloor)}{\lfloor M^{3/2}\rfloor}} \le k^{-6} </tex>
 
<tex> \varepsilon_B = \dfrac{1}{5}k^{-4}, \; \delta_F = \dfrac{2k}{k^2 - 1}, \; \varepsilon_F = \dfrac{1}{5}k^{-4} </tex>
1632
правки

Навигация