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