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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Сортирующие сети с последовательной сортировкой)
Строка 16: Строка 16:
 
=== Сортировка пузырьком и вставками ===
 
=== Сортировка пузырьком и вставками ===
  
Интересно два факта:
+
* Если сжать последовательные сортирующие сети пузырьком и вставками, то результат будет одним и тем же.
 +
 
 +
{{
 +
Теорема
 +
|statement=
 +
В результирующей сети будет <tex>(2n - 3)</tex> слоев.
 +
|proof=
 +
Докажем данное утверждение по принципу математической индукции.
 +
 
 +
Базой индукции будет <tex> n = 2 </tex>.
 +
 
 +
Пусть <tex> S(n) = 2n - 3 </tex> - количество слоев в сети сортировки размера n.
 +
 
 +
Шаг индукции:  
 +
 
 +
При построении <tex>(n + 1)</tex>-й сортирующей сети, выносим сортирующую сеть, содержащую <tex>n</tex> компараторов и добавляем к ней компараторы: <tex>[n + 1; n], [n; n - 1]\dots[3; 2], [2; 1] </tex>.
  
* Если сжать последовательные сортирующие сети пузырьком и вставками, то результат будет одним и тем же.
+
Подсчитаем количество компараторов: <tex> S(n + 1) = n + n - 1 = 2n - 1 </tex> , заметим, что данное количество слоев удовлетворяет нашему шагу индукции <tex>(S(n + 1) = 2(n + 1) - 3 = 2n + 2 - 3 = 2n - 1)</tex>
* В результирующей сети будет <tex>(2n - 3)</tex> слоев.
+
}}
  
 
[[Файл:Parralelsort.png‎]]
 
[[Файл:Parralelsort.png‎]]
  
 
=== Сортировка выбором ===
 
=== Сортировка выбором ===
 +
{{
 +
Теорема
 +
|statement=
 +
В результирующей сети будет <tex>\dfrac{n(n - 1)}{2}</tex> компараторов.
 +
|proof=
 +
Воспользуемся принципом математической индукции.
 +
 +
Базой индукции будет <tex> n = 2 </tex>
 +
 +
Шаг индукции:
 +
 +
Рассмотрим метод построения сетей для сортировок выбором.
  
 +
Пусть <tex> S(n) </tex> - количество компараторов в сети сортировки с <tex> n </tex> входами, тогда для получения <tex>(n + 1)</tex>-й сети сортировки надо к предыдущей добавить компараторы: <tex>[n + 1; 1], [n; 1]\dots[3; 1], [2; 1] </tex>.
 +
 +
Подсчитаем общее количество компараторов: <tex>S(n + 1) = \dfrac{n(n - 1)}{2} + n = \dfrac{n(n + 1)}{2} </tex>, заметим, что данное количество компараторов удовлетворяет нашему шагу индукции.
 +
}}
 
[[Файл:Choosesortparralel.png‎]]
 
[[Файл:Choosesortparralel.png‎]]
  
== Источники ==
+
==См.также==
*Дональд Э. Кнут. Искусство программирования. Том 3. Сортировка и Поиск. ISBN 0-201-89685-0
+
* [[Сортировочные сети с особыми свойствами]]
 +
 
 +
== Источники информации==
 +
*Дональд Э. Кнут. Искусство программирования. Том 3. Сортировка и Поиск. стр. 238— ISBN 0-201-89685-0
 +
*Кормен, Томас Х.,Рональд Л., Штайн, Клифорд. Глава 27. Сортирующие сети // Алгоритмы: построение и анализ = Introduction to Algorithms. — 2-e издание. — М.: «Вильямс», 2005. — С. 799 - 822. — ISBN 5-8459-0857-4.
 +
*[https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D1%8C_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8 Википедия - Сети сортировки]
  
 
[[Категория: Дискретная математика и алгоритмы]]
 
[[Категория: Дискретная математика и алгоритмы]]
  
 
[[Категория: Сортирующие сети]]
 
[[Категория: Сортирующие сети]]

Версия 19:41, 19 мая 2015

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

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

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

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

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

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

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

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

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

Базой индукции будет [math] n = 2 [/math].

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

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

При построении [math](n + 1)[/math]-й сортирующей сети, выносим сортирующую сеть, содержащую [math]n[/math] компараторов и добавляем к ней компараторы: [math][n + 1; n], [n; n - 1]\dots[3; 2], [2; 1] [/math].

Подсчитаем количество компараторов: [math] S(n + 1) = n + n - 1 = 2n - 1 [/math] , заметим, что данное количество слоев удовлетворяет нашему шагу индукции [math](S(n + 1) = 2(n + 1) - 3 = 2n + 2 - 3 = 2n - 1)[/math]
[math]\triangleleft[/math]

Parralelsort.png

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

Теорема:
В результирующей сети будет [math]\dfrac{n(n - 1)}{2}[/math] компараторов.
Доказательство:
[math]\triangleright[/math]

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

Базой индукции будет [math] n = 2 [/math]

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

Рассмотрим метод построения сетей для сортировок выбором.

Пусть [math] S(n) [/math] - количество компараторов в сети сортировки с [math] n [/math] входами, тогда для получения [math](n + 1)[/math]-й сети сортировки надо к предыдущей добавить компараторы: [math][n + 1; 1], [n; 1]\dots[3; 1], [2; 1] [/math].

Подсчитаем общее количество компараторов: [math]S(n + 1) = \dfrac{n(n - 1)}{2} + n = \dfrac{n(n + 1)}{2} [/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.
  • Википедия - Сети сортировки