Изменения

Перейти к: навигация, поиск

Сеть Бетчера

920 байт убрано, 02:11, 5 июня 2012
Начаты работы по разгребанию завалов
{{В разработке}}
==Определение==
<b>Сеть Бетчера (Batcher odd-even mergesort)</b> {{- --}} сортирующая сеть размером <tex>O(n \log^2n)</tex> и глубиной <tex>O(\log^2n)</tex>, где <tex>n</tex> {{--- }} количество элементов для сортировки.
==Конструирование сети==
{{Определение
|definition=
<b>Битонической последовательностью </b> называется последовательность, которая сначала монотонно возрастает, а затем монотонно убывает, или последовательность, которая приводится к такому виду путем циклического сдвига.}}В нашем случае Сейчас мы будем рассматривать только нуль-единичные битонические последовательности:
{{Определение
|definition=
<b>Нуль-единичные битонические последовательности </b> {{--- }} последовательности вида <tex>0^i1^j0^k</tex> или <tex>1^i0^j1^k</tex> для целых <tex>i,j,k\ge0</tex>, где <tex>1^i</tex> или <tex>0^i</tex> обозначает <tex>i</tex> идущих подряд единиц или нулей соответственно.}}В качестве примеров нуль-единичной битонической последовательности можно привести последовательности <tex>00111000</tex>, <tex>11000111</tex>, <tex>1110</tex>, <tex>1</tex>, <tex>000</tex>. <br>С первого взгляда битонические последовательности могут показаться бесполезными в деле построения сортирующих сетей, но на самом деле они обладают одним полезным свойством: если соединить вместе две отсортированные последовательности, причем одна из них должна быть отсортировала по возрастанию, а другая по убыванию {{---}}то получится битоническая последовательность. Далее мы найдем этому свойству применение. 
===Битонический сортировщик===
{||На первом этапе конструирования стоит задача построить сравнивающую Сначала мы построим сеть, которая будет сортировать любую нульэффективно сортирует все битонические последовательности {{-единичную битоническую последовательность - -}} т.н. <b>битонический сортировщик</b>.<br> {| <!-- Какие-то адовые костыли только чтобы разместить картинку справа от текста -->|
====Полуфильтр====
Битонический сортировщик состоит из нескольких каскадов, каждый из которых Основной элемент битонического сортировщика называется <b>''полуфильтром''</b> (half-cleaner). Каждый полуфильтр {{- --}} сравнивающая сеть глубиной 1единичной глубины, в которой <tex>i</tex>-й входной провод сравнивается со входным проводом с номером <tex>i+\frac{n}{2}+ i</tex>, где <tex>i=1,2,...,\frac{n}{2}</tex>(предположим, что <tex>n</tex> {{---}} чётное).<br>[[Файл:Half-Cleaner1.png‎|250px|center|thumb|Рис.1 Полуфильтр для 8 проводов]] 
{{Лемма|statement=
Если на вход в полуфильтр подать битоническую последовательность из нулей и единиц длиной <tex>n</tex>, то на выходе мы получим две битонические последовательности длиной <tex>\frac{n}{2}</tex> такие, что каждый элемент из верхней последовательности не превосходит любой элемент из нижней, и что одна из них будет <b>''однородной''</b> (clean) {{- --}} целиком состоящей либо из нулей, либо из единиц.<br><!-- TODO: написать нормальное доказательство, а не копипасту из Кормена -->
|proof=
Для всех <tex>i=1,2,...,\frac{n}{2}</tex> полуфильтр сравнивает провода с номерами <tex>i</tex> и <tex>i+\frac{n}{2}</tex>. Без потери общности будем рассматривать входную последовательность вида <tex>0...01...10...0</tex> (для последовательности вида <tex>1...10...01...1</tex> рассуждения аналогичны). В зависимости от того в каком блоке из последовательно расположенных нулей и единиц находится средняя точка <tex>\frac{n}{2}</tex> входной последовательности, можно выделить 3 случая, причем один из случаев (когда средняя точка попадает на блок из единиц) можно разбить еще на 2 случая. Все 4 случая разобраны на рис. 2. Для каждого из ни лемма выполняется.
}}
||[[Файл:Half-Cleaner1Cleaner-proof.png‎|250px200px|right|thumb|Рис.1 Полуфильтр для 8 проводов2 Все случаи попадания битонической последовательности на полуфильтр]]
|}
 
{|
|====Битонический сотрировщиксортировщик====erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDTТеперь мы используем полуфильтры для сортировки битонических последовательностей.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDTКак только что было доказано, один полуфильтр разделяет битоническую последовательность на две равные части, одна из которых однородна, а другая сама по себе является битонической последовательностью, причем части расположены в правильном порядке.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDTТогда мы можем каждую часть снова отправить в полуфильтр вдвое меньшего размера, чем предыдущий.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDTЗатем, если нужно, четыре получившихся части снова отправить в полуфильтры и так далее, пока количество проводов в частях больше одного.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.erwtgretasdfg a sdfg sdhgj adfh artfgh DASGASJ DFA HTY ADFHWT YDASGS UJA ZHJRYTUH R DEUJETYH FYUJES SDFGHGS HERFGAHE FGHWRFG YTEUH SHEDT.\ //Четко||[[Файл:Half-Cleaner-proofBitonic_sorter_8.png‎png|305px|450pxright|thumb|Рис.2 Все случаи попадания битонической последовательности 3 Битонический сортировщик на полуфильтр8 входов с выделенными полуфильтрами.]]
|}
==Источники==
*[http://en.wikipedia.org/wiki/Batcher_odd-even_mergesort| Wikipedia {{---}} Batcher odd-even merge sortmergesort]*Кормен Т.Кормен ", Лейзерсон Ч., Ривест Р. Алгоритмы : построение и анализ". — 2-е изд. — М.: Издательский дом «Вильямс», 2005. — С. 808—818.<!-- TODO: проверить 2007 издание Кормена и написать его -->
101
правка

Навигация