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