Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
Algoritmen en Datastructuren III Partim: Parallelle algoritmen - caagt
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