03.07.2013 Views

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!