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.
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