133
правки
Изменения
→Битонический сортировщик
=== Полуфильтр ===
Битонический сортировщик представляет собой каскад так называемых '''полуфильтров''' (англ. ''half-cleaner'').
Каждый полуфильтр {{---}} сеть компараторов единичной глубины, в которой <tex>i</tex>-й входной провод сравнивается со входным проводом с номером <tex>\fracdfrac{n}{2} + i</tex>, где <tex>i=1,2,\dots,\fracdfrac{n}{2}</tex> (количество входов <tex>n</tex> {{---}} чётное).
{{Лемма|statement=
Если на вход в полуфильтр подать битоническую последовательность из нулей и единиц длиной <tex>n</tex>, то на выходе мы получим две битонические последовательности длиной <tex>\fracdfrac{n}{2}</tex> такие, что каждый элемент из верхней последовательности не превосходит любой элемент из нижней, и что одна из них будет '''однородной''' (англ. ''clean'') {{---}} целиком состоящей либо из нулей, либо из единиц.
|proof=
Для всех <tex>i=1,2,\dots,\fracdfrac{n}{2}</tex> полуфильтр сравнивает провода с номерами <tex>i</tex> и <tex>i+\fracdfrac{n}{2}</tex>. Без потери общности будем рассматривать входную последовательность вида <tex>0\dots01\dots10\dots0</tex> (для последовательности вида <tex>1\dots10\dots01\dots1</tex> рассуждения аналогичны). В зависимости от того в каком блоке из последовательно расположенных нулей и единиц находится средняя точка <tex>\fracdfrac{n}{2}</tex> входной последовательности, можно выделить 3 случая, причем один из случаев (когда средняя точка попадает на блок из единиц) можно разбить еще на 2 случая. Все 4 случая разобраны на рисунке справа. Для каждого из них лемма выполняется.
}}
||[[Файл:Half-Cleaner1.png|262px|right|thumb|Полуфильтр для 8 проводов.]]