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.

3.3. Interconnecti<strong>en</strong>etwerk<strong>en</strong> 25<br />

010<br />

110 111<br />

100<br />

011<br />

000 001<br />

Figuur 3.2: Labeling van de hyperkubus van dim<strong>en</strong>sie 3<br />

101<br />

0 1 0 1 0 1 0 0 1 0<br />

1 1 0 1 0 1 1 0 1 0<br />

1 1 1 1 0 1 1 1 1 0<br />

1 1 1 0 0 1 1 1 1 1<br />

1 1 1 0 1<br />

Figuur 3.3: Het verz<strong>en</strong>d<strong>en</strong> op e<strong>en</strong> hyperkubus<br />

<strong>en</strong> 1 gelabeld. De labels voor de d-dim<strong>en</strong>sionale hyperkubus word<strong>en</strong> dan recursief opgesteld.<br />

Veronderstel dat we reeds elke top van de (d −1)-dim<strong>en</strong>sionale hyperkubus gelabeld hebb<strong>en</strong> met<br />

string van d − 1 bits. De d-dim<strong>en</strong>sionale hyperkubus bestaat uit twee kopieën van de (d − 1)dim<strong>en</strong>sionale<br />

hyperkubus; geef de <strong>en</strong>e kopie label 0 <strong>en</strong> de andere label 1. Het label van e<strong>en</strong><br />

top in de d-dim<strong>en</strong>sionale hyperkubus bestaat uit de concat<strong>en</strong>atie van 0 of 1 (afhankelijk van de<br />

deelkubus waartoe hij behoort) <strong>en</strong> zijn label in de deelkubus. Figuur 3.2 toont de labeling van<br />

de driedim<strong>en</strong>sionale hyperkubus. Merk op dat twee processor<strong>en</strong> die in precies één coördinaat<br />

verschill<strong>en</strong>, rechtstreeks verbond<strong>en</strong> zijn door e<strong>en</strong> communicatiekanaal.<br />

Aangezi<strong>en</strong> verschill<strong>en</strong>de labels corresponder<strong>en</strong> met verschill<strong>en</strong>de topp<strong>en</strong>, kunn<strong>en</strong> we hieruit afleid<strong>en</strong><br />

dat de d-dim<strong>en</strong>sionale hyperkubus p = 2 d topp<strong>en</strong> bevat. De graad van elke top is d; de<br />

hyperkubus is dus e<strong>en</strong> reguliere graaf van graad d.<br />

De diameter van de hyperkubus is d = log 2 p, hetge<strong>en</strong> impliceert dat we e<strong>en</strong> boodschap van elke<br />

top naar om het ev<strong>en</strong> welke andere top kunn<strong>en</strong> stur<strong>en</strong> in hoogst<strong>en</strong>s d stapp<strong>en</strong>.<br />

Voorbeeld 3.3.2. E<strong>en</strong> e<strong>en</strong>voudig routing-algoritme is gebaseerd op het feit dat twee processor<strong>en</strong><br />

die in precies één coördinaat verschill<strong>en</strong>, rechtstreeks verbond<strong>en</strong> zijn door e<strong>en</strong> communicatiekanaal.<br />

Hierdoor kunn<strong>en</strong> we e<strong>en</strong> boodschap van processor Pi naar processor Pj stur<strong>en</strong> door het<br />

label i bit per bit in het label j te verander<strong>en</strong>. Bijvoorbeeld, om in de vijfdim<strong>en</strong>sionale hyperkubus<br />

e<strong>en</strong> boodschap van 01010 naar 11101 te stur<strong>en</strong>, kunn<strong>en</strong> we dit rout<strong>en</strong> over 01010, 11010,<br />

11110, 11100, 11101.<br />

Dit e<strong>en</strong>voudige routing-algoritme kan echter tot problem<strong>en</strong> leid<strong>en</strong>, wanneer meerdere boodschapp<strong>en</strong><br />

tegelijkertijd onderweg zijn. Bijvoorbeeld, beschouw het verstur<strong>en</strong> van e<strong>en</strong> boodschap<br />

van 01010 naar 11101 <strong>en</strong> e<strong>en</strong> boodschap van 10010 naar 11110. Figuur 3.3 illustreert het verz<strong>en</strong>-<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!