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.

56 Hoofdstuk 5. <strong>Parallelle</strong> sorteeralgoritm<strong>en</strong><br />

Figuur 5.7: De structuur van het merging netwerk M8<br />

Figuur 5.8: Het netwerk M4, links met <strong>en</strong> rechts zonder snijd<strong>en</strong>de lijn<strong>en</strong><br />

Stelling 5.1.11. We kunn<strong>en</strong> e<strong>en</strong> netwerk van diepte log 2 n <strong>en</strong> grootte nlog 2 n/2 construer<strong>en</strong> voor<br />

het merg<strong>en</strong> van twee gesorteerde rij<strong>en</strong>.<br />

Gebruik mak<strong>en</strong>de van de merging netwerk<strong>en</strong> kunn<strong>en</strong> we nu e<strong>en</strong> sorteernetwerk Sn bouw<strong>en</strong> dat<br />

voor algem<strong>en</strong>e rij<strong>en</strong> werkt. Hiertoe gebruik<strong>en</strong> we het idee van mergesort. Zij S1 e<strong>en</strong> <strong>en</strong>kele lijn.<br />

Uit S1 bouw<strong>en</strong> we S2 door M2 op de twee lijn<strong>en</strong> toe te pass<strong>en</strong>. Aangezi<strong>en</strong> e<strong>en</strong> <strong>en</strong>kele input e<strong>en</strong><br />

gesorteerde rij is, sorteert S2 rij<strong>en</strong> van l<strong>en</strong>gte 2 correct. Analoog bouw<strong>en</strong> we S4 door twee kopies<br />

van S2 te nem<strong>en</strong> om de twee helft<strong>en</strong> van de input te sorter<strong>en</strong>, <strong>en</strong> vervolg<strong>en</strong>s de gesorteerde helft<strong>en</strong><br />

te merg<strong>en</strong> met M4 (zie Figuur 5.9). Figuur 5.10 illustreert de werking van S4 op de voorbeeldrij<br />

(4,1,3,2).<br />

Algeme<strong>en</strong> bouw<strong>en</strong> we op dezelfde manier uit twee S n/2 <strong>en</strong> één Mn e<strong>en</strong> sorteernetwerk Sn. Figuur<br />

5.11 toont het sorteernetwerk S8.<br />

Stelling 5.1.12. Het netwerk Sn is e<strong>en</strong> sorteernetwerk van diepte Θ(log 2 n) <strong>en</strong> grootte Θ(nlog 2 n)<br />

dat e<strong>en</strong> gegev<strong>en</strong> rij van l<strong>en</strong>gte n correct sorteert.<br />

Bewijs. We bewijz<strong>en</strong> de stelling door inductie op n. S1 is correct, aangezi<strong>en</strong> het maar 1 input<br />

heeft. Zij n e<strong>en</strong> eig<strong>en</strong>lijke macht van 2. Als inductiehypothese veronderstell<strong>en</strong> we dat S n/2 e<strong>en</strong><br />

inputrij van l<strong>en</strong>gte n/2 correct sorteert. Dan sorteert Sn eerst elke helft van zijn inputrij met<br />

behulp van S n/2, hetge<strong>en</strong> weg<strong>en</strong>s de inductiehypothese correct gebeurt. Vervolg<strong>en</strong>s voegt Sn de<br />

twee gesorteerde deelrij<strong>en</strong> sam<strong>en</strong> tot e<strong>en</strong> gesorteerde rij met behulp van e<strong>en</strong> (correct werk<strong>en</strong>d)<br />

merging netwerk Mn. Dit levert e<strong>en</strong> gesorteerde rij van l<strong>en</strong>gte n.<br />

De diepte van Sn is de som van de dieptes van Mn,M n/2,M n/4,...,M1, d.i. log 2 n+log 2 (n/2)+<br />

log 2 (n/4)+··· = Θ(log 2 n). Zij sn de grootte van Sn, dan is sn gegev<strong>en</strong> door de grootte van Mn<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<br />

B8

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

Saved successfully!

Ooh no, something went wrong!