Сортирующая сеть глубины O(log N) — различия между версиями
Dominica (обсуждение | вклад) (→Конструкция разделителей) |
м (rollbackEdits.php mass rollback) |
||
(не показано 13 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | Ажтаи (Ajtai), Комлос (Komlos) и Шимереди (Szemeredi) сконструировали сортирующую сеть на N входов глубины <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>. | + | Ажтаи (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 \ | + | Основными составяющими этой конструкции будут сортирующие сети на <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 \infty</tex>. |
(Стоит отметить, что асимптотическое <tex>o(1)</tex> здесь относится к <tex>M</tex>, а не к <tex>N</tex>). | (Стоит отметить, что асимптотическое <tex>o(1)</tex> здесь относится к <tex>M</tex>, а не к <tex>N</tex>). | ||
Строка 12: | Строка 12: | ||
'''Идеальным разделителем''' будем называть сеть, выходные провода которой разделены на K блоков одинакового размера, таких, что принимая на вход любые <tex>a</tex> значений, сеть размещает первые <tex>a/k</tex> минимальные по величине ключи в первый блок, следующие <tex>a/k</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 | + | Эти идеальные разделители могут быть использованы как модули для построения сортирующей сети на <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> идеальных разделителей одинакового размера. |
== Конструкция сети == | == Конструкция сети == | ||
Строка 20: | Строка 20: | ||
<tex>\omega^*(t) = \dfrac{t\log \dfrac{1}{\nu} + \log(A\nu k)}{\log Ak}</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\ | + | <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\ | + | <tex>\omega(t) \ge \omega^*(t),\quad \omega(t)\equiv t\mod 2 </tex> |
Строка 102: | Строка 102: | ||
<tex> a(j,t) = | <tex> a(j,t) = | ||
\begin{cases} | \begin{cases} | ||
− | 0, &\text{ $j \not\equiv i\ | + | 0, &\text{ $j \not\equiv i \mod 2$,}\\ |
c(j, t), &\text{ $j = \alpha(t)$,}\\ | 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 \ | + | (1 - \dfrac{1}{A^2k^2})c(j, t) &\text{ $\alpha(t) < j < i, \quad j \equiv i \mod 2$} |
\end{cases} | \end{cases} | ||
</tex> | </tex> | ||
Строка 149: | Строка 149: | ||
<tex>\Delta_2 = \dfrac{\nu}{1 - \delta^2k^2A^2}c</tex> | <tex>\Delta_2 = \dfrac{\nu}{1 - \delta^2k^2A^2}c</tex> | ||
− | + | dfrac | |
<tex> \Delta = | <tex> \Delta = | ||
\begin{cases} | \begin{cases} | ||
Строка 187: | Строка 187: | ||
== Конструкция разделителей == | == Конструкция разделителей == | ||
<tex>M \ge 32A^2k^2 </tex> | <tex>M \ge 32A^2k^2 </tex> | ||
+ | |||
<tex>a=mn, \quad M/32 < m \le M/16 </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> |
Текущая версия на 19:40, 4 сентября 2022
Ажтаи (Ajtai), Комлос (Komlos) и Шимереди (Szemeredi) сконструировали сортирующую сеть на
входов глубины , при они не углублялись в исследование значения константы, получавшейся при правильном соблюдении необходимой ассимптотики. Впоследствии Патерсон выяснил, что можно заменить на с константой приблизительно равной . Здесь будет описана более поздняя реализация, которая включает в себя меньшую константу , а именно, будет доказано, что для любого целого числа такого,что существует сортирующая сеть на входов, такая, что глубина в худшем случае будет .Основными составяющими этой конструкции будут сортирующие сети на
входов, такие ,что относительно мало. Мы назовем их -сортировщиками. Для любых выбранных положительных целых чисел и таких что , конструкция будет включать в себя проводов, и будет сделана из -сортировщиков, глубина которых в худшем случае при . (Стоит отметить, что асимптотическое здесь относится к , а не к ).Содержание
Разделители
Сначала введем все необходимые понятия для построения сортирующей сети.
Определение: |
Идеальным разделителем будем называть сеть, выходные провода которой разделены на K блоков одинакового размера, таких, что принимая на вход любые | значений, сеть размещает первые минимальные по величине ключи в первый блок, следующие по величине ключи – во второй, и т.д.
Эти идеальные разделители могут быть использованы как модули для построения сортирующей сети на
входов, где для некоторого положительного числа d. Такая сеть будет представлять собой композицию сетей , где – парраллельная композиция идеальных разделителей одинакового размера.Конструкция сети
лемма 3.1 Если
тогда
когда
лемма 3.2 Если тогда или
Анализ сети
лемма 4.2
dfrac
лемма 4.3
Лемма 4.4
Лемма 4.5
Конструкция разделителей
где
Теорема 5.1
Анализ разделителей
лемма 6.3
Доказательство
Будем считать, что
и .
Тогда получим, что
и , где .