8. Előadás - Statisztikai algoritmusok
Tartomány
A mintában szereplő minimum és maximum érték kiválasztására van szükség.
Kiválasztás
Adott \(n\) darab kulcsunk, és meg szeretnénk határozni az \(i\)-edik legkisebb elemet (\(1 \leq i \leq n\)).
A kiválasztás egy speciális esete a maximum érték meghatározása, vagyis amikor \(i = n\).
tétel
\(n\) elem esetében \(n^2\) számú processzor használatával egy PRAM CRCW gépen a kiválasztás konstans időben (\(\Theta (1)\) lépésben) megoldható.
Feltételezzük, hogy minden kulcs különböző értékű.
Legyen egy \(Q \in \{0, 1\}^{n \times n}\) mátrix.
Az \(n^2\) számú processzoron (párhuzamosan) határozzuk meg a \(q_{ij} = x_i < x_j\) logikai értékeket.
Képezzünk soronként csoportokat: \(G_1, \ldots, G_n\).
Minden \(G_i\) csoporton belül a \(Q\) értékeken vagy műveletet végrehajtva kapunk \(n\) darab logikai értéket.
Azon \(x_i\) elem lesz a maximális érték, ahol a csoportokhoz tartozó logikai érték 0-ra adódik.
Figyelem
Az értékek egyediségére vonatkozó megkötés ez esetben csak egyszerűsítés. Amennyiben előfordulhatnak ismétlődő értékek, az indexekkel párokat alkotva \((x_i, i)\) egyszerűen egyedivé tehetők.
Az algoritmus jellemzői:
A hatékonyságot ebben az esetben érdemes a szekvenciális és a párhuzamos végrehajtáshoz használt költség hányadosaként megadni:
Átlag
A számítás nyilvánvalóan az elemek összeadásával és egy plusz lépéssel megoldható.
A gyakorlatban problémát jelenthet az, hogy ha az összeg átlépheti a számábrázolási tartományt.
Szórás
Tapasztalati szórásnégyzet
Korrigált tapasztalati szórásnégyzet
A számítások az átlag számításhoz hasonlóan jól párhuzamosíthatók.
Közel 1 hatékonyságú algoritmus adható a problémára (\(S_p \approx p\)).
Medián
A rendezett minta középső eleme.
\(2k + 1\) számú elem esetében a rendezett minta \((k + 1)\)-edik eleme.
\(2k\) elem esetén a rendezett minta \(k\)-adik elemét alsó-, a \((k + 1)\)-edik elemét felső mediánnak nevezzük.
A számítására különböző alternatívák adódnak.
Rendezést követően a medián értéke konstans időben kiolvasható.
Gyorsrendezés esetében elegendő csak azon az ágon folytatnunk a rendezést, amely intervallum tartalmazza a \((k + 1)\) (vagy a \(k\)) indexet.
Párhuzamosítás
A gyorsrendezés esetében problémát jelent a felosztáshoz használt elem (pivot elem) kiválasztása.
Rendezett mintát és a részintervallumok első elemének választását feltételezve a rendezésnél a számítási idő \(n^2\)-re adódik. A négyzetes jelleg így a medián számításánál is megmaradna.
A medián keresése gyorsítható, hogy ha törekszünk arra, hogy a tömbünket közel egyenlő részekre osszuk fel. Ezt elérhetjük például úgy, hogy
a tömböt \(\left\lceil \dfrac{n}{K} \right\rceil\) részre osztjuk fel, és
mindegyikben külön megkeressük a medián értéket, majd
a kapott \(\left\lceil \dfrac{n}{K} \right\rceil\) számú mediánnak ismét vesszük a mediánját.
A mediánok mediánjának a számítását rekurzívan végezhetjük.
A felosztáshoz pivot elemnek a mediánok mediánját választhatjuk.
Irodalmi ajánlás a \(K = 5\) érték.
A párhuzamosításhoz a részintervallumokban a medián értékek függetlenül, időben egyszerre számolhatók.
Hisztogram
Egy adott intervallum felett vizsgáljuk az elemek intervallumba esésének gyakoriságát (vagy valószínűségét).
Megkülönböztetünk gyakoriság és sűrűség hisztogramokat.
Általában egyenközű felbontást alkalmazunk.
Tekintsük az \([a, b)\) valós intervallumot, ami felett vizsgálni szeretnénk a mintában szereplő értékek gyakoriságát! Osszuk ezt fel \(k\) egyenlő részre. Ekkor az intervallumokba eső gyakoriságok a következő formában számíthatók.
Párhuzamosítás
Mindkét FOR ciklus párhuzamosan, PARALLEL FOR-ként is kezelhető.
A számítási egységek számával közel lineáris gyorsítás elérhető.
A \(C\) eredménytömb elemeinek növeléséhez PRAM CREW modell esetében zárolás szükséges.
\(\rhd\) Nem ekvidisztáns felbontás esetén milyen lehetőségek vannak a gyorsabb, hatékonyabb számítások érdekében?
Sztochasztikus integrálás
Egy határozott integrál értékét közelíthetjük véletlenszerűen választott pontok alapján a görbe „alatti” pontok számának, és az összes pontnak az arányával.
A számítás egyszerűen és hatékonyan párhuzamosítható.
Jól alkalmazható magasabb dimenziókban is, ahol az intervallum felosztásos integrálás körülményes.
\(\rhd\) Adjunk példát más, hasonlóképpen párhuzamosítható szimulációkra!
Kérdések
Feladatok
Átlag
Készítsen egy példát olyan esetre, amelyben az átlag számítása során az összeg átlépi a számábrázolási tartományt! Adjon rá megoldást!
Medián
Vizsgáljuk meg, hogy mennyire tud hatékony lenni a medián számítása, hogy ha a felosztáshoz mindig a résztömb átlagát használjuk!
Mérések segítségével próbáljuk meg optimalizálni az algoritmusban szereplő \(K\) értékét!
Hisztogram
Írjuk fel a hisztogram számításának a pszeudó kódját arra az esetre, hogy ha egy \([0, 9]\) egészes intervallum felett szeretnénk összeszámolni az értékeket!
Sztochasztikus integrálás
Hasonlítsa össze a numerikus és a sztochasztikus integrálást!
Készítse el mindkettőnek a párhuzamos implementációját!
Konkrét példa esetében nézze meg, hogy adott idő alatt melyik ad pontosabb eredményt!
Hasonlóképpen vizsgálja meg, hogy az adott pontosság eléréséhez szükséges számítási időknek milyen az eloszlása!
A sztochasztikus integrál esetében ábrázolja az iterációnkénti közelítéseket. (Paraméterként lehessen megadni, hogy egy iterációban mennyi új pontot generáljon az algoritmus!)