Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
58 Hoofdstuk 5. <strong>Parallelle</strong> sorteeralgoritm<strong>en</strong><br />
Figuur 5.11: Het sorteernetwerk S8<br />
bs > bt. We associër<strong>en</strong> e<strong>en</strong> rij van null<strong>en</strong> <strong>en</strong> <strong>en</strong><strong>en</strong> met (a0,...,an−1), als volgt. Label elke ai die<br />
kleiner is dan bs met e<strong>en</strong> nul, <strong>en</strong> alle andere ai met e<strong>en</strong> één.<br />
We bewijz<strong>en</strong> zo mete<strong>en</strong> dat, wanneer we de rij (a0,...,an−1) <strong>en</strong> de rij van zijn labels gelijktijdig<br />
door het sorteernetwerk lat<strong>en</strong> verwerk<strong>en</strong>, elke ai zijn label behoudt. Dit impliceert dat bs met<br />
e<strong>en</strong> 1 gelabeld is, <strong>en</strong> bt met e<strong>en</strong> 0. Aangezi<strong>en</strong> s < t, sorteert het netwerk dus de rij van labels niet<br />
correct, hetge<strong>en</strong> e<strong>en</strong> strijdigheid oplevert, aangezi<strong>en</strong> de labels null<strong>en</strong> <strong>en</strong> <strong>en</strong><strong>en</strong> zijn.<br />
Blijft nog te bewijz<strong>en</strong> dat de labels van de inputelem<strong>en</strong>t<strong>en</strong> dezelfde blijv<strong>en</strong>. Beschouw e<strong>en</strong><br />
vergelijk<strong>en</strong>de poort. Als zijn inputs allebei nul of allebei één zijn, dan geldt dit ook voor de<br />
output. In het geval waarbij de inputs a < a ′ hebb<strong>en</strong>, <strong>en</strong> a met 0 <strong>en</strong> a ′ met 1 gelabeld zijn,<br />
verandert de vergelijk<strong>en</strong>de poort niets aan a <strong>en</strong> a ′ , noch aan de labels. De andere mogelijkheid<br />
is dat we inputs a > a ′ hebb<strong>en</strong>, <strong>en</strong> dat a met e<strong>en</strong> 1 <strong>en</strong> a ′ met e<strong>en</strong> 1 gelabeld is – in dit geval<br />
verwisselt de vergelijk<strong>en</strong>de poort zowel de inputs a <strong>en</strong> a ′ als de labels, <strong>en</strong> ook hier blijv<strong>en</strong> de<br />
labels bij de oorspronkelijke elem<strong>en</strong>t<strong>en</strong>.<br />
We kunn<strong>en</strong> nu het nul-e<strong>en</strong>-principe gebruik<strong>en</strong> om aan te ton<strong>en</strong> dat het odd-ev<strong>en</strong>-transposition<br />
netwerk dat we eerder introduceerd<strong>en</strong>, correct werkt.<br />
Stelling 5.1.14. Het odd-ev<strong>en</strong>-transposition netwerk sorteert rij<strong>en</strong> van l<strong>en</strong>gte n in diepte n <strong>en</strong><br />
grootte Θ(n 2 ).<br />
Bewijs. Neem n vast <strong>en</strong> beschouw het odd-ev<strong>en</strong>-transposition netwerk voor rij<strong>en</strong> van l<strong>en</strong>gte n.<br />
Weg<strong>en</strong>s stelling 5.1.13 moet<strong>en</strong> we <strong>en</strong>kel aanton<strong>en</strong> dat het netwerk alle binaire inputrij<strong>en</strong> correct<br />
sorteert.<br />
We beschouw<strong>en</strong> e<strong>en</strong> zekere willekeurige inputrij (a0,...,an−1) van l<strong>en</strong>gte n. Zij ai de eerste nul<br />
in deze rij, m.a.w. ai = 0 <strong>en</strong> ak = 1 voor alle k < i.<br />
Als i ev<strong>en</strong> is, dan wordt ai vergelek<strong>en</strong> met ai+1 in de eerste laag van het netwerk, <strong>en</strong> er gebeurt<br />
niets. Echter, in de tweede laag wordt ai vergelek<strong>en</strong> met ai−1 = 1, <strong>en</strong> de twee elem<strong>en</strong>t<strong>en</strong> word<strong>en</strong><br />
verwisseld. Aangezi<strong>en</strong> alle elem<strong>en</strong>t<strong>en</strong> voor ai één zijn, zal ai vanaf dat punt naar vor<strong>en</strong> beweg<strong>en</strong><br />
tot het de eerste lijn bereikt heeft. Als i onev<strong>en</strong> is, zal ai onmiddellijk beginn<strong>en</strong> aan zijn beweging<br />
naar de eerste lijn, tot het die bereikt. Beide situaties word<strong>en</strong> geïllustreerd in Figuur 5.12.<br />
<strong>Algoritm<strong>en</strong></strong> <strong>en</strong> Datastructur<strong>en</strong> <strong>III</strong> Veerle.Fack@UG<strong>en</strong>t.be