Streaming algoritmus - Streaming algorithm

A számítástechnika , a streaming algoritmusok algoritmusokat feldolgozására adatfolyamok , amelyben a bemenő kerül bemutatásra, mint a szekvencia elemek és lehet vizsgálni csak néhány menetben (általában csak egy ). A legtöbb modellben ezek az algoritmusok korlátozott memóriához férnek hozzá (általában logaritmikusak az adatfolyam méretében és/vagy maximális értékében). Előfordulhat, hogy az egyes tételek feldolgozási ideje is korlátozott.

Ezek a korlátozások azt jelenthetik, hogy egy algoritmus hozzávetőleges választ ad az adatfolyam összegzése vagy "vázlata" alapján.

Történelem

Bár a streaming algoritmusokat Munro és Paterson már 1978 -ban, valamint Philippe Flajolet és G. Nigel Martin 1982/83 -ban tanulmányozta, a streaming algoritmusok területét először Noga Alon , Yossi 1996 -os dokumentumában formalizálta és népszerűsítette. Matias , és Szegedy Mario . Ehhez a cikkhez a szerzők később 2005 -ben elnyerték a Gödel -díjat "a streaming algoritmusokhoz nyújtott alapvető hozzájárulásukért". Azóta nagy mennyiségű munka folyik az adatfolyam -algoritmusok köré, amelyek számítástechnikai területek széles skáláját ölelik fel, mint például az elmélet, az adatbázisok, a hálózatépítés és a természetes nyelvfeldolgozás.

A féláramú algoritmusokat 2005-ben vezették be a gráfok streamelési algoritmusainak lazításaként, amelyekben a megengedett tér lineáris az n csúcsok számában , de csak logaritmikus az m élek számában . Ez a lazítás még mindig jelentős a sűrű gráfok számára, és megoldhat olyan érdekes problémákat (például a kapcsolódást), amelyek térben oldhatatlanok .

Modellek

Adatfolyam modell

Az adatfolyam -modellben a bemenet egy része vagy egésze egész számok véges szekvenciájaként jelenik meg (valamilyen véges tartományból), amely általában nem érhető el véletlenszerű hozzáféréshez , hanem egyenként érkezik egy "folyamban". Ha az adatfolyamnak hossza n , és a domain van mérete m , algoritmusok általában korlátozott hely használni, amely logaritmikus a m és n . Általában csak kis számú állandó áthaladást tudnak végrehajtani a patakon, néha csak egyet .

Forgatókapu és pénztárgép modellek

A streaming szakirodalom nagy része statisztikai számításokkal foglalkozik a tárolásra túl nagy frekvenciaeloszlásokról. Ennek a problémakörnek van egy vektora (inicializálva a nulla vektorra ), amely frissítéseket mutat be a folyamban. Ezen algoritmusok célja olyan funkciók kiszámítása, amelyek lényegesen kevesebb helyet foglalnak el, mint amennyi a pontos ábrázoláshoz szükséges . Az ilyen folyamok frissítésére két általános modell létezik, az úgynevezett "pénztárgép" és a "turnstile" modell.

A pénztárgép -modellben minden frissítés formájú , tehát néhány pozitív egész számmal növekszik . Figyelemre méltó különleges eset, amikor (csak az egység behelyezése megengedett).

A forgószárnyas modellben minden frissítés formájú , tehát néhány (esetleg negatív) egész számmal növelhető . A "szigorú turnstile" modellben egyetlen esetben sem lehet kevesebb nullánál.

Tolóablakos modell

Számos cikk figyelembe veszi a "csúszó ablak" modellt is. Ebben a modellben az érdekes funkció az adatfolyam rögzített méretű ablakán keresztül történő számítás. A folyam előrehaladtával az ablak végén lévő elemek eltávolításra kerülnek, míg az adatfolyamból származó új elemek a helyükre kerülnek.

A fenti frekvenciaalapú problémák mellett néhány más típusú problémát is tanulmányoztak. Sok gráfprobléma megoldódik abban a beállításban, ahol a grafikon szomszédsági mátrixát vagy szomszédsági listáját valamilyen ismeretlen sorrendben közvetítik. Vannak olyan problémák is, amelyek nagymértékben függenek az adatfolyam sorrendjétől (azaz aszimmetrikus függvények), például a folyam inverzióinak számolása és a leghosszabban növekvő alsorozat megtalálása.

Értékelés

Az adatfolyamokon működő algoritmus teljesítményét három alapvető tényező határozza meg:

  • Az algoritmus által a folyamon végrehajtott passzok száma.
  • A rendelkezésre álló memória.
  • Az algoritmus futási ideje.

Ezek az algoritmusok sok hasonlóságot mutatnak az online algoritmusokkal, mivel mindkettő megköveteli a döntést, mielőtt minden adat rendelkezésre áll, de nem azonosak. Az adatfolyam -algoritmusoknak csak korlátozott memóriája áll rendelkezésre, de képesek lehetnek elhalasztani a műveletet, amíg egy pontcsoport meg nem érkezik, míg az online algoritmusoknak lépéseket kell tenniük, amint minden pont megérkezik.

Ha az algoritmus közelítő algoritmus, akkor a válasz pontossága egy másik kulcsfontosságú tényező. A pontosságot gyakran közelítésként határozzák meg, ami azt jelenti, hogy az algoritmus kisebb hibát ér el, mint valószínűséggel .

Alkalmazások

A streamelési algoritmusoknak számos alkalmazása van a hálózatépítésben, mint például az elefántáramlás hálózati kapcsolatainak figyelése , a különálló folyamok számának számítása, az áramlási méretek megoszlásának becslése stb. Alkalmazásaik vannak adatbázisokban is, például becsülik a csatlakozás méretét .

Néhány streaming probléma

Frekvencia pillanatok

A frekvenciahalmaz k -edik frekvenciamomentuma a következő .

Az első pillanat egyszerűen a frekvenciák összege (azaz a teljes szám). A második pillanat hasznos az adatok statisztikai tulajdonságainak, például a Gini variációs együttható kiszámításához . a leggyakrabban előforduló tételek gyakorisága.

Alon, Matias és Szegedy alapvető dolgozata a gyakorisági pillanatok becslésének problémájával foglalkozott.

Frekvenciamomentumok kiszámítása

A frekvenciamomentumok megkeresésének közvetlen megközelítése megköveteli a m i regiszter fenntartását minden különálló a i ∈ (1,2,3,4, ..., N ) elemhez , amely legalább a rend memóriáját igényli . De vannak helykorlátaink, és olyan algoritmust igényelünk, amely sokkal alacsonyabb memóriában számol. Ezt úgy érhetjük el, hogy közelítéseket használunk a pontos értékek helyett. Egy algoritmust, amely kiszámít egy ( ε, δ ) közelítése F k , ahol F” k a ( ε, δ ) - közelítő értéke az F k . Ahol ε a közelítő paraméter, és δ a megbízhatósági paraméter.

F 0 kiszámítása (különálló elemek egy adatfolyamban)
FM-Sketch algoritmus

Flajolet és mtsai. bevezette a valószínűségi számítási módszert, amelyet Robert Morris dolgozata ihletett . Morris tanulmányában azt mondja, hogy ha a pontosság követelménye leesett, egy számláló n lehet helyettesíteni egy számláló log n tárolható a log log n bit. Flajolet és mtsai. továbbfejlesztve ezt a módszert egy h hash függvény használatával, amely feltételezi, hogy egyenletesen osztja el az elemet a hash térben ( L hosszúságú bináris karakterlánc ).

Jelölje a bit ( y, k ) az y bináris ábrázolásának k -edik bitjét

A Let a legkevésbé szignifikáns 1 bites pozíciót jelöli y i bináris ábrázolásában, megfelelő konvencióval .

Legyen A az M hosszúságú adatfolyam sorozata, amelynek számosságát meg kell határozni. Legyen BITMAP [0 ... L - 1] a

hash tér, ahol a ρ ( kivonatolt értékek ) van rögzítve. Az alábbi algoritmus ezután meghatározza hozzávetőleges számossága A .

Procedure FM-Sketch:

    for i in 0 to L − 1 do
        BITMAP[i] := 0 
    end for
    for x in A: do
        Index := ρ(hash(x))
        if BITMAP[index] = 0 then
            BITMAP[index] := 1
        end if
    end for
    B := Position of left most 0 bit of BITMAP[] 
    return 2 ^ B

Ha egy adatfolyamban N különálló elem található.

  • Mert akkor a BITMAP [ i ] minden bizonnyal 0
  • Mert akkor a BITMAP [ i ] minden bizonnyal 1
  • Az ezután BITMAP [ i ] egy peremén a 0 és 1-es
K -minimális értékű algoritmus

Az előző algoritmus leírja Flajolet és Martin első kísérletét az F 0 közelítésére az adatfolyamban. Algoritmusuk kiválaszt egy véletlenszerű hash függvényt, amely feltételezi, hogy egyenletesen osztja el a hash értékeket a hash térben.

Bar-Yossef és mtsai. bevezetett k-minimum értékű algoritmus az adatfolyamban lévő különböző elemek számának meghatározására. Ők használt egy hasonló hash függvény H , amelyek normalizálni lehet, hogy a [0,1], mint . De rögzítettek egy t korlátot a hash térben lévő értékek számára. A t értékét a sorrend feltételezi (azaz a kisebb közelítési érték ε több t-t igényel ). A KMV algoritmus csak a t -legkisebb hash -értékeket tartja a hash térben. Miután a patak összes m értéke megérkezett, kiszámításra kerül . Vagyis egy közel egységes hash-térben legalább t elemre számítanak, mint a .

Procedure 2 K-Minimum Value

Initialize first t values of KMV 
for a in a1 to an do
    if h(a) < Max(KMV) then
        Remove Max(KMV) from KMV set
        Insert h(a) to KMV 
    end if
end for 
return t/Max(KMV)
A KMV komplexitás elemzése

A KMV algoritmus memóriabites térben valósítható meg . Mindegyik kivonatolási értékhez rendelt memóriabitek szükségesek . A sorrend hash értékei vannak . A hozzáférési idő csökkenthető, ha a t hash értékeket egy bináris fában tároljuk . Így az idő bonyolultsága lecsökken .

F k számítása

Alon és mtsai. becsli az F k -t az adott térben és időben kiszámítható véletlen változók meghatározásával. A véletlen változók várható értéke F k hozzávetőleges értékét adja .

Tegyük fel, hogy az m sorozat hossza előre ismert. Ezután készítsen X véletlenszerű változót az alábbiak szerint:

  • Jelölje egy p lehet véletlenszerű tagja szekvencia egy index a p ,
  • Let , képviseli az előfordulások számát az L belül a tagok a szekvencia A következő egy p .
  • Véletlen változó .

Tegyük fel, hogy S 1 rendű és S 2 rendű . Az algoritmus S 2 véletlen változót vesz fel és adja ki a mediánt . Ahol Y i X ij átlaga, ahol 1 ≤ jS 1 .

Most számítsa ki az E ( X ) véletlen változó elvárását .

F k bonyolultsága

A fentiekben tárgyalt F k kiszámítási algoritmusból láthatjuk, hogy minden X véletlen változó tárolja a p és r értékét . Tehát az X kiszámításához csak log ( n ) biteket kell fenntartanunk a p tárolására és log ( n ) biteket az r tárolására . Az X véletlenszerű változó teljes száma a .

Ezért az algoritmus teljes térbonyolultsága nagyságrendű

Egyszerűbb módszer az F 2 kiszámítására

Az előző algoritmus memóriabitek sorrendjében számol . Alon és mtsai. leegyszerűsítve ezt az algoritmust négy bölcs független független véletlen változó használatával, amelynek értékei leképezve .

Ez tovább csökkenti a komplexitást számítani , hogy

Gyakori elemek

Az adatfolyam -modellben a gyakori elemekkel kapcsolatos probléma az, hogy olyan elemhalmazt ad ki, amely több mint a folyam bizonyos rögzített töredéke. Különleges eset a többségi probléma , amelynek során meg kell határozni, hogy bármely érték a folyam többségét alkotja -e vagy sem.

Formálisabban rögzítsen valamilyen pozitív c > 1 konstansot , legyen az áram hossza m , és f i jelölje az i érték gyakoriságát a folyamban. A gyakori elemek probléma a kimeneti halmaz { i | f i > m/c}.

Néhány figyelemre méltó algoritmus:

Eseményérzékelés

Az adatfolyamokban az események észlelése gyakran a fent felsorolt ​​nehéz ütő algoritmus segítségével történik: a leggyakoribb tételeket és azok gyakoriságát ezen algoritmusok egyikével határozzák meg, majd az előző időponthoz képest a legnagyobb növekedést jelentik trendként. Ez a megközelítés finomítható exponenciálisan súlyozott mozgóátlagok és variancia használatával a normalizáláshoz.

Különálló elemek számolása

A folyamban lévő különböző elemek számának (néha F 0 pillanatnak) számolása egy másik jól tanulmányozott probléma. Az első algoritmust Flajolet és Martin javasolta. 2010 -ben Daniel Kane , Jelani Nelson és David Woodruff aszimptotikusan optimális algoritmust talált erre a problémára. Ez használ O ( ε 2 + log d ) térben, O (1) legrosszabb frissítés és jelentési szer, valamint az univerzális hash függvények, és egy R -wise független hash család, ahol r = Ω (log (1 / ε ) / log log (1/ ε )) .

Entrópia

A (empirikus) entrópiája frekvenciák készletéhez definiáljuk , ahol .

Online tanulás

Tanuljon meg egy modellt (pl. Osztályozó ) egyetlen passz segítségével egy edzéssorozaton.


Alsó határok

Sok vizsgált adatfolyam -probléma esetében alacsonyabb határokat számítottak ki. Az alsó határok kiszámításának leggyakoribb technikája messze a kommunikáció bonyolultsága volt .

Lásd még

Megjegyzések

  1. ^ Munro, J. Ian; Paterson, Mike (1978). "Kiválasztás és rendezés korlátozott tárhellyel". 19. éves szimpózium a számítástechnika alapjairól, Ann Arbor, Michigan, USA, 1978. október 16–18 . IEEE Számítógépes Társaság. 253–258. doi : 10.1109/SFCS.1978.32 .
  2. ^ a b c Flajolet & Martin (1985)
  3. ^ a b c d Alon, Matias & Szegedy (1996)
  4. ^ Feigenbaum, Joan; Sampath, Kannan (2005). "A gráfproblémákról egy féláramú modellben" . Elméleti számítástechnika . 348 (2): 207–216. doi : 10.1016/j.tcs.2005.09.013 .
  5. ^ Babcock, Brian; Babu, Shivnath; Datar, Mayur; Motwani, Rajeev; Widom, Jennifer (2002). Modellek és problémák az adatfolyam -rendszerekben . A huszonegyedik ACM SIGMOD-SIGACT-SIGART szimpózium folyóirata az adatbázis-rendszerek elveiről . PODS '02. New York, NY, USA: ACM. 1–16. CiteSeerX  10.1.1.138.190 . doi : 10.1145/543613.543615 . ISBN 978-1581135077. S2CID  2071130 .
  6. ^ Bar-Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D .; Trevisan, Luca (2002-09-13). Különálló elemek számlálása egy adatfolyamban . Randomizációs és közelítési technikák a számítástechnikában . Előadás jegyzetek a számítástechnikában. Springer, Berlin, Heidelberg. 1–10. CiteSeerX  10.1.1.12.6276 . doi : 10.1007/3-540-45726-7_1 . ISBN 978-3540457268.
  7. ^ Gilbert és mtsai. (2001)
  8. ^ Xu (2007)
  9. ^ Indyk, Piotr; Woodruff, David (2005-01-01). Az adatfolyamok gyakorisági pillanatainak optimális közelítése . A számítástechnika elméletéről szóló harminchetedik éves ACM szimpózium folyóirata . STOC '05. New York, NY, USA: ACM. 202–208. doi : 10.1145/1060590.1060621 . ISBN 978-1-58113-960-0. S2CID  7911758 .
  10. ^ a b Bar-Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D .; Trevisan, Luca (2002-09-13). Rolim, José DP; Vadhan, Salil (szerk.). Különálló elemek számlálása az adatfolyamban . Előadás jegyzetek a számítástechnikában. Springer Berlin Heidelberg. 1–10. CiteSeerX  10.1.1.12.6276 . doi : 10.1007/3-540-45726-7_1 . ISBN 978-3-540-44147-2.
  11. ^ Morris (1978)
  12. ^ Flajolet, Philippe (1985-03-01). "Hozzávetőleges számolás: Részletes elemzés". BIT numerikus matematika . 25. (1): 113–134. CiteSeerX  10.1.1.64.5320 . doi : 10.1007/BF01934993 . ISSN  0006-3835 . S2CID  2809103 .
  13. ^ Cormode, Graham (2014). "Misra-Gries összefoglalók". In Kao, Ming-Yang (szerk.). Algoritmusok enciklopédiája . Springer USA. 1–5. doi : 10.1007/978-3-642-27848-8_572-1 . ISBN 9783642278488.
  14. ^ Schubert, E .; Weiler, M .; Kriegel, HP (2014). SigniTrend: a szöveges folyamokban felmerülő témák skálázható észlelése a kivonatolt szignifikanciaküszöbök szerint . A 20. ACM SIGKDD nemzetközi konferencia előadásai a tudásfeltárásról és az adatbányászatról - KDD '14. 871–880. doi : 10.1145/2623330.2623740 . ISBN 9781450329569.
  15. ^ Kane, Nelson és Woodruff (2010)

Hivatkozások