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

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 49: Строка 49:
 
В результирующей сети будет <tex>2n - 3</tex> слой, где <tex> n </tex> — количество входов.
 
В результирующей сети будет <tex>2n - 3</tex> слой, где <tex> n </tex> — количество входов.
 
|proof=  
 
|proof=  
Воспользуемся принципом математической индукции.
+
Определим операцию вложения компаратора <tex> [i:j] </tex> в компаратор <tex> [t:s] </tex>. Для этого разместим компаратор  <tex> [i:j] </tex> и <tex> [t:s] </tex> на одном слое, так, что <tex> t < i < j < s </tex>.
 +
 
 +
Теперь воспользуемся принципом математической индукции.
  
 
'''База индукции''':
 
'''База индукции''':
Строка 59: Строка 61:
 
Пусть <tex> S(n) </tex> - количество слоев в сети сортировки с <tex> n </tex> входами.
 
Пусть <tex> S(n) </tex> - количество слоев в сети сортировки с <tex> n </tex> входами.
  
При переходе от сортирующей сети с <tex>n</tex> входами к сети с <tex>n + 1</tex> входами, добавляем <tex> n </tex> компаратор. Заметим, что с <tex> n - 2 </tex> компараторами можно сделать слои, используя слои из предыдущей сортирующей сети. Это возможно сделать, т.к. <tex> n - 2 </tex> слоя из предыдущей сети вкладываются внутрь <tex> n - 2 </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 </tex>. Тем самым получили рекуррентное соотношение:
 
<tex> S(n + 1) = S(n) + 2 </tex> с начальными данными (<tex>S(2) = 1</tex>). Решением данного рекуррентного соотношения является <tex> S(n) = 2n - 3 </tex>. Что и требовалось доказать  
 
<tex> S(n + 1) = S(n) + 2 </tex> с начальными данными (<tex>S(2) = 1</tex>). Решением данного рекуррентного соотношения является <tex> S(n) = 2n - 3 </tex>. Что и требовалось доказать  
  

Версия 21:06, 20 мая 2015

Рассмотрим модели сортирующих сетей для квадратичных сортировок.

Сортирующие сети с последовательной сортировкой

На один слой будем устанавливать только один компаратор. Все последующие сети получаются простым моделированием соответствующих сортировок.

Сортировка пузырьком Сортировка вставками Сортировка выбором
Bubblesort.png Insertsort.png Choosesort.png

Сортирующие сети с параллельной сортировкой

На один слой будем устанавливать несколько компараторов.

Сортировка пузырьком и вставками

Заметим, если сжать последовательные сортирующие сети пузырьком и вставками, то результат будет одним и тем же. Этот факт легко заметить, сдвинув компараторы вправо и влево соответственно и разрешив выполнять одновременные вычисления.

Теорема:
В результирующей сети будет [math](2n - 3)[/math] слоев, где [math]n[/math] - количество входов.
Доказательство:
[math]\triangleright[/math]

Докажем данное утверждение по принципу математической индукции.

База индукции:

При [math] n = 2 [/math]. В сети всего два входа, на которых располагается один компаратор, тем самым наше предположение выполняется.

Шаг индукции:

Пусть [math] S(n) = 2n - 3 [/math] — количество слоев в сети сортировки.

При переходе от сортирующей сети с [math]n[/math] входами к сети с [math]n + 1[/math] входами, добавляем [math] n [/math] дополнительных компараторов. В полученной "треугольной" сети можно заметить, что [math]n - 1[/math] компаратор входят в уже существующие слои, но тогда один компаратор из предыдущей сортирующий сети и один из добавленных не вносят вклад в количество слоев. Тогда можно получить рекуррентное соотношение: [math] S(n + 1) = S(n) + 2 [/math].

Данное рекуррентное соотношение имеет решение [math] S(n) = 2n - 3 [/math]. Что и требовалось доказать.
[math]\triangleleft[/math]

Сортирующая сеть для [math] n = 6 [/math]:

Parralelsort.png

Сортировка выбором

Будем объединять в слой

Теорема:
В результирующей сети будет [math]2n - 3[/math] слой, где [math] n [/math] — количество входов.
Доказательство:
[math]\triangleright[/math]

Определим операцию вложения компаратора [math] [i:j] [/math] в компаратор [math] [t:s] [/math]. Для этого разместим компаратор [math] [i:j] [/math] и [math] [t:s] [/math] на одном слое, так, что [math] t \lt i \lt j \lt s [/math].

Теперь воспользуемся принципом математической индукции.

База индукции:

[math] n = 2 [/math]. В сети всего два входа, на которых располагается один компаратор, тем самым наше предположение выполняется.

Шаг индукции:

Пусть [math] S(n) [/math] - количество слоев в сети сортировки с [math] n [/math] входами.

При переходе от сортирующей сети с [math]n[/math] входами к сети с [math]n + 1[/math] входами, добавляем [math] n [/math] компаратор[math]\left( [0:1] \dots [0:n]\right) [/math]. Заметим, что в [math] n - 2 [/math] добавленных компараторов я могу вложить [math] n - 2 [/math] компараторов из предыдущей сети, так, что условие слоя не нарушатся. Тогда останется два компаратора: [math][0:1], [0:2] [/math] в которые я ничего не могу вложить, чтобы не нарушить условие вложения. Тогда количество слоев изменяется на [math] 2 [/math]. Тем самым получили рекуррентное соотношение:

[math] S(n + 1) = S(n) + 2 [/math] с начальными данными ([math]S(2) = 1[/math]). Решением данного рекуррентного соотношения является [math] S(n) = 2n - 3 [/math]. Что и требовалось доказать
[math]\triangleleft[/math]

Choosesortparralel.png

См.также

Источники информации

  • Дональд Э. Кнут. Искусство программирования. Том 3. Сортировка и Поиск. стр. 238— ISBN 0-201-89685-0
  • Кормен, Томас Х.,Рональд Л., Штайн, Клифорд. Глава 27. Сортирующие сети // Алгоритмы: построение и анализ = Introduction to Algorithms. — 2-e издание. — М.: «Вильямс», 2005. — С. 799 - 822. — ISBN 5-8459-0857-4.
  • Википедия - Сети сортировки