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.

4.4. Accelerated cascading / Maximum bepal<strong>en</strong> 45<br />

de rol van A). Deze stap kost Θ(loglogn) tijd <strong>en</strong> O(|Ai|) bewerking<strong>en</strong>. We kunn<strong>en</strong> er dus voor<br />

zorg<strong>en</strong> dat elke deelrij l<strong>en</strong>gte Θ(logn) heeft, zonder de asymptotische complexiteit te verhog<strong>en</strong>.<br />

Dit leidt tot de volg<strong>en</strong>de stelling:<br />

Stelling 4.3.2. Zij A <strong>en</strong> B twee gesorteerde rij<strong>en</strong>, elk van l<strong>en</strong>gte n. Dan kunn<strong>en</strong> A <strong>en</strong> B via merge<br />

sam<strong>en</strong>gevoegd word<strong>en</strong> in T(n) = Θ(logn) tijd <strong>en</strong> W(n) = Θ(n) bewerking<strong>en</strong>.<br />

Merk op dat Algoritme 4.7 de binaire zoekmethode gebruikt om tegelijkertijd meerdere elem<strong>en</strong>t<strong>en</strong><br />

van B in A te rank<strong>en</strong>. M.a.w. de mogelijkheid van concurr<strong>en</strong>t read moet bestaan. Maar<br />

concurr<strong>en</strong>t write is voor dit algoritme niet nodig. Het algoritme werkt dus in het CREW PRAMmodel.<br />

4.4 Accelerated cascading / Maximum bepal<strong>en</strong><br />

4.4.1 Bepal<strong>en</strong> van het maximum<br />

Zoals reeds eerder gezi<strong>en</strong> bestaat er e<strong>en</strong> parallel algoritme voor het bepal<strong>en</strong> van het grootste<br />

elem<strong>en</strong>t uit e<strong>en</strong> rij X = (x1,...,xn), dat gebruik maakt van de techniek van gebalanceerde bom<strong>en</strong>.<br />

De parallelle uitvoeringstijd van dit algoritme is T(n)=Θ(logn) <strong>en</strong> het totale aantal bewerking<strong>en</strong><br />

is W(n) = Θ(n). Dit algoritme is werk-optimaal, want het optimale sequ<strong>en</strong>tiële algoritme voor<br />

dit probleem heeft lineaire uitvoeringstijd.<br />

Dit probleem is e<strong>en</strong> interessant voorbeeld van de strategie van accelerated cascading. Deze<br />

techniek bestaat uit het combiner<strong>en</strong> van e<strong>en</strong> traag maar optimaal algoritme met e<strong>en</strong> snel maar<br />

niet-optimaal algoritme, tot e<strong>en</strong> snel <strong>en</strong> optimaal algoritme.<br />

We bekijk<strong>en</strong> nu hoe we e<strong>en</strong> sneller parallel algoritme voor het bepal<strong>en</strong> van het maximum kunn<strong>en</strong><br />

bekom<strong>en</strong>. Daartoe gebruik<strong>en</strong> we, in plaats van e<strong>en</strong> gebalanceerde binaire boom (die logaritmische<br />

diepte heeft), e<strong>en</strong> boom van dubbel-logaritmische diepte. We construer<strong>en</strong> e<strong>en</strong> gebalanceerde<br />

boom met als blader<strong>en</strong> de waard<strong>en</strong> xi, zodanig dat het aantal kinder<strong>en</strong> van e<strong>en</strong> top gelijk<br />

is aan ⌈ √ nv⌉, waarbij nv het aantal blader<strong>en</strong> in e<strong>en</strong> deelboom met wortel v voorstelt. Elke interne<br />

top wordt gebruikt om het grootste elem<strong>en</strong>t van zijn deelboom bij te houd<strong>en</strong>. Voorwaard<strong>en</strong> op<br />

het aantal kinder<strong>en</strong> van e<strong>en</strong> top zull<strong>en</strong> er voor zorg<strong>en</strong> dat de boom dubbel-logaritmische diepte<br />

heeft. Het welslag<strong>en</strong> van deze strategie hangt af van het bestaan van e<strong>en</strong> parallel algoritme met<br />

constante uitvoeringstijd voor het uitvoer<strong>en</strong> van de bewerking voorgesteld door e<strong>en</strong> interne top,<br />

m.a.w. het bepal<strong>en</strong> van het grootste van e<strong>en</strong> willekeurig aantal elem<strong>en</strong>t<strong>en</strong>. We besprek<strong>en</strong> dus<br />

eerst het ontwerp<strong>en</strong> van dergelijk algoritme.<br />

4.4.2 Bepal<strong>en</strong> van het maximum in constante tijd<br />

Zij A e<strong>en</strong> rij van p elem<strong>en</strong>t<strong>en</strong>, waarvan we het grootste moet<strong>en</strong> bepal<strong>en</strong>. In Algoritme 4.8 gebeurt<br />

e<strong>en</strong> vergelijking tuss<strong>en</strong> elk paar elem<strong>en</strong>t<strong>en</strong> van A. Het grootste elem<strong>en</strong>t kan geïd<strong>en</strong>tificeerd<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!