Сортировочные сети с особыми свойствами — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «== Нечетно-четная сортирующая сеть == {{Определение |definition= <b>Нечетно-четная сортирующая се...»)
 
Строка 4: Строка 4:
 
<b>Нечетно-четная сортирующая сеть (odd-even sorting network)</b> на <tex>n</tex> входов <tex><a_1,a_2,...,a_n></tex> {{---}} это транспозиционная сортирующая сеть с <tex>n</tex> уровнями сравнивающих устройств, соединенных между собой по схеме "кирпичной кладки".
 
<b>Нечетно-четная сортирующая сеть (odd-even sorting network)</b> на <tex>n</tex> входов <tex><a_1,a_2,...,a_n></tex> {{---}} это транспозиционная сортирующая сеть с <tex>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<=j<=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>.
 
{{Теорема
 
{{Теорема
 
|statement=
 
|statement=
Строка 13: Строка 14:
 
{{Определение
 
{{Определение
 
|definition=
 
|definition=
<b>Перестановочная сортирующая сеть (permutation sorting network)</b> {{---}} сеть сортировки, содержащая на <tex>n</tex> входов и <tex>n</tex> выходов переключатели, позволяющие соединять входы сети с её выходами в соответствии с любой из <tex>n!</tex> возможных перестановок.  
+
<b>Перестановочная сортирующая сеть (permutation sorting network)</b> {{---}} сеть сортировки, содержащая на <tex>n</tex> входов и <tex>n</tex> выходов переключатели, позволяющие соединять входы сети с её выходами в соответствии с любой из <tex>n!</tex> возможных перестановок.
 
}}
 
}}
 +
=== Примеры ===
 
== Периодическая сортировочная сеть ==
 
== Периодическая сортировочная сеть ==
 +
{{Определение
 +
|definition=
 +
<b>Периодическая сортировочная сеть (periodic sorting network)</b> на <tex>n</tex> входов <tex><a_1,a_2,...,a_n></tex> {{---}} сеть сортировки, содержащая <tex>n = 2^t</tex> входов</tex>, где <tex>t</tex> - уровень сети, и у которой каждый уровень может быть построен с помощью рекурсивного алгоритма.
 +
}}
 +
=== Примеры ===
 +
{{Теорема
 +
|statement=
 +
Если входные числа <tex>2^k</tex> - упорядочены при некотором <tex>k \geqslant 1</tex>, то периодическая сеть приведет к выходу, который будет <tex>2^{k-1}</tex> - упорядочен.
 +
|proof=
 +
Для начала раскрасим все линии красным или синим цветом в соответствии со следующими правилами:
 +
 +
Если <tex>i \mod 4 = </tex>
 +
* <tex>0 \Rightarrow</tex> красный
 +
* <tex>1 \Rightarrow</tex> синий
 +
* <tex>2 \Rightarrow</tex> синий
 +
* <tex>3 \Rightarrow</tex> красный
 +
 +
Теперь можно увидеть, что первые <tex>t-1</tex> уровней сети состоят из двух отдельных сетей: одна из <tex>2^{t-1}</tex> красных линий, а другая - из <tex>2^{t-1}</tex> синих линий. Компараторы на <tex>t</tex>-м уровне образуют сеть слияния, как в сетях битонного или четно-нечетного слияния. Таким образом, мы получили искомый результат при <tex>k=1</tex>.
 +
 +
Такой способ так же годится и для случая k=2. Если вход 4-упорядочен, красные линии содержат <tex>2^{t-1}</tex> чисел, которые являются 2-упорядоченными; то же самое можно сказать относительно синих линий.
 +
Очевидно, что результат является 2-упорядоченным.
 +
 +
Теперь для <tex>k \geqslant 2</tex> можно предположить, что k<=t. Первые <tex>t-k+2</tex> уровней разделяются на <tex>2^{k-2}</tex> отдельных сетей размеров <tex>2^{t-k+2}</tex>, каждая из которых является <tex>2</tex>-упорядоченной в случае <tex>k=2</tex>; следовательно, линии являются <tex>2^{k-1}</tex>-упорядоченными после <tex>t-k+2</tex> уровней. Последующие уровни, очевидно, сохраняют <tex>2^{k-1}</tex>-упорядоченность, так как они обладают "вертикальной" периодичностью порядка <tex>2^{k-2}</tex>.
 +
}}
 +
Таким образом мы сможем сортировать <tex>2^t</tex> чисел, пропуская их через сеть <tex>t</tex> раз.

Версия 16:58, 10 июня 2013

Нечетно-четная сортирующая сеть

Определение:
Нечетно-четная сортирующая сеть (odd-even sorting network) на [math]n[/math] входов [math]\lt a_1,a_2,...,a_n\gt [/math] — это транспозиционная сортирующая сеть с [math]n[/math] уровнями сравнивающих устройств, соединенных между собой по схеме "кирпичной кладки".

Примеры

Как видно, из рисунка, при [math]i=1,2,...,n[/math] и [math]d=1,2,...,n[/math] линия [math]i[/math] соединена сравнивающим устройством на глубине [math]d[/math] c линией [math]j=i+(-1)^{i+d}[/math], если [math]1 \leqslant j \leqslant n[/math].

Теорема:
Нечетно-четная сортирующая сеть действительно является сортирующей сетью.

Перестановочная сеть

Определение:
Перестановочная сортирующая сеть (permutation sorting network) — сеть сортировки, содержащая на [math]n[/math] входов и [math]n[/math] выходов переключатели, позволяющие соединять входы сети с её выходами в соответствии с любой из [math]n![/math] возможных перестановок.

Примеры

Периодическая сортировочная сеть

Определение:
Периодическая сортировочная сеть (periodic sorting network) на [math]n[/math] входов [math]\lt a_1,a_2,...,a_n\gt [/math] — сеть сортировки, содержащая [math]n = 2^t[/math] входов</tex>, где [math]t[/math] - уровень сети, и у которой каждый уровень может быть построен с помощью рекурсивного алгоритма.

Примеры

Теорема:
Если входные числа [math]2^k[/math] - упорядочены при некотором [math]k \geqslant 1[/math], то периодическая сеть приведет к выходу, который будет [math]2^{k-1}[/math] - упорядочен.
Доказательство:
[math]\triangleright[/math]

Для начала раскрасим все линии красным или синим цветом в соответствии со следующими правилами:

Если [math]i \mod 4 = [/math]

  • [math]0 \Rightarrow[/math] красный
  • [math]1 \Rightarrow[/math] синий
  • [math]2 \Rightarrow[/math] синий
  • [math]3 \Rightarrow[/math] красный

Теперь можно увидеть, что первые [math]t-1[/math] уровней сети состоят из двух отдельных сетей: одна из [math]2^{t-1}[/math] красных линий, а другая - из [math]2^{t-1}[/math] синих линий. Компараторы на [math]t[/math]-м уровне образуют сеть слияния, как в сетях битонного или четно-нечетного слияния. Таким образом, мы получили искомый результат при [math]k=1[/math].

Такой способ так же годится и для случая k=2. Если вход 4-упорядочен, красные линии содержат [math]2^{t-1}[/math] чисел, которые являются 2-упорядоченными; то же самое можно сказать относительно синих линий. Очевидно, что результат является 2-упорядоченным.

Теперь для [math]k \geqslant 2[/math] можно предположить, что k<=t. Первые [math]t-k+2[/math] уровней разделяются на [math]2^{k-2}[/math] отдельных сетей размеров [math]2^{t-k+2}[/math], каждая из которых является [math]2[/math]-упорядоченной в случае [math]k=2[/math]; следовательно, линии являются [math]2^{k-1}[/math]-упорядоченными после [math]t-k+2[/math] уровней. Последующие уровни, очевидно, сохраняют [math]2^{k-1}[/math]-упорядоченность, так как они обладают "вертикальной" периодичностью порядка [math]2^{k-2}[/math].
[math]\triangleleft[/math]

Таким образом мы сможем сортировать [math]2^t[/math] чисел, пропуская их через сеть [math]t[/math] раз.