Ажтаи (Ajtai), Комлос (Komlos) и Шимереди (Szemeredi) сконструировали сортирующую сеть на N входов глубины O(logN), при они не углублялись в исследование значения константы, получавшейся при правильном соблюдении необходимой ассимптотики. Впоследствии Патерсон выяснил, что O(logN) можно заменить на clog2N с константой приблизительно равной 6100. Здесь будет описана более поздняя реализация, которая включает в себя меньшую константу c, а именно, будет доказано, что для любого целого числа N такого,что N≥278 существует сортирующая сеть на N входов, такая, что глубина в худшем случае будет 1830log2N−58657.
Основными составяющими этой конструкции будут сортирующие сети на M входов, такие ,что M относительно мало. Мы назовем их M-сортировщиками. Для любых выбранных положительных целых чисел M и N таких что N≥M, конструкция будет включать в себя N проводов, и будет сделана из M-сортировщиков, глубина которых в худшем случае (48+о(1))logMN+115 при M→inf.
(Стоит отметить, что асимптотическое o(1) здесь относится к M, а не к N).
Разделители
Сначала введем все необходимые понятия для построения сортирующей сети.
Определение: |
Идеальным разделителем будем называть сеть, выходные провода которой разделены на K блоков одинакового размера, таких, что принимая на вход любые a значений, сеть размещает первые a/k минимальные по величине ключи в первый блок, следующие a/k по величине ключи – во второй, и т.д. |
Эти идеальные разделители могут быть использованы как модули для построения сортирующей сети на N входов, где N=kd для некоторого положительного числа d. Такая сеть будет представлять собой композицию сетей N0,N1,N2..Nd−1, где Nt – парраллельная композиция kt идеальных разделителей одинакового размера.
Конструкция сети
α∗(t)=tlog1ν−logN+log(2Aνk3)logA
ω∗(t)=tlog1ν+log(Aνk)logAk
α(t)≥α∗(t),α(t)≡tmod2
ω(t)≥ω∗(t),ω(t)≡tmod2
O(logN)
clog2N
π(α(t),t)={0,если α(t+1)>α(t),νAKc(a(t),t),если α(t+1)>α(t).
π(i,t)=Aνk−1A2k2c(i,t),если α(t)<i<ω(t),
π(ω(t),t)={Aνk−1A2k2c(ω(t),t), ω(t+1)>ω(t),α(ω(t),t),если ω(t+1)<ω(t),
χ(α(t),t)={1kc(α(t),t), α(t+1)>α(t),Ak−νAk2c(α(t),t),если α(t+1)<α(t),
χ(i,t)=Ak−νAk2c(i,t),если α(t)<i<ω(t),
π(ω(t),t)={α(ω(t+1),t+1)), ω(t+1)>ω(t),0,если ω(t+1)<ω(t),
π(i,t)
χ(i,t)
α(t+1)<α(t)
c(α(t),t)=(A/ν)c(α(t+1),t+1)≥2Ak2/ν
лемма 3.1 Если α(i,t)≠0 тогда
d∑j=0kj−ia(j,t)={Nk−i, i=α(t),Nk−i−c(i,t)A2k2, i>α(t),
d∑j=0kja(j,t)=N
i=α(t)
a(j,t)={0, j≢
c(j, t) = c(i, t)A^{j-i} когда i\ge\alpha(t)+2
лемма 3.2 Если \alpha(t + 1) \gt \alpha(t) тогда \alpha(t) = 0 или c(\alpha(t),t)\le Ak^2/\nu
\alpha(t+1) \gt \alpha(t) \gt 0
\alpha(t) - 1 \lt \alpha^*(t + 1)
c(\alpha(t),t) \lt 2Ak^2/\nu
Анализ сети
(\frac{1}{k} + \frac{\mu\delta kA^2}{1 - \delta^2k^2A^2})c(i,t)
\frac{1}{k}(Nk^{-i} - c(i,t))
\sum\limits_{j\ge 1} k^{2j-1}\mu\delta^{2j-1}c(i+2j, t)
\sum\limits_{j\ge 1} (k\delta)^{2j-1}c(i+2j, t) = c(i,t)\sum\limits_{j\ge 1} (k\delta)^{2j-1}A^{2j} \lt c(i,t)\frac{\delta k A^2}{1-\delta^2k^2A^2}
\frac{1}{k}Nk^{-i}
лемма 4.2
(\mu + (k - 1)\frac{\mu\delta k A^2}{1 - \delta^2k^2A^2} + \frac{A\nu k - 2A\nu + 1}{2k^2A^2} + \varepsilon_B)c(i,t)
c=c(i, t), \quad a=a(i,t),\quad \pi=\pi(i,t), \quad \chi=\chi(i, t)
\Delta_1 = \frac{\mu\delta kA^2}{1-\delta^2k^2A^2}c
\Delta_2 = \frac{\nu}{1 - \delta^2k^2A^2}c
\Delta =
\begin{cases}
\Delta_1,&\text{ $i = \alpha(t) \lt \alpha(t+1)$,}\\
\Delta_2,&\text{ $i = \omega(t) \lt \omega(t+1)$,}\\
\Delta_1 + \Delta_2,&\text{если $\alpha(t) \lt i \lt \omega(t) \quad ||\quad i = \alpha(t) \gt \alpha(t + 1), t \ge 2$,}
\end{cases}
(k - 1)\Delta - \frac{1}{2}\pi \le (k - 1)\Delta_1 + \frac{A\nu k - 2A\nu + 1}{2A^2k^2}c
лемма 4.3
\varepsilon^* \le \frac{\mu}{k},
(\mu + (k - 1)\frac{\mu\delta k A^2}{1 - \delta^2k^2A^2} + \frac{A\nu k - 2A\nu + 1}{2k^2A^2} + \varepsilon_B)\frac{1}{A\nu} + \mu\delta\frac{Ak}{\nu} \le \mu
Лемма 4.4
\mu \le \frac{\nu}{Ak^2},
\mu\le\frac{1}{2}\delta_F\frac{A\nu k - 1}{A^2k^2},
\varepsilon_F\frac{1}{A\nu} + \delta^2\frac{Ak}{\nu} \le \delta
Конструкция разделителей
Анализ сепараторов
Доказательство