Участник:Dominica — различия между версиями
Dominica (обсуждение | вклад) |
Dominica (обсуждение | вклад) м (→Разделители: -страшный черновик-) |
||
Строка 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> идеальных разделителей одинакового размера. <tex>k^{d - t}</tex> Выходных проводов уровня <tex>N_t</tex> разделены на <tex>k</tex> блоков одинакового размерв и каждый из этих блоков формирует вход для идеального разделителя из N_{t+1}. |
+ | Можно рассмотреть другую интерпретацию этой конструкции. k^d входных данных мы будем рассматривать как листья полного k-ичного дерева глубины d; каждый модуль(разделитель) из N_t будем считать узлом, находящимся на высоте t в нашем дереве. Будем считать, что в каждый момент времени t = 0, 1, 2, ... в - 1 входные провода распределены по всему уровню t нашего дерева. В то же время, каждый узел х на t уровне принимает k^{d - t} проводов и эти провода затем используются как вход для идеального разделителя который разбивает их на k блоков одинакового размера в промежуток времени между t и t + 1. Выходные провода из j получившегося блока идут в j ребенка вершины x. К моменту времени d каждый лист дерева содершит в себе только один провод, а этот провод содержит в себе значение, которое и приписывается к листу. | ||
− | <tex>\ | + | К сожалению, эта схема описывает сортирующую сеть глубины <tex>\Omega((\log_k N)(\log_m N)) </tex>: каждый идеальный разделитель на а проводов, если его делать из М-разделителей, должен иметь глубину более чем <tex>\log_M(\dfrac{k-1}{k}a). (Чтобы осознать это, заметим, что для каждого выхода y должно быть более чем <tex>\dfrac{k -1}{k}a</tex> входов x , таких, что ключ мог бы дойти от x до y). К счастью, схему можно переделать так, чтобы она описывала сортирующую сеть глубины <tex>O(\log_M N)</tex> : идеальные разделители можно заменить на более слабые модули константной глубины,чья слабость будет компенсироваться более сложным перемещением ключей через дерево. |
− | <tex>\ | + | Слабые модули мы назовем сепараторами. У каждого такого сепаратора есть а выходных проводов, которые делятся на блоки <tex> F_1, B_1, B_2, \dots, B_k, F_2 </tex> так, что <tex> |F_1| = |F_2|</tex> <tex> |B_1| = |B_2| = \dots = |B_k| </tex>; |
− | + | Как правило, "обрамляющие блоки" <tex>F_1</tex> и <tex>F_2</tex> гораздо меньше всех остальных. В каком-то смысле, можно сказать, что сепаратор аппроксимирует идеальный разделитель. | |
− | |||
− | |||
− | <tex> | ||
− | |||
− | |||
− | <tex> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Версия 22:37, 19 мая 2015
Ажтаи (Ajtai), Комлос (Komlos) и Шимереди (Szemeredi) сконструировали сортирующую сеть на N входов глубины
, при они не углублялись в исследование значения константы, получавшейся при правильном соблюдении необходимой ассимптотики. Впоследствии Патерсон выяснил, что можно заменить на с константой приблизительно равной . Здесь будет описана более поздняя реализация, которая включает в себя меньшую константу , а именно, будет доказано, что для любого целого числа такого,что существует сортирующая сеть на входов, такая, что глубина в худшем случае будет .Основными составяющими этой конструкции будут сортирующие сети на
входов, такие ,что относительно мало. Мы назовем их -сортировщиками. Для любых выбранных положительных целых чисел и таких что , конструкция будет включать в себя проводов, и будет сделана из -сортировщиков, глубина которых в худшем случае при . (Стоит отметить, что асимптотическое здесь относится к , а не к ).Разделители
Сначала введем все необходимые понятия для построения сортирующей сети.
Определение: |
Идеальным разделителем будем называть сеть, выходные провода которой разделены на K блоков одинакового размера, таких, что принимая на вход любые | значений, сеть размещает первые минимальные по величине ключи в первый блок, следующие по величине ключи – во второй, и т.д.
Эти идеальные разделители могут быть использованы как модули для построения сортирующей сети на
входов, где для некоторого положительного числа d. Такая сеть будет представлять собой композицию сетей , где – парраллельная композиция идеальных разделителей одинакового размера. Выходных проводов уровня разделены на блоков одинакового размерв и каждый из этих блоков формирует вход для идеального разделителя из N_{t+1}. Можно рассмотреть другую интерпретацию этой конструкции. k^d входных данных мы будем рассматривать как листья полного k-ичного дерева глубины d; каждый модуль(разделитель) из N_t будем считать узлом, находящимся на высоте t в нашем дереве. Будем считать, что в каждый момент времени t = 0, 1, 2, ... в - 1 входные провода распределены по всему уровню t нашего дерева. В то же время, каждый узел х на t уровне принимает k^{d - t} проводов и эти провода затем используются как вход для идеального разделителя который разбивает их на k блоков одинакового размера в промежуток времени между t и t + 1. Выходные провода из j получившегося блока идут в j ребенка вершины x. К моменту времени d каждый лист дерева содершит в себе только один провод, а этот провод содержит в себе значение, которое и приписывается к листу.К сожалению, эта схема описывает сортирующую сеть глубины
: каждый идеальный разделитель на а проводов, если его делать из М-разделителей, должен иметь глубину более чем входов x , таких, что ключ мог бы дойти от x до y). К счастью, схему можно переделать так, чтобы она описывала сортирующую сеть глубины : идеальные разделители можно заменить на более слабые модули константной глубины,чья слабость будет компенсироваться более сложным перемещением ключей через дерево.Слабые модули мы назовем сепараторами. У каждого такого сепаратора есть а выходных проводов, которые делятся на блоки
так, что ;Как правило, "обрамляющие блоки"
и гораздо меньше всех остальных. В каком-то смысле, можно сказать, что сепаратор аппроксимирует идеальный разделитель.