Участник:Dominica
Ажтаи (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). К счастью, схему можно переделать так, чтобы она описывала сортирующую сеть глубины : идеальные разделители можно заменить на более слабые модули константной глубины,чья слабость будет компенсироваться более сложным перемещением ключей через дерево.Слабые модули мы назовем сепараторами. У каждого такого сепаратора есть а выходных проводов, которые делятся на блоки
так, что ;Как правило, "обрамляющие блоки"
и гораздо меньше всех остальных. В каком-то смысле, можно сказать, что сепаратор аппроксимирует идеальный разделитель. Тогда будем измерять точность аппроксимации величинами и . Сортирующая сеть, с такими же выходными проводами как и наш сепаратор, принимая на вход I, состоящее из a отдельных проводов, распределяет соответствующие в выходные блоки . Сераратор же распределяет вход таким образом, что 1) для каждого не более ключей из не попадут в . 2)для каждого целого j такого, что не более из самых маленьких чисел могут не попасть в и не более из самых больших чисел могут не попасть в Что касается перемещения значений в дереве, то в момент времени все проводов входят в корень. Между временами и каждый узел , в который входят какие-нибудь провода, использует эти а проводов как вход для сепаратора, с разумно выбранным размером для выходных блоков. Провода из каждого выходного блока посывлаются в того сына узла а провода попавшие в или . (Если . - корень, то и должны быть пустыми. Так как и сравнительно маленькие, то большинство значений провалится ниже к листам дерева; так как сепаратор не идеальный, то некоторые ключи могут быть посланы вниз в неправильном направлениии. Свойство 1) гарантирует, что очень малое количество собъется с пути, а свойство 2) гарантирует, что большинство из этих ключей вернутся назад и смогут исправить свое положение позже.Конструкция сети
Пускай число детей у каждой вершины
будет степенью двойки, и число входных ключей - . В любой момент времени все проводов распределены внутри дерева таким образом, что число проводов, содержащихся в вершине зависит только от времени и глубины на которой находится вершина . Тогда пускай будет описывать это число. Значение зависит от двух параметров и , таких, что иВ самом начале, число проводов, входящих в корень :
При переходе к
корень делит проводов на групп и отправляет их своим детям:
При переходе к
каждый узел, находящийся на 1 уровне отправляет своих проводов обратно в корень и распределяет оставшиеся провода равномерно среди детей :
Обозначим
и - верхний и нижний уровни, соответственно, такие что на на них содержатся непустые узлы на момент времени . Иначе говоря, - это наименьшее , такое что , а - это наибольшее , такое чтоТак получаем, что
Значения
и расходятся в момент и сойдутся, когда перемещение значений по сети и их сортировка будет окончена. Запишем иПускай
будет наименьшим неотрицательным челым числом, таким что
Пускай
будет наименьшим челым числом, таким что
Поскольку
получаем, что для любого и поэтому
для любого
. Нижнее значение может уменьшаться и увеличиваться, но в среднем оно спадает со скоростью уровней на каждые итераций. Верхнее же значение первые итераций колеблется между значениями 0 и 1 ,а дальше начинает так же уменьщаться со скоростью уровней на каждые итераций. Обозначим за время, когда верхнее и нижнее значения совпадут: - это наибольшее целое положтельное число такое, что: Также (Это будет понятно из дальнейшего изложения. Так же будет проверено, что общее значение и меньше, чем )Значение можно рассматривать как вместимость узла на уровне во время : для любого , такого, что имеем ,
где и
(Если тогда ) Начиная с имеем
Начиная с
когда . Это следует из того, что все целые.Чтобы как-то перераспределить провода между временами
и каждый узел на уровне i посылает значений своим родителям и значений каждому из своих детей. Если , то
Отметим, что для все
и целые: в частности, если , тоЕсли сепараторы, используемые для построения сети достаточно хорошие, то(мы проверим чуто позже) существует такое целое число
, не превосходящее , но при этом отличающееся от не более чем на константу, не зависящую от , такое, что для любого узла , находящегося на уровне , все ключи, являющиеся потомками узла в момент времени адресуются толко к ключам, являющимся потомками . Следовательно, построеная сеть может быть дополнена до сортирующей единственным слоем из параллельных сортирующих сетей, каждая из которых будет содержать входных проводов.
Далее мы будем использовать следующие утверждения
Лемма 3.1 Если тогда
Доказательство
Это утверждение следует из того
Непосредственно, когда
и подставляется
где при .
лемма 3.2 Если тогда или
Доказательство Если
, тогда , а значит и .