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.

5.2. Sorter<strong>en</strong> op interconnecti<strong>en</strong>etwerk<strong>en</strong> 61<br />

stap 1<br />

stap 2<br />

stap 3<br />

rij<strong>en</strong> sorter<strong>en</strong> (fase 1) kolomm<strong>en</strong> sorter<strong>en</strong> (fase 2)<br />

15 4 10 6 →<br />

1 5 7 11 ←<br />

12 14 13 8 →<br />

9 16 2 3 ←<br />

4 6 3 1 →<br />

8 7 5 2 ←<br />

11 9 10 14 →<br />

16 12 13 15 ←<br />

1 3 4 2 →<br />

8 7 5 6 ←<br />

9 10 11 12 →<br />

16 15 13 14 ←<br />

4 6 10 15<br />

11 7 5 1<br />

8 12 13 14<br />

16 9 3 2<br />

1 3 4 6<br />

8 7 5 2<br />

9 10 11 14<br />

16 15 13 12<br />

1 2 3 4<br />

8 7 6 5<br />

9 10 11 12<br />

16 15 14 13<br />

Figuur 5.14: De rij (15,4,10,6,1,5,7,11,12,14,13,8,9,16,2,3) sorter<strong>en</strong> op<br />

e<strong>en</strong> rooster van processor<strong>en</strong> met het shearsort algoritme<br />

in e<strong>en</strong> soort ‘ploegvor<strong>en</strong>’-volgorde (m.a.w. afwissel<strong>en</strong>d in stijg<strong>en</strong>de <strong>en</strong> dal<strong>en</strong>de volgorde in de<br />

rij<strong>en</strong>).<br />

Voorbeeld 5.2.2. We gebruik<strong>en</strong> shearsort om de rij (15,4,10,6,1,5,7,11,12,14,13,8,9,16,2,3) te<br />

sorter<strong>en</strong>. We k<strong>en</strong>n<strong>en</strong> de getall<strong>en</strong> rij per rij aan de processor<strong>en</strong> van het rooster toe. Figuur 5.14<br />

illustreert de verschill<strong>en</strong>de stapp<strong>en</strong> in het algoritme.<br />

Om de correctheid van het shearsort algoritme te bewijz<strong>en</strong>, will<strong>en</strong> we het nul-e<strong>en</strong>-principe gebruik<strong>en</strong>,<br />

dat we in Paragraaf 5.1.4 invoerd<strong>en</strong>. Het nul-e<strong>en</strong>-principe werd weliswaar geformuleerd<br />

voor sorteernetwerk<strong>en</strong>, <strong>en</strong> niet voor algem<strong>en</strong>e algoritm<strong>en</strong> (het is ook zo dat het niet werkt voor<br />

algem<strong>en</strong>e algoritm<strong>en</strong>). Maar shearsort is e<strong>en</strong> zeer beperkt soort algoritme. T<strong>en</strong> eerste is het e<strong>en</strong><br />

vergelijk-<strong>en</strong>-verwissel algoritme, dat kan geïmplem<strong>en</strong>teerd word<strong>en</strong> door <strong>en</strong>kel gebruik te mak<strong>en</strong><br />

van vergelijk<strong>en</strong>de poort<strong>en</strong>. T<strong>en</strong> tweede is het ‘vergeetachtig’, in die zin dat het resultaat van<br />

e<strong>en</strong> vergelijking ge<strong>en</strong> invloed heeft op de vergelijking<strong>en</strong> die later gemaakt word<strong>en</strong>. E<strong>en</strong> dergelijk<br />

algoritme kan als e<strong>en</strong> sorteernetwerk geïmplem<strong>en</strong>teerd word<strong>en</strong>, waardoor het nul-e<strong>en</strong>-principe<br />

ervoor geldt.<br />

Stelling 5.2.3. Shearsort sorteert n 2 elem<strong>en</strong>t<strong>en</strong> in 2n(⌈log 2 n⌉+1) stapp<strong>en</strong> op e<strong>en</strong> n × n rooster.<br />

Bewijs. We pass<strong>en</strong> het nul-e<strong>en</strong>-principe toe <strong>en</strong> controler<strong>en</strong> dat het algoritme werkt voor binaire<br />

inputrij<strong>en</strong>.<br />

Beschouw<strong>en</strong> we twee rij<strong>en</strong> 2i <strong>en</strong> 2i+1 na de rijsorteerfase. Aangezi<strong>en</strong> rij 2i in stijg<strong>en</strong>de volgorde<br />

gesorteerd werd, start ze met e<strong>en</strong> blok null<strong>en</strong> <strong>en</strong> eindigt ze met e<strong>en</strong> blok <strong>en</strong><strong>en</strong>. Analoog<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!