0-1 принцип — различия между версиями
м |
м (→Источники) |
||
| Строка 58: | Строка 58: | ||
== Источники == | == Источники == | ||
| − | * [http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/networks/indexen. | + | * [http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/networks/indexen.htm Sorting networks] |
* [http://en.wikipedia.org/wiki/Sorting_network Wikipedia - Sorting networks] | * [http://en.wikipedia.org/wiki/Sorting_network Wikipedia - Sorting networks] | ||
* Дональд Кнут - Искусство программирования. Том 3. Глава 5.3.4, стр. 249 | * Дональд Кнут - Искусство программирования. Том 3. Глава 5.3.4, стр. 249 | ||
[[Категория: Сортирующие сети]] | [[Категория: Сортирующие сети]] | ||
Версия 07:25, 25 мая 2011
Есть два способа проверить сеть из n компараторов на то, что она сортирующая.
Первый способ
Первый, наивный способ - перебрать все перестановки из n элементов, пропустить их через сеть и проверить их на то, что они отсортированы. Этот подход потребует действий, где - количество компараторов в сети из n элементов. Обычно это количество можно оценить как (сеть Бэтчера), то есть получаем асимптотику , то есть при n, равном уже 10, проверить сеть очень проблематично.
Второй способ
Второй способ основывается на предположении что если сеть сортирует все последовательности из нулей и единиц, то сеть является сортирующей. Если мы докажем это, то сможем проверять сеть за , что намного быстрее.
Доказательство 0-1 принципа
| Определение: |
| Функция из A в B называется монотонной, если |
| Лемма: |
Пусть - монотонная. Тогда . |
| Доказательство: |
|
Не теряя общности, предположим что . Тогда, . Также, по монотонности, . Тогда . То есть, . Такие же рассуждения можно провести для случая . |
| Определение: |
| Рассмотрим отображение и последовательность . Определим как последовательность , то есть |
| Лемма: |
Пусть - монотонная, а - какая-то сеть компараторов. Тогда и коммутируют: - другими словами, неважно, применить сначала к и пропустить через сеть , или пропустить через сеть последовательность , а потом применить монотонную функцию . |
| Доказательство: |
|
Рассмотрим произвольный компаратор , сортирующий элементы и . Применим его к последовательности и рассмотрим элемент с индексом . |
| Теорема (0-1 принцип): |
Если сеть компараторов сортирует все последовательности из нулей и единиц, то она сортирующая |
| Доказательство: |
|
Рассмотрим сеть , сортирующую в возрастающем порядке: . Предположим, что есть последовательность , которую сеть не сортирует. Тогда после пропуска через сеть , получим последовательность b, в которой найдется индекс такой, что . Рассмотрим функцию . Очевидно, она монотонная. Заметим, что , а , то есть , или - не отсортирована. Так как и коммутируют, - также не отсортирована. Но по предположению теоремы, все последовательности из нулей и единиц сеть сортировать умеет, то есть такой последовательности не найдется, то есть сеть компараторов является сортирующей. |
Источники
- Sorting networks
- Wikipedia - Sorting networks
- Дональд Кнут - Искусство программирования. Том 3. Глава 5.3.4, стр. 249