Párhuzamos algoritmusok

Hasonló dokumentumok
3.1. ábra. 6 processzoros lánc. 3. Rácsok. Ebben a fejezetben rácsokat (láncot, négyzetet és kockát) alkalmazunk számítási modellként.

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Statisztikai próbák. Ugyanazon problémára sokszor megvan mindkét eljárás.

Függvények növekedési korlátainak jellemzése

8. Programozási tételek felsoroló típusokra

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Példák ekvivalencia relációra (TÉTELként kell tudni ezeket zárthelyin, vizsgán):

Műszaki folyamatok közgazdasági elemzése. Kevert stratégiák és evolúciós játékok

Algoritmuselmélet 2. előadás

A félév során előkerülő témakörök

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Fuzzy rendszerek. A fuzzy halmaz és a fuzzy logika

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

d(f(x), f(y)) q d(x, y), ahol 0 q < 1.

Az entrópia statisztikus értelmezése

Egy negyedrendű rekurzív sorozatcsaládról

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Programozási módszertan. Függvények rekurzív megadása "Oszd meg és uralkodj" elv, helyettesítő módszer, rekurziós fa módszer, mester módszer

Kvantum-tömörítés II.

IT jelű DC/DC kapcsolóüzemű tápegységcsalád

Hely és elmozdulás - meghatározás távolságméréssel

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

Gráfelméleti feladatok. c f

A multikritériumos elemzés célja, alkalmazási területe, adat-transzformációs eljárások, az osztályozási eljárások lényege

Vázlat. Relációk. Példák direkt szorzatra

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

4 2 lapultsági együttható =

Support Vector Machines

Adatsorok jellegadó értékei

Relációk. Vázlat. Példák direkt szorzatra

Sorozatok I. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek

Felvételi tematika INFORMATIKA

Békefi Zoltán. Közlekedési létesítmények élettartamra vonatkozó hatékonyság vizsgálati módszereinek fejlesztése. PhD Disszertáció

Regresszió. Fő cél: jóslás Történhet:

Darupályák ellenőrző mérése

Az elektromos kölcsönhatás

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Tiszta és kevert stratégiák

Algoritmusok és adatszerkezetek gyakorlat 07

Az optimális megoldást adó algoritmusok

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Programozási módszertan. Mohó algoritmusok

Véletlenszám generátorok. 6. előadás

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Számelmélet Megoldások

Variancia-analízis (ANOVA) Mekkora a tévedés esélye? A tévedés esélye Miért nem csinálunk kétmintás t-próbákat?

METROLÓGIA ÉS HIBASZÁMíTÁS

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Algoritmuselmélet 1. előadás

INFORMATIKA javítókulcs 2016

OAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás

Általános algoritmustervezési módszerek

Programozási módszertan. Dinamikus programozás: A leghosszabb közös részsorozat

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Rekurzív algoritmusok

10. Alakzatok és minták detektálása

Másolásra épülő algoritmusok

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Optikai elmozdulás érzékelő illesztése STMF4 mikrovezérlőhöz és robot helyzetérzékelése. Szakdolgozat

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

/11 Változtatások joga fenntartva. Kezelési útmutató. UltraGas kondenzációs gázkazán. Az energia megőrzése környezetünk védelme

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

1.Tartalomjegyzék 1. 1.Tartalomjegyzék

s n s x A m és az átlag Standard hiba A m becslése Információ tartalom Átlag Konfidencia intervallum Pont becslés Intervallum becslés

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Algoritmusok, adatszerkezetek I.

Hipotézis vizsgálatok. Egy példa. Hipotézisek. A megfigyelt változó eloszlása Kérdés: Hatásos a lázcsillapító gyógyszer?

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

1. előadás. számításokban. Adatszerkezetek és algoritmusok előadás február 12. Kósa Márk, Pánovics János, Szathmáry László és Halász Gábor

14. Mediánok és rendezett minták

Periodikus figyelésű készletezési modell megoldása általános feltételek mellett

Statisztika I. 3. előadás. Előadó: Dr. Ertsey Imre

II. Rákóczi Ferenc Kárpátaljai Magyar Fıiskola. Pataki Gábor. STATISZTIKA I. Jegyzet

Elosztott rendszerek játékelméleti elemzése: tervezés és öszönzés. Toka László

Paraméteres és összetett egyenlôtlenségek

Szerelési útmutató FKC-1 síkkollektor tetőre történő felszerelése Junkers szolár rendszerek számára

Nagy Gábor compalg.inf.elte.hu/ nagy

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

MATEMATIKAI STATISZTIKA KISFELADAT. Feladatlap

;3 ; 0; 1 7; ;7 5; 3. pozitív: ; pozitív is, negatív is: ;

Algoritmusok bonyolultsága

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Automaták és formális nyelvek

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Algoritmuselmélet 6. előadás

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

Paraméteres és összetett egyenlôtlenségek

Fibonacci számok. Dinamikus programozással

2005_01/1 Leírtunk egymás mellé hét racionális számot úgy, hogy a két szélső kivételével mindegyik eggyel nagyobb a két szomszédja szorzatánál.

Dr. Schuster György február / 32

The original laser distance meter. The original laser distance meter

Átírás:

Párhuzamos algortmusok. Hatékonyság mértékek A árhuzamos algortmusok esetében fontos jellemző az m ( n, P, ) munka, amt a futás dő és a rocesszorszám szorzatával defnálunk. A P árhuzamos algortmus az A soros algortmusra nézve munkahatékony, ha W ( n, P, ) k = O(lg n), ahol n a bemenet mérete, a rocesszorszám, W edg a futás dő a W ( n, A) legrosszabb esetben. A P árhuzamos algortmus az A soros algortmusra nézve munkaotmáls, ha W ( n, P, ) = O(). W ( n, A). Algortmusok a PRAM modellen A árhuzamos számítás modellek alaja a soros számításokhoz széles körben használt RAM általánosítása, a PRAM (Parallel Random Access Machne = árhuzamos közvetlen hozzáférésű gé). A PRAM modell tartalmaz sznkronzáltan dolgozó rocesszort ( P, P,..., P ) és az M [ ], M[],..., M[ m] rekeszekből álló közös memórát. A modell szernt mnden rocesszor rendelkezk saját memórával: a P rocesszor esetében ez az M [,], M[,],..., M[, m] rekeszekből áll. Feltesszük, hogy a rekeszek tetszőleges egész szám tárolására alkalmasak. Tíusok írás/olvasás alaján: EREW (Exclusve Read Exclusve Wrte: kzárólagos olvasás kzárólagos írás) ERCW (Exclusve Read Concurrent Wrte) CREW (Concurrent Read Exclusve Wrte) CRCW (Concurrent Read Concurrent Wrte) Ugyanabba a memórarekeszbe egydejűleg csak írás vagy olvasás van megengedve... Prefxszámítás Legyen egy alahalmaz, melyen defnáltuk a bnárs asszocatív oerátort. Feltesszük, hogy a művelet egy lééssel elvégezhető, és a halmaz zárt erre a műveletre nézve. Legyenek az X =< x, x,..., x > sorozat eleme a alahalmaz eleme. Ekkor a refxszámítás bemenő adata az X sorozat eleme, a refxszámítás feladat edg az x, x x,..., x x... x elemek meghatározása. Ezeket a meghatározandó elemeket refxeknek hívjuk. A refxszámítás sorosan megoldható Θ ( ) lééssel.

Először egy rocesszoros algortmust mutatunk be, melynek léésszáma Θ (lg ). CREW-PREFIX(, X) Számítás modell: CREW PRAM Bemenet: (a bemenő sorozat hossza) és X : ] = x, x,..., x ( hosszúságú sorozat) [ Kmenet: Y : ] = y, y,..., y ( hosszúságú sorozat, melynek eleme a refxek) 0 f = [ 0 then y x 03 return Y 04 f > 05 then Az első / rocesszor rekurzívan számítsa az x, x,..., x / -höz tartozó refxeket legyenek ezek y, y,..., y / (ezek adják a végeredmény első felét). Ugyanakkor a több rocesszor rekurzívan számítsa k az x / +, x / +,..., x -hez tartozó refxeket legyenek ezek y y,..., y / +, / +. 06 A rocesszorok másk fele árhuzamosan olvassa k a globáls memórából y / -t, és az y / y / +, y / y / +,..., y / y refxeket számítva állítsa elő a végeredmény másk felét. 07 return Y A CREW-PREFIX algortmus munkahatékony, de nem munkaotmáls. A következő algortmus futás deje szntén Θ (lg ), de csak / lg rocesszort használ, így munkaotmáls. OPTIMÁLIS-PREFIX(, X) Számítás modell: CREW PRAM Bemenet: (a bemenő sorozat hossza) és X : ] = x, x,..., x ( hosszúságú sorozat) [ Kmenet: Y : ] = y, y,..., y ( hosszúságú sorozat, melynek eleme a refxek) [ 0 P rocesszor ( =,,..., / lg ) sorosan számolja a hozzárendelt lg darab x( ) lg +, x( ) lg +,..., x lg elem refxet. 0 Összesen rocesszor együtt alkalmazza a CREW-PREFIX algortmust a elem, lg lg z lg, z lg, z3lg,..., z refxenek számítására. Legyen az eredmény w lg, w lg, w3lg,..., w. 03 Mnden rocesszor aktualzálja az első léésben kszámolt értéket: a P rocesszor ( =,3,..., / lg ) számolja k a w( ) lg z( ) lg +, w( ) lg z( ) lg +,..., w( ) lg z lg refxeket, majd az első rocesszor változtatás nélkül adja k a z, z,..., zlg refxeket. 04 return Y

.. Tömb elemenek rangsorolása A tömbrangsorolás feladat bemenő adata egy elemű tömbben ábrázolt lsta: mnden elem tartalmazza jobb oldal szomszédjának ndexét (és esetleges tovább adatokat). A feladat az elemek rangjának (jobb oldal szomszédja számának) meghatározása. A tömbrangsorolás sorosan elvégezhető lneárs léésszámmal. Először meghatározzuk a tömb fejét az egyetlen olyan értéket ( ), melyre A[ j] teljesül mnden j n értékre. A fejből kndulva ásztázzuk a tömböt, és az elemekhez rendre hozzárendeljük a,...,,0 rangokat. A következő árhuzamos algortmus egy rocesszoros EREW PRAM modellen Θ (lg ) futás dőt gényel, ezért nem munkaotmáls, vszont munkahatékony. DET-RANGSOROL( szomsz [ : ], rang[: ] ) Számítás modell: EREW PRAM Bemenet: szomsz [ : ] (az elemek jobb oldal szomszédjanak ndexe) Kmenet: rang [ : ] (az elemek rangja) 3

0 P n arallel for to 0 do f szomsz [ ] = 0 03 then rang [ ] 0 04 else rang [ ] 05 for j to lg 06 do P n arallel for to 07 do f szomsz [ ] 0 08 then rang [ ] rang[ ] + rang[ szomsz[ ]] 09 szomsz[ ] szomsz[ szomsz[ ]] A következő véletlenített algortmus nagy valószínűséggel munkaotmáls, mert rocesszorral O (lg ) dő alatt megoldja a feladatot. KIEMEL() Számítás modell: EREW PRAM Bemenet: (a rangsorolandó elemek száma) és A [ : ] (az elemeket tartalmazó tömb) Kmenet: rang [ : ] (az elemek rangja) 0 Láncoljuk a lstát kettősen. Legyen az A [] csúcs bal oldal szomszédja bal _ szomsz[ ], jobb oldal szomszédja jobb _ szomsz[ ]. A csúcsok rang mezőt kezdetben így adjuk meg: [ ] [] [] [] [] [] [0]. 0 whle a megmaradó csúcsok száma legalább 3 03 do P n arallel for to / lg / lg 4

Vzsgálja meg a következő hozzá tartozó kemeletlen csúcsot (legyen ez x). Ezután dobjon fel egy kétoldalú érmét. Ha az eredmény írás, akkor P maradjon tétlen a menet hátralevő részében. A következő menetben róbálja meg smét kemeln x-et. Másrészt, ha a dobás eredmény fej, akkor P megvzsgálja, vajon az elem jobb oldal szomszédját éen vzsgálja-e a megfelelő rocesszor. Ha a megfelelő rocesszor éen vzsgálja, és dobásának eredménye ugyancsak fej, akkor P feladja, és a menet hátralévő részében tétlen marad. Ha nem, akkor P kemel x-et. Amkor egy x csúcsot kemelünk, tároljuk a menetszámot, valamnt a bal _ szomsz[ x] mutatót és rang[ bal _ szomsz[ x]] -et. Az utóbb ebben a llanatban a bal _ szomsz[ x] és x között csúcsok számát tartalmazza. P végül beállítja a jobb _ szomsz[ bal _ szomsz[ x]] jobb _ szomsz[ x] és bal _ szomsz[ jobb _ szomsz[ x]] bal _ szomsz[ x] értékeket..3. Összefésülés Adott két csökkenőleg (vagy növekvőleg) rendezett sorozat, melyek együtt elemet tartalmaznak. A feladat ennek a sorozatnak egy csökkenő (vagy növekvő) sorozattá való rendezése. Ez a feladat egy soros rocesszoron Θ ( ) lééssel megoldható. 5

Legyen X =< k, k,..., km > és X =< km+, k m+,..., km > a két bemenő sorozat. Az egyszerűség kedvéért legyen m -hatvány, és a kulcsok különbözzenek. Az összefésüléshez elég az összes kulcs rangjának kszámítása. Ha a rangokat smerjük, akkor = m rocesszoron egy léésben beírhatjuk az rangú kulcsot az -edk memórarekeszbe. Az így kaott LOG-ÖSSZEFÉSÜL algortmus két m hosszúságú kulcssorozatot Θ (lg m) dő alatt fésül össze m CREW PRAM rocesszoron. Ez az algortmus nem munkaotmáls, de munkahatékony. A következő algortmus a klasszkus oszd meg és uralkodj elvet alkalmazza. PÁROS-PÁRATLAN-ÖSSZEFÉSÜL( X, X ) Számítás modell: EREW PRAM Bemenet: X és X (két rendezett sorozat) Kmenet: Y (az összefésült sorozat) 0 f m = then fésüljük össze a sorozatokat egyetlen összehasonlítással 0 return Y tn 03 Bontsuk fel X -et és X -t áros és áratlan részre, azaz legyen X = k, k3,..., k m és rs X k, = k 4,..., km. 04 Hasonlókéen bontsuk fel X -t s tn X és tn 05 Rekurzívan fésüljük össze X -t és L = l, l,..., l m. Ugyanakkor fésüljük össze eredmény legyen L = lm+, lm+,..., lm. tn X rs X részekre. -t m rocesszoron. Legyen az eredmény rs X -t és rs X -t másk m rocesszoron: az 06 Keverjük össze az L, L sorozatokat, azaz legyen L= l, lm+, l, lm+,..., lm, lm. 07 Hasonlítsuk össze az ( l m+, l+ ) ( =,,..., m ) árokat, és szükség esetén cseréljük fel őket. Az eredmény lesz a kmenő sorozat. 08 return Y A PÁROS-PÁRATLAN-ÖSSZEFÉSÜL algortmus két m hosszúságú kulcssorozatot m EREW PRAM rocesszoron Θ (lg m) dő alatt fésül össze, így munkahatékony, de nem munkaotmáls. Most m / lg m rocesszoron O (lg m) lééssel végezzük az összefésülést. Ez az OPTIMÁLISAN-ÖSSZEFÉSÜL algortmus az eredet roblémát Θ ( m / lg m) részre osztja úgy, hogy mndegykben O (lg m) hosszúságú rendezett sorozatokat kell összefésüln. Ezek a részroblémák soros algortmussal O (lg m) lééssel megoldhatók. Legyen X =< k, k,..., km > és X =< km+, k m+,..., km > a két bemenő sorozat. Osszuk X - m et részre: ekkor mndegykben legfeljebb lg m kulcs lesz. A részek legyenek lg m m A, A,..., A M, ahol M =. Az A -bel legnagyobb kulcs legyen l ( =,,..., M ). lg m 6

Rendeljünk egy-egy rocesszort ezekhez az l elemekhez. Ezek a rocesszorok bnárs kválasztással meghatározzák l X -bel (rendezés szernt) helyét. Ezek a helyek felbontják X -t M részre (ezek között üres részek s lehetnek). Jelöljük ezeket a részeket B, B,..., BM - mel. B -t az A -nek X -ben megfelelő részhalmaznak nevezzük. Ekkor X és X összefésülését megkahatjuk úgy, hogy rendre összefésüljük A -et B -gyel, A -t B vel, és így tovább, majd ezeket a sorozatokat egyesítjük. 7

Ha az előző algortmust kegészítjük az oszd meg és uralkodj elvvel, még gyorsabb Θ (lg lg m) dejű algortmust kaunk. Legyen m = b. GYORSAN-ÖSSZEFÉSÜL( X, X ) Számítás modell: CREW PRAM Bemenet: X és X Kmenet: Y 0 Bontsuk fel X -et b részre: ekkor mnden részben b elem lesz. Legyen A -ben a legnagyobb kulcs l ( =,,..., b). Mnden l -hez rendeljünk b rocesszort. Ezek a rocesszorok b-árs keresést végeznek X -ben, hogy megtalálják l X -bel helyét. Ezzel X b részre való felbontását kajuk: legyenek ezek a részek B, B,..., Bb. A B részhalmaz az A -nek X -ben megfelelő részhalmaz. 0 Most X és X összefésüléséhez elegendő A és B ( =,,..., b) összefésülése. Az A -k mérete adott, vszont a B -k nagyon nagyok (és nagyon kcsk) s lehetnek. Ezért újra felbontunk. 03 return Y.4. Kválasztás Adott n kulcs és egy ( n) egész szám. A feladat az -edk legksebb kulcs kválasztása. Legyen = n, azaz a legnagyobb kulcsot keressük. Ez a feladat a következő NÉGYZETES- KIVÁLASZT algortmussal n CRCW rocesszoron O () lééssel elvégezhető. NÉGYZETES-KIVÁLASZT( K, y ) Számítás modell: CRCW PRAM Bemenet: K =< k, k,..., kn > (n különböző kulcs) Kmenet: y (a maxmáls kulcs értéke) 0 f n = 0 then y k 03 return y P, n arallel for to n, j to n 04 j számítsa k az x, = k < k értéket j j 05 Az n rocesszort n csoortba ( G,..., Gn ) osztjuk úgy, hogy a G csoortba a rocesszorok kerüljenek. Mndegyk csoort logka VAGY műveletet végez az logka változókkal. P,,..., P, n x,,..., x, n 06 Ha a G csoort számítás eredménye az 5. léésben hams, akkor a csoort P, rocesszora megadja y= k ) -t kmenetként. ( 8

07 return y Ez az algortmus Θ ( n ) munkát végez, ezért nem munkahatékony, hszen a legjobb soros algortmus lneárs. Most megmutatjuk, hogy a maxmáls elem közös CRCW rocesszoron O (lg lg ) lééssel meghatározható. A technka az oszd meg és uralkodj. Az egyszerűség kedvéért feltesszük, hogy négyzetszám. Legyenek a bemenő adatok X =< k, k,..., k >. Legyen az algortmusunk léésszáma T ( ). A bemenő adatokat = a csoortra osztjuk úgy, hogy mnden csoortban a elem legyen. Mnden csoorthoz rendeljünk a rocesszort ekkor a csoortok maxmáls eleme árhuzamosan számítható. Mvel csoortonként a elem és ugyananny rocesszor van, ezért a csoort maxmáls eleme T (a) lééssel meghatározható. Legyenek M, M,..., M a a csoortok maxmáls eleme. Ezek maxmuma lesz az algortmus kmenete. Mvel most csak a elemünk van, az összes rocesszort alkalmazhatjuk. Tegyük fel, hogy az X =< k, k,..., k n > sorozat különböző kulcsokat tartalmaz, és az -edk legksebb kulcsot akarjuk kválasztan. Legyen most az x kulcs rangja eggyel nagyobb, mnt n a nála ksebb kulcsok száma. Ezt a rangot CREW PRAM rocesszoron bármely kulcsra lg n O (lg n) léésben meg tudjuk határozn. Ha n lg n rocesszorunk van, akkor azokat n C, C,..., C n csoortokba oszthatjuk úgy, hogy mnden csoortban rocesszor legyen. A lg n C j ( j n) csoort O (lg n) léésben meghatározza a k j kulcs rangját X-ben. Annak a csoortnak az egyk rocesszora, amelyk az rangot határozta meg, adja a kmenetet. Az így kaott algortmus léésszáma Θ (lg n), munkája Θ ( n ), ezért nem munkaotmáls. Véletlenítéssel kahatunk munkaotmáls algortmust..5. Rendezés Adott n kulcs. A feladat ezek csökkenő vagy növekvő sorrendbe rendezése. Ismert, hogy ha a megengedett művelet a szokásos összehasonlítás, akkor mnden A soros algortmusnak Ω ( nlg n) léésre van szüksége, másrészt vannak O ( nlg n) léésszámú összehasonlítás alaú algortmusok, amelyek tehát aszmtotkusan otmálsak. n rocesszoron a kulcsok rangja (lg n) O lééssel meghatározható. Ha a rangokat smerjük, akkor a rendezés egy árhuzamos írással megoldható. Ez a módszer Θ ( n lg n) munkát gényel, azaz nem munkahatékony. A következő algortmus a klasszkus oszd meg és uralkodj elvet alkalmazza. Az egyszerűség kedvéért n legyen -hatvány, és a kulcsok legyenek különbözők. PÁROS-PÁRATLAN-RENDEZ(X) Számítás modell: EREW PRAM Bemenet: X (a rendezendő kulcsok) Kmenet: Y (a rendezett kulcsok) 9

0 f n = 0 then Y X 03 return Y 04 f n > 05 then Osszuk az X bemenetet két részre: ezek legyenek X ' =< k, k,..., k n / > és X =< k, k +,..., k > ' n / + n / n. n 06 Rendezze rocesszor rekurzívan X ' -t. Az eredmény legyen X. Ugyanakkor rendezze n rocesszor rekurzívan X ' -t. Az eredmény legyen X. 07 Fésüljük össze X -et és X -t m rocesszoron a PÁROS-PÁRATLAN-ÖSSZEFÉSÜL algortmussal. 08 return Y Ez az algortmus n rocesszoron Θ (lg n) lééssel rendez, így munkahatékony, de nem munkaotmáls. Több rocesszorral a léésszám csökkenthető: Prearata algortmusa n lg n CREW PRAM rocesszoron Θ (lg n) árhuzamos léést végez. A kulcssorozatot lg n részre osztjuk, majd a részeket áronként összefésülve mnden kulcsnak mnden részre nézve meghatározzuk a rangját. A kulcsok tényleges rangja az előbb rangok összege lesz. Reschuk véletlenített algortmusa n rocesszoron O (lg n) árhuzamos léést tesz, azaz nagy valószínűséggel munkahatékony. Alaja Prearata algortmusa. 3. Algortmusok rácsokon A k dmenzós ( k ) rács egy olyan m m... mk méretű ( m, m,..., m k ) háló, melynek mnden egyes metszésontjában van egy rocesszor. Az élek a kommunkácós vonalak, melyek kétrányúak. Mnden rocesszor egy RAM, amely rendelkezk saját (hely) memórával. A rocesszorok működése sznkron módon történk, azaz mnden rocesszor egy globáls óra ütemére egyszerre hajtja végre az aktuáls feladatát. A legegyszerűbb rács a k = értékhez tartozó lánc. Egy lánc rocesszora P, P,..., P. Ezek a következőkéen vannak összekötve: P és P kvételével mndegyk rocesszor össze van kötve a nála eggyel nagyobb (jobb szomszéd), lletve eggyel ksebb (bal szomszéd) ndexűvel, míg a két szélső rocesszornak csak egy szomszédja van: P, lletve P. Az összeköttetés kétrányú. Ha k =, akkor téglala alakú rácsot kaunk. Ha most m = m = = a, akkor a a méretű négyzetet kaunk. 0

3.. Csomagrányítás A rocesszorok között kommunkácó egyetlen léése egy rögzített szerkezetű hálózatban a következő, csomagrányítás roblémának nevezett feladatként fogható fel. A hálózatban mnden rocesszornak van egy adatcsomagja, amt egy másk rocesszornak akar elkülden. A feladat a csomagok eljuttatása a céljukhoz a lehető leggyorsabban úgy, hogy egy léésben egy kommunkácós csatornán egy rányban egyszerre csak egy csomag utazhat. Könnyen előfordulhat, hogy egy adott léésben kettő vagy több csomag érkezk egy rocesszorhoz, és mndegyk ugyanazon a csatornán szeretne továbbhaladn. Ilyen esetben természetesen csak egy csomag utazhat a következő léésben, a többek edg a rocesszornál egy várakozás sorba kerülnek. Egy elsőbbség szabály alaján döntjük el, hogy melyk csomagot küldjük tovább először. Ilyen elsőbbség szabály éldául az FDF (Farthest Destnaton Frst), FOF (Farthest Orgn Frst), FIFO, RAN (véletlenszerűen választunk). Egy láncon, mvel az összekötöttség kétrányú, a rocesszor egyszerre küldhet és fogadhat a szomszédjatól üzeneteket. Ennek következtében két ellentétes rányú csomaglánc nem zavarja egymást. Tegyük fel, hogy egy rocesszorból álló láncban mnden rocesszor legfeljebb egy üzenetet küld, az üzenetek célja tetszőleges lehet. Ezt a feladatot egy kezdőcsomagos feladatnak nevezzük. Az egy kezdőcsomagos feladat egy rocesszoros láncon megoldható legfeljebb léésben. Ugyans mnden üzenetet küldhetünk a kezdő- és végont között legrövdebb úton. Ha egy üzenet a P rocesszortól ndul, és P j felé tart, akkor j léésben ér azt el, hszen sosem kell várakozna egy másk üzenet matt. A leghosszabb lyen út -től -g vezet, ezért felső korlát a léésszámra. Adott egy rocesszorból álló lánc. A P rocesszor k ( 0 k ) üzenetet akar külden, és k =. Nncs két olyan üzenet, amelyeket azonos rocesszorhoz kell külden. Ezt a = feladatot egy célcsomagos feladatnak nevezzük. Ha az FDF elsőbbség szabályt használjuk (vagys mndg a legtávolabbra tartó csomagot küldjük először), akkor az egy célcsomagos feladat egy rocesszoros láncon megoldható legfeljebb léés alatt. Most defnáljuk az általános csomagrányítás feladatot. Tételezzük fel, hogy egy rocesszoros láncon több csomag származhat egy rocesszortól, és több csomagot küldhetünk egy rocesszorhoz. Továbbá a P P,..., P ( j =,,..., rocesszoroktól összesen nduló, j ) csomagot száma nem több, mnt j+ f ( ), valamely rögzített f ( ) függvényére. Ha a FOF elsőbbség szabályt használjuk (vagys mndg a legmesszebbről jött csomagot küldjük először), akkor az általános csomagrányítás robléma megoldható + f ( ) léésben. 3.. Üzenetszórás Az üzenetszórás feladat szernt a hálózat megadott rocesszorától üzenetet kell eljuttatn megadott célrocesszorokhoz (rendszernt az összes több rocesszorhoz). Tekntsünk egy rocesszoros láncot, és legyen M egy üzenet, amelyet a P rocesszornak kell elküldene a több rocesszorhoz. A feladat megoldható olyan egyszerűen, hogy P elküld az üzenetet P -nek, az továbbküld P3 -nak, és így tovább. Ekkor az üzenet léésben eljut a legtávolabb rocesszorhoz, P -hez. Mvel a lánc átmérője, ezért ez a lehető legksebb léésszám.

Egy a a méretű négyzetrácsban az üzenetküldést két fázsban valósíthatjuk meg. Az első fázsban az üzenetet küldő P, rocesszor eljuttatja üzenetét az -edk sor mnden j rocesszorához. Ezután a másodk fázsban az -edk sor mnden rocesszora eljuttatja az üzenetet a vele azonos oszloban lévő rocesszorokhoz. Ez összesen legfeljebb ( a ) léést vesz génybe. 3.3. Prefxszámítás Tegyük fel, hogy az L lánc P ( =,,..., ) rocesszorának saját memórájában van az x elem, és a számítás végén a P rocesszor memórájában az y refx lesz. LÁNC-PREFIX( L, X, Y ) Számítás modell: lánc Bemenet: X =< x, x,..., x > (az összeadandó elemek) Kmenet: Y =< y, y,..., y > (a refxek) 0 P n arallel for to 0 f = 03 f = then P az első léésben elküld x -et P -nek then tárolja 04 f then tárolja P a -edk léésben ka egy elemet ( z x -t P az -edk léésben ka egy elemet ( z z -et) P -től, kszámítja és z -et) P -től, kszámítja és = z x -t, majd z -t elküld P+ -nek A LÁNC-PREFIX algortmus egy láncon Θ ( ) dő alatt határozza meg elem refxet. Mvel soros rocesszorral elem refxe O ( ) léésben meghatározhatók, és LÁNC- PREFIX munkát végez, ezért az algortmus nem munkahatékony. Hasonló algortmus alkalmazható négyzeten s. Tekntsünk egy sorfolytonos ndexeléssel. NÉGYZETEN-PREFIX( Számítás modell: négyzet X, Y ) Bemenet: X =< x, x,..., x > (az összeadandó elemek) Kmenet: Y =< y, y,..., y > (a refxek) P n arallel for to a 0, 0 do LÁNC-PREFIX( S, X[ ], Y[ ] ) 03 LÁNC-PREFIX( O, Z[ ] ) a a méretű négyzetet

04 j a P, n arallel for j to a P, 05 do küldje el a kszámolt refxet j + a -nak 06 S n arallel for j to a 07 do ÜZENET-SZÓR() P, n arallel for to a, j to a 08 j 09 do számítsa k és tárolja a y j -t z, +, 0 számítsa k és tárolja z x -t A NÉGYZETEN-PREFIX algortmus a a méretű négyzeten sorfolytonos ndexeléssel 3a + = O( a) léésben elvégz a refxszámítást. 3.4. Adatkoncentrácó Tegyük fel, hogy egy rocesszoros hálózatban d ( d < ) adat van rocesszoronként legfeljebb egy. Adatkoncentrácó az a feladat, hogy az adatokat egyesével helyezzük el az első d rocesszornál. Lánc esetében az adatokat a P, P,..., Pd rocesszorokhoz kell mozgatn. Rács esetében tetszés szernt ndexelés alkalmazható. Az adatkoncentrácó rocesszoros láncon legfeljebb léésben, / 6a+ O a léésben megoldható. ( ) a a méretű négyzeten 3

3.5. Kválasztás Tekntsünk egy a a méretű négyzetet, és tegyük fel, hogy a kulcsok n és a rocesszorok száma megegyezk! Ekkor a árhuzamos gére javasolt véletlen algortmus módosítható úgy, hogy négyzeten s munkaotmáls legyen. Az így kaott algortmus O (a) léésben megoldja a kválasztás feladatot a négyzeten. Tegyük fel most, hogy kevesebb rocesszorunk van, mnt kulcsunk ( < n)! Ekkor egy determnsztkus algortmus adható, mely az elemeket l. 5-ös csoortokra bontja, mnden csoortnak meghatározza a medánját, majd kszámítja ezen medánok M medánját. Ezután meghatározza M rangját ( r M ), majd az rm összehasonlítás eredményétől függően elhagyja az M-nél nagyobb, lletve nem nagyobb elemeket. Végül a megmaradó kulcsok közül rekurzívan kválasztja a megfelelőt. Amkor ezt az algortmust hálózatban hajtjuk végre, célszerű arra törekedn, hogy a kulcsok egyenletesen legyenek a rocesszorok között elosztva. Ennek érdekében a medánok M medánját súlyozással számoljuk: mnden csoortot az elemszámának megfelelő súllyal veszünk fgyelembe. A fent algortmus n kulcs közül megoldja a kválasztást. a a méretű négyzeten O n lg lg + a lg n léésben 4

3.6. Összefésülés Két m hosszúságú sorozat egy m rocesszoros láncon O (m) léésben összefésülhető. A fent ábra mutatja, hogyan fésül össze a áratlan-áros algortmus a ( 3,5,6,8 ) és (,4,,7 ) sorozatokat egy 8 rocesszoros láncon. Az ábra (a) része a bemenő adatokat tartalmazza. A (b) rész a bemenő sorozatok áros és áratlan ndexű elemeket tartalmazó részsorozatokra való felbontását mutatja. A (c) rész a P és Q sorozatok felcserélésével kaott állaotot tükröz. A (d) ábrarész a P és P, valamnt a Q és Q sorozatok (rekurzív) összefésülésével kaott sorozatokat tartalmazza. A következő két ábrarész az összekeveréssel kaott sorozatot, lletve a cserélő összehasonlítással kaott végeredményt ábrázolja. Legyen most négyzet a számítás modell. Feltesszük, hogy a -hatvány, és a bemenő adatok két részre osztva, kígyószerűen helyezkednek el az,,..., a a a, lletve az +, +,..., a oszlondexű rocesszorok hely memórájában. Mndkét rész a oszloból és a sorból álló adatkígyó. Ennek a két rendezett sorozatnak az összefésülésére alkalmas a következő algortmus: NÉGYZETEN-PP-FÉSÜL() Számítás modell: négyzet a Bemenet: (rocesszorszám, áratlan hatványa), X és X (mndkettő hosszúságú rendezett sorozat) Kmenet: Y ( hosszúságú rendezett sorozat) 0 f l = 0 then fésüljük össze a két kígyót 0 else cseréljük fel P -t és Q -et 03 rekurzívan fésüljük össze P -et és P -t A NÉGYZETEN-PP-FÉSÜL algortmus O (a) léésben befejeződk. 5

3.7. Rendezés A LÁNCON-PP-RENDEZ algortmus alaötlete ugyanaz, mnt a soros buborékrendezésé: a szomszédos kulcsokat összehasonlítjuk, és szükség esetén felcseréljük. LÁNCON-PP-RENDEZ() Számítás modell: lánc Bemenet: X (rendezendő kulcsok) Kmenet: Y ( hosszúságú rendezett sorozat) 0 P n arallel for to 0 do f áratlan then hasonlítson össze és cseréljen 03 else hasonlítson össze és cseréljen Ez az algortmus O ( ) léést tesz. Négyzetre két rendező algortmust adunk meg. A SCHEARSON-RENDEZ Θ ( a lg a) léést tesz, a másk vszont O (a) léésszámának köszönhetően munkahatékony. 6

SCHEARSON-RENDEZ() Számítás modell: négyzet Bemenet: X (rendezendő kulcsok) Kmenet: Y ( hosszúságú rendezett sorozat) 0 for to n 0 do f áros 03 then rendezzük az oszlookat 04 rendezzük az első sort növekvőleg 7

Az előző ábra (a) része egy 4 4 méretű négyzeten elrendezett kulcsokat ábrázol. Az első fázsban a sorokat rendezzük az egymást követő sorokat ellenkező módon (az első sort növekvőleg, a másodkat csökkenőleg, és így tovább). Az első fázs eredményét mutatja az ábra (b) része. Az ábra következő része rendre a másodk,, ötödk fázs után helyzetet mutatják. Az ötödk fázs végén a négyzet rendezve van. Most a áratlan-áros rendezés algortmust négyzeten valósítjuk meg. Ezzel az algortmussal elem O léésben rendezhető. méretű négyzeten ( ) 8