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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.1. Sorteernetwerk<strong>en</strong> 53<br />

Figuur 5.5: Het netwerk D16.<br />

Voor de e<strong>en</strong>voud van de pres<strong>en</strong>tatie veronderstell<strong>en</strong> we voor de rest van deze paragraaf dat n e<strong>en</strong><br />

macht van 2 is.<br />

We bouw<strong>en</strong> e<strong>en</strong> netwerk Dn dat zijn input beschouwt als bestaande uit twee helft<strong>en</strong> <strong>en</strong> dat elke<br />

elem<strong>en</strong>t van de eerste helft vergelijkt met e<strong>en</strong> elem<strong>en</strong>t uit de tweede helft. Meer precies wordt<br />

elk elem<strong>en</strong>t ai vergelek<strong>en</strong> met a i+n/2, waarbij 0 ≤ i < n/2. Algeme<strong>en</strong> heeft Dn grootte n/2 <strong>en</strong><br />

diepte 1 (aangezi<strong>en</strong> alle vergelijk<strong>en</strong>de poort<strong>en</strong> in parallel kunn<strong>en</strong> werk<strong>en</strong>). Figuur 5.5 toont D16.<br />

Voorbeeld 5.1.4. Wanneer we D8 de inputrij (4,5,6,7,8,9,12,3) gev<strong>en</strong>, dan geeft het als output<br />

(4,5,6,3,8,9,12,7). Voor inputrij (5,6,7,8,9,12,3,4) geeft het (5,6,3,4,9,12,7,8). Voor<br />

(6,7,8,9,12,3,4,5) geeft het (6,3,4,5,12,7,8,9).<br />

Beschouw<strong>en</strong> we de twee helft<strong>en</strong> van de outputrij<strong>en</strong> in bov<strong>en</strong>staande voorbeeld<strong>en</strong>. Merk op dat<br />

D8 e<strong>en</strong> cyclisch stijg<strong>en</strong>de rij opsplitst in twee cyclisch stijg<strong>en</strong>de deelrij<strong>en</strong>, waarbij alle elem<strong>en</strong>t<strong>en</strong><br />

uit de eerste deelrij kleiner zijn dan de elem<strong>en</strong>t<strong>en</strong> in de tweede deelrij.<br />

Lemma 5.1.5. Wanneer de input voor Dn e<strong>en</strong> cyclisch stijg<strong>en</strong>de rij is, dan bestaat de output<br />

(b0,...,bn−1) uit twee cyclisch stijg<strong>en</strong>de rij<strong>en</strong> (b0,...,b n/2−1) <strong>en</strong> (b n/2,...,bn−1), zodanig dat<br />

bi ≤ b j voor 0 ≤ i < n/2 ≤ j < n, m.a.w. elk elem<strong>en</strong>t van (b0,...,b n/2−1) is kleiner dan (of gelijk<br />

aan) elk elem<strong>en</strong>t van (b n/2,...,bn−1).<br />

Bewijs. Aangezi<strong>en</strong> a cyclisch stijg<strong>en</strong>d is, wet<strong>en</strong> we dat er e<strong>en</strong> index m bestaat, zodanig dat<br />

am,...,an−1,a0,...,am−1 stijg<strong>en</strong>d is; mogelijks is m = 0. Beschouw de rij voorgesteld op e<strong>en</strong><br />

cirkel, met e<strong>en</strong> lijn door het c<strong>en</strong>trum die het grootste <strong>en</strong> het kleinste elem<strong>en</strong>t scheidt. Deze lijn<br />

splitst de cirkel in twee helft<strong>en</strong> <strong>en</strong> we merk<strong>en</strong> op dat elk elem<strong>en</strong>t in de helft die het kleinste<br />

elem<strong>en</strong>t bevat hoogst<strong>en</strong>s zo groot is als elk elem<strong>en</strong>t in de helft die het grootste elem<strong>en</strong>t bevat,<br />

aangezi<strong>en</strong> de elem<strong>en</strong>t<strong>en</strong> groter word<strong>en</strong> wanneer we in wijzerzin van het kleinste naar het grootste<br />

elem<strong>en</strong>t beweg<strong>en</strong>.<br />

Het netwerk Dn berek<strong>en</strong>t<br />

bi = min(ai,a i+n/2) <strong>en</strong> b i+n/2 = max(ai,a i+n/2).<br />

Gevisualiseerd op e<strong>en</strong> cirkel betek<strong>en</strong>t dit bijvoorbeeld dat b0 de kleinste <strong>en</strong> b n/2 de grootste is van<br />

de twee elem<strong>en</strong>t<strong>en</strong> aan beide uiteind<strong>en</strong> van de pijl. Hetzelfde geldt voor bi <strong>en</strong> b i+n/2, wanneer we<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!