Сортировочные сети с особыми свойствами — различия между версиями
Kabanov (обсуждение | вклад) |
Kabanov (обсуждение | вклад) |
||
Строка 23: | Строка 23: | ||
}} | }} | ||
=== Примеры === | === Примеры === | ||
+ | [[Файл:periodic_sorting_network.png|thumb]] | ||
+ | Для начала раскрасим все линии красным или синим цветом в соответствии со следующими правилами: | ||
+ | Показанная на рисунке сеть следует считать иллюстрацией рекурсивного построения t-уровневой сети при <tex>n=2^t</tex> в случае <tex>t=4</tex>. Если пронумеровать линии входов от <tex>0</tex> до <tex>2^t-1</tex>, то <tex>l</tex>-й уровень имеет компараторы <tex>[i:j]</tex>, где <tex>i \mod 2^{t+1-l} < 2^{t-l}</tex> и <tex>j=i 0x (2^{t+1-l}-1)</tex>. Всего существует <tex>t\cdot2^{t-1}</tex> компараторов, как и в сети битонного слияния. | ||
+ | |||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
Если входные числа <tex>2^k</tex> - упорядочены при некотором <tex>k \geqslant 1</tex>, то периодическая сеть приведет к выходу, который будет <tex>2^{k-1}</tex> - упорядочен. | Если входные числа <tex>2^k</tex> - упорядочены при некотором <tex>k \geqslant 1</tex>, то периодическая сеть приведет к выходу, который будет <tex>2^{k-1}</tex> - упорядочен. | ||
|proof= | |proof= | ||
− | + | [[Файл:periodic_sorting_network_proof.png|thumb]] | |
Если <tex>i \mod 4 = </tex> | Если <tex>i \mod 4 = </tex> | ||
Строка 43: | Строка 47: | ||
}} | }} | ||
Таким образом мы сможем сортировать <tex>2^t</tex> чисел, пропуская их через сеть <tex>t</tex> раз. | Таким образом мы сможем сортировать <tex>2^t</tex> чисел, пропуская их через сеть <tex>t</tex> раз. | ||
+ | |||
+ | == См. также == | ||
+ | * [[Примитивные сортирующие сети]] | ||
+ | * [[Сортирующие сети для квадратичных сортировок]] | ||
+ | |||
+ | == Ссылки == | ||
+ | * Т. Кормен. «Алгоритмы. Построение и анализ» второе издание, Глава 27.5, стр. 819 | ||
+ | * Д.Э. Кнут. «Искусство программирования: Сортировка и поиск" Том 3, Глава 5.3.4, стр. 275 | ||
+ | |||
+ | [[Категория: Дискретная математика и алгоритмы]] | ||
+ | [[Категория: Сортирующие сети]] |
Версия 17:35, 10 июня 2013
Содержание
Нечетно-четная сортирующая сеть
Определение: |
Нечетно-четная сортирующая сеть (odd-even sorting network) на | входов — это транспозиционная сортирующая сеть с уровнями сравнивающих устройств, соединенных между собой по схеме "кирпичной кладки".
Примеры
Как видно, из рисунка, при
и линия соединена сравнивающим устройством на глубине c линией , если .Теорема: |
Нечетно-четная сортирующая сеть действительно является сортирующей сетью. |
Перестановочная сеть
Определение: |
Перестановочная сортирующая сеть (permutation sorting network) — сеть сортировки, содержащая на | входов и выходов переключатели, позволяющие соединять входы сети с её выходами в соответствии с любой из возможных перестановок.
Примеры
Периодическая сортировочная сеть
Определение: |
Периодическая сортировочная сеть (periodic sorting network) на | входов — сеть сортировки, содержащая входов</tex>, где - уровень сети, и у которой каждый уровень может быть построен с помощью рекурсивного алгоритма.
Примеры
Для начала раскрасим все линии красным или синим цветом в соответствии со следующими правилами: Показанная на рисунке сеть следует считать иллюстрацией рекурсивного построения t-уровневой сети при
в случае . Если пронумеровать линии входов от до , то -й уровень имеет компараторы , где и . Всего существует компараторов, как и в сети битонного слияния.Теорема: |
Если входные числа - упорядочены при некотором , то периодическая сеть приведет к выходу, который будет - упорядочен. |
Доказательство: |
Если
Теперь можно увидеть, что первые уровней сети состоят из двух отдельных сетей: одна из красных линий, а другая - из синих линий. Компараторы на -м уровне образуют сеть слияния, как в сетях битонного или четно-нечетного слияния. Таким образом, мы получили искомый результат при .Такой способ так же годится и для случая k=2. Если вход 4-упорядочен, красные линии содержат Теперь для чисел, которые являются 2-упорядоченными; то же самое можно сказать относительно синих линий. Очевидно, что результат является 2-упорядоченным. можно предположить, что k<=t. Первые уровней разделяются на отдельных сетей размеров , каждая из которых является -упорядоченной в случае ; следовательно, линии являются -упорядоченными после уровней. Последующие уровни, очевидно, сохраняют -упорядоченность, так как они обладают "вертикальной" периодичностью порядка . |
Таким образом мы сможем сортировать
чисел, пропуская их через сеть раз.См. также
Ссылки
- Т. Кормен. «Алгоритмы. Построение и анализ» второе издание, Глава 27.5, стр. 819
- Д.Э. Кнут. «Искусство программирования: Сортировка и поиск" Том 3, Глава 5.3.4, стр. 275