Сортировочные сети с особыми свойствами — различия между версиями
Kabanov (обсуждение | вклад) |
Kabanov (обсуждение | вклад) |
||
| Строка 5: | Строка 5: | ||
}} | }} | ||
=== Примеры === | === Примеры === | ||
| + | {| cellpadding="0" | ||
| + | | [[Файл:odd-even_sorting_network(n=5).png|250px]] || [[Файл:odd-even_sorting_network(n=6v1).png|250px]] || [[Файл:odd-even_sorting_network(n=6v2).png|250px]] | ||
| + | |- | ||
| + | | Для <tex>n=5</tex> || Для <tex>n=6</tex> (Вариант 1) || Для <tex>n=6</tex> (Вариант 2) | ||
| + | |} | ||
Как видно, из рисунка, при <tex>i=1,2,...,n</tex> и <tex>d=1,2,...,n</tex> линия <tex>i</tex> соединена сравнивающим устройством на глубине <tex>d</tex> c линией <tex>j=i+(-1)^{i+d}</tex>, если <tex>1 \leqslant j \leqslant n</tex>. | Как видно, из рисунка, при <tex>i=1,2,...,n</tex> и <tex>d=1,2,...,n</tex> линия <tex>i</tex> соединена сравнивающим устройством на глубине <tex>d</tex> c линией <tex>j=i+(-1)^{i+d}</tex>, если <tex>1 \leqslant j \leqslant n</tex>. | ||
| + | |||
| + | Так же вполне очевидно, что если <tex>n</tex> четно, что имеется 2 варианта построения. | ||
| + | |||
| + | Одним из основных достоинств является то, что такую сортировку легко реализовать аппаратно, поскольку выполняются попеременно только 2 вида действий. | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
Нечетно-четная сортирующая сеть действительно является сортирующей сетью. | Нечетно-четная сортирующая сеть действительно является сортирующей сетью. | ||
|proof= | |proof= | ||
| + | Докажем теорему методом математической индукции по <tex>n</tex> линиям. | ||
| + | |||
}} | }} | ||
== Перестановочная сеть == | == Перестановочная сеть == | ||
Версия 18:10, 10 июня 2013
Содержание
Нечетно-четная сортирующая сеть
| Определение: |
| Нечетно-четная сортирующая сеть (odd-even sorting network) на входов — это транспозиционная сортирующая сеть с уровнями сравнивающих устройств, соединенных между собой по схеме "кирпичной кладки". |
Примеры
| |
|
|
| Для | Для (Вариант 1) | Для (Вариант 2) |
Как видно, из рисунка, при и линия соединена сравнивающим устройством на глубине c линией , если .
Так же вполне очевидно, что если четно, что имеется 2 варианта построения.
Одним из основных достоинств является то, что такую сортировку легко реализовать аппаратно, поскольку выполняются попеременно только 2 вида действий.
| Теорема: |
Нечетно-четная сортирующая сеть действительно является сортирующей сетью. |
| Доказательство: |
| Докажем теорему методом математической индукции по линиям. |
Перестановочная сеть
| Определение: |
| Перестановочная сортирующая сеть (permutation sorting network) — сеть сортировки, содержащая на входов и выходов переключатели, позволяющие соединять входы сети с её выходами в соответствии с любой из возможных перестановок. |
Примеры
Периодическая сортировочная сеть
| Определение: |
| Периодическая сортировочная сеть (periodic sorting network) на входов — сеть сортировки, содержащая входов</tex>, где - уровень сети, и у которой каждый уровень может быть построен с помощью рекурсивного алгоритма. |
Примеры
Для начала раскрасим все линии красным или синим цветом в соответствии со следующими правилами: Показанная на рисунке сеть следует считать иллюстрацией рекурсивного построения t-уровневой сети при в случае . Если пронумеровать линии входов от до , то -й уровень имеет компараторы , где и . Всего существует компараторов, как и в сети битонного слияния.
| Теорема: |
Если входные числа - упорядочены при некотором , то периодическая сеть приведет к выходу, который будет - упорядочен. |
| Доказательство: |
|
Если
Теперь можно увидеть, что первые уровней сети состоят из двух отдельных сетей: одна из красных линий, а другая - из синих линий. Компараторы на -м уровне образуют сеть слияния, как в сетях битонного или четно-нечетного слияния. Таким образом, мы получили искомый результат при . Такой способ так же годится и для случая k=2. Если вход 4-упорядочен, красные линии содержат чисел, которые являются 2-упорядоченными; то же самое можно сказать относительно синих линий. Очевидно, что результат является 2-упорядоченным. Теперь для можно предположить, что k<=t. Первые уровней разделяются на отдельных сетей размеров , каждая из которых является -упорядоченной в случае ; следовательно, линии являются -упорядоченными после уровней. Последующие уровни, очевидно, сохраняют -упорядоченность, так как они обладают "вертикальной" периодичностью порядка . |
Таким образом мы сможем сортировать чисел, пропуская их через сеть раз.
См. также
Ссылки
- Т. Кормен. «Алгоритмы. Построение и анализ» второе издание, Глава 27.5, стр. 819
- Д.Э. Кнут. «Искусство программирования: Сортировка и поиск" Том 3, Глава 5.3.4, стр. 275