Изменения

Перейти к: навигация, поиск

Сортирующие сети для квадратичных сортировок

153 байта добавлено, 16:43, 24 мая 2015
Нет описания правки
Пусть <tex> S(n) = 2n - 3 </tex> — количество слоев в сети сортировки.
При переходе от сортирующей сети с <tex>n</tex> входами к сети с <tex>n + 1</tex> входами, добавляем <tex> n </tex> дополнительных компараторов(<tex>[1:2][2:3]\dots[n - 1:n]</tex> или <tex>[n - 1:n][n - 2:n - 1]\dots[1:2]</tex>, т.к. возможны две стратегии добавления). В полученной "треугольной" сети можно заметить, что <tex>n - 1</tex> компаратор входят в уже существующие слои(<tex>[2:3][3:4]\dots[n - 1:n] </tex> или <tex>[n - 1:n][n - 2:n - 3]\dots[2:3]</tex>), но тогда один компаратор из предыдущей сортирующий сети и один из добавленных не вносят вклад в количество слоев. Тогда видно, что количество слоев увеличилось на <tex> 2 = S(n + 1) - S(n) </tex>, т.е. наш переход выполняется и наша формула верна. Что и требовалось доказать.
}}
Сеть для сортировки выбором выглядит иначе. Будем компаратор "вкладывать" в компаратор, для получения слоев.
[[Файл:ChoosesortparralelChoosesortparralel2.png‎]]
{{
Утверждение
|statement=
В результирующей сети будет <tex>2n - 3</tex> слойслоев, где <tex> n </tex> — количество входов.
|proof=
Определим операцию вложения компаратора <tex> [i:j] </tex> в компаратор <tex> [t:s] </tex>. Для этого : разместим компаратор <tex> [i:j] </tex> и <tex> [t:s] </tex> на одном слое, так, что <tex> t < i < j < s </tex>.
Теперь воспользуемся принципом математической индукции.
Пусть <tex> S(n) </tex> — количество слоев в сети сортировки с <tex> n </tex> входами.
При переходе от сортирующей сети с <tex>n</tex> входами к сети с <tex>n + 1</tex> входами, добавляем <tex> n </tex> компаратор<tex>\left( [0:1] \dots [0:n]\right) </tex>. Заметим, что в <tex> n - 2 </tex> добавленных компараторов можно вложить <tex> n - 2 </tex> компараторов из предыдущей сети, так, что условие слоя вкладывая один компаратор в другой, образуется новый слой, т.е. количество слоев не нарушатсяизменяется. Тогда останется два компаратора: <tex>[0:1], [0:2] </tex> в которые ничего нельзя вложить, чтобы не нарушить условие вложения. Тогда количество слоев изменяется на <tex> 2 = S(n + 1) - S(n)</tex>. Однако, начиная с <tex> n = 4 </tex> можно перенести свободные компараторы и слить их в один слой, но при этом сеть перестает быть сортирующей (при <tex> n = 4 </tex> ошибка будет возникать на векторе <tex> 0100 [0,1,0,0] </tex>). Тогда наш переход выполняется и наша формула верна. Что и требовалось доказать.
}}
59
правок

Навигация