Сортирующие сети для квадратичных сортировок — различия между версиями
Timur (обсуждение | вклад) |
Timur (обсуждение | вклад) |
||
Строка 16: | Строка 16: | ||
=== Сортировка пузырьком и вставками === | === Сортировка пузырьком и вставками === | ||
− | Заметим, если сжать последовательные сортирующие сети пузырьком и вставками, то результат будет одним и тем же. Этот факт легко заметить, | + | Заметим, если сжать последовательные сортирующие сети пузырьком и вставками, то результат будет одним и тем же. Этот факт легко заметить, сдвинув компараторы вправо и влево соответственно. |
{{ | {{ | ||
Строка 27: | Строка 27: | ||
'''База индукции''': | '''База индукции''': | ||
− | При <tex> n = 2 </tex> | + | При <tex> n = 2 </tex>. В сети всего два входа, на которых располагается один компаратор, тем самым наше предположение выполняется. |
'''Шаг индукции''': | '''Шаг индукции''': | ||
Строка 33: | Строка 33: | ||
Пусть <tex> S(n) = 2n - 3 </tex> — количество слоев в сети сортировки. | Пусть <tex> S(n) = 2n - 3 </tex> — количество слоев в сети сортировки. | ||
− | При переходе от <tex>n</tex> - й сортирующей сети к <tex>(n + 1)</tex> - й, добавляем | + | При переходе от <tex>n</tex> - й сортирующей сети к <tex>(n + 1)</tex> - й, добавляем <tex> n </tex> дополнительных компараторов. При "треугольной" сети можно заметить, что <tex>n - 1</tex> входят в уже существующие слои, но тогда один компаратор из предыдущей сортирующий сети и один из добавленных не вносят вклад в количество слоев. Тогда можно получить рекуррентное соотношение: <tex> S(n + 1) = S(n) + 2 </tex>. |
Данное рекуррентное соотношение имеет решение <tex> S(n) = 2n - 3 </tex>. Что и требовалось доказать. | Данное рекуррентное соотношение имеет решение <tex> S(n) = 2n - 3 </tex>. Что и требовалось доказать. | ||
Строка 43: | Строка 43: | ||
=== Сортировка выбором === | === Сортировка выбором === | ||
+ | Будем объединять в слой | ||
{{ | {{ | ||
Теорема | Теорема | ||
|statement= | |statement= | ||
− | В результирующей сети будет <tex> | + | В результирующей сети будет <tex>2n - 3</tex> слой, где <tex> n </tex> — количество входов. |
|proof= | |proof= | ||
Воспользуемся принципом математической индукции. | Воспользуемся принципом математической индукции. | ||
Строка 52: | Строка 53: | ||
'''База индукции''': | '''База индукции''': | ||
− | <tex> n = 2 </tex> | + | <tex> n = 2 </tex>. В сети всего два входа, на которых располагается один компаратор, тем самым наше предположение выполняется. |
'''Шаг индукции''': | '''Шаг индукции''': | ||
Строка 58: | Строка 59: | ||
Пусть <tex> S(n) </tex> - количество слоев в сети сортировки с <tex> n </tex> входами. | Пусть <tex> S(n) </tex> - количество слоев в сети сортировки с <tex> n </tex> входами. | ||
− | При переходе от <tex>n</tex> - й сортирующей сети к <tex>(n + 1)</tex>-й, добавляем <tex> n - | + | При переходе от <tex>n</tex> - й сортирующей сети к <tex>(n + 1)</tex>-й, добавляем <tex> n </tex> компаратор. Заметим, что с <tex> n - 2 </tex> можно сделать слои, используя слои из предыдущей сортирующей сети. Тогда остается два компаратора, которые сами являются слоями. Тем самым получили рекуррентное соотношение: |
− | <tex> S(n + 1) = S(n) + | + | <tex> S(n + 1) = S(n) + 2 </tex> с начальными данными (<tex>S(2) = 1</tex>). Решением данного рекуррентного соотношения является <tex> S(n) = 2n - 3 </tex>. Что и требовалось доказать |
}} | }} | ||
+ | [[Файл:Choosesortparralel.png]] | ||
==См.также== | ==См.также== | ||
* [[Сортировочные сети с особыми свойствами]] | * [[Сортировочные сети с особыми свойствами]] |
Версия 11:08, 20 мая 2015
Рассмотрим модели сортирующих сетей для квадратичных сортировок.
Содержание
Сортирующие сети с последовательной сортировкой
На один слой будем устанавливать только один компаратор. Все последующие сети получаются простым моделированием соответствующих сортировок.
Сортировка пузырьком | Сортировка вставками | Сортировка выбором |
Сортирующие сети с параллельной сортировкой
На один слой будем устанавливать несколько компараторов.
Сортировка пузырьком и вставками
Заметим, если сжать последовательные сортирующие сети пузырьком и вставками, то результат будет одним и тем же. Этот факт легко заметить, сдвинув компараторы вправо и влево соответственно.
Теорема: |
В результирующей сети будет слоев, где - количество входов. |
Доказательство: |
Докажем данное утверждение по принципу математической индукции. База индукции: При . В сети всего два входа, на которых располагается один компаратор, тем самым наше предположение выполняется.Шаг индукции: Пусть — количество слоев в сети сортировки.При переходе от Данное рекуррентное соотношение имеет решение - й сортирующей сети к - й, добавляем дополнительных компараторов. При "треугольной" сети можно заметить, что входят в уже существующие слои, но тогда один компаратор из предыдущей сортирующий сети и один из добавленных не вносят вклад в количество слоев. Тогда можно получить рекуррентное соотношение: . . Что и требовалось доказать. |
Сортирующая сеть для
:Сортировка выбором
Будем объединять в слой
Теорема: |
В результирующей сети будет слой, где — количество входов. |
Доказательство: |
Воспользуемся принципом математической индукции. База индукции: . В сети всего два входа, на которых располагается один компаратор, тем самым наше предположение выполняется. Шаг индукции: Пусть - количество слоев в сети сортировки с входами.При переходе от - й сортирующей сети к -й, добавляем компаратор. Заметим, что с можно сделать слои, используя слои из предыдущей сортирующей сети. Тогда остается два компаратора, которые сами являются слоями. Тем самым получили рекуррентное соотношение: с начальными данными ( ). Решением данного рекуррентного соотношения является . Что и требовалось доказать |
См.также
Источники информации
- Дональд Э. Кнут. Искусство программирования. Том 3. Сортировка и Поиск. стр. 238— ISBN 0-201-89685-0
- Кормен, Томас Х.,Рональд Л., Штайн, Клифорд. Глава 27. Сортирующие сети // Алгоритмы: построение и анализ = Introduction to Algorithms. — 2-e издание. — М.: «Вильямс», 2005. — С. 799 - 822. — ISBN 5-8459-0857-4.
- Википедия - Сети сортировки