Flajolet – Martinův algoritmus - Flajolet–Martin algorithm

The Flajolet – Martinův algoritmus je algoritmus pro aproximaci počtu odlišných prvků v proudu s jedním průchodem a logaritmickou spotřebou prostoru v maximálním počtu možných odlišných prvků v proudu ( početně odlišný problém ). Algoritmus zavedl Philippe Flajolet a G. Nigel Martin ve svém článku z roku 1984 „Pravděpodobnostní algoritmy počítání pro aplikace databází“.[1] Později to bylo vylepšeno v „LogLog počítání velkých světových stran“ Marianne Durand a Philippe Flajolet,[2] a "HyperLogLog: Analýza téměř optimálního algoritmu odhadu mohutnosti "od Philippe Flajolet et al.[3]

Ve svém článku z roku 2010 „Optimální algoritmus pro problém odlišných prvků“[4] Daniel M. Kane, Jelani Nelson a David P. Woodruff poskytují vylepšený algoritmus, který využívá téměř optimální prostor a má optimální Ó(1) časy aktualizací a hlášení.

Algoritmus

Předpokládejme, že dostáváme a hashovací funkce který mapuje vstup na celá čísla v rozsahu , a kde jsou výstupy dostatečně rovnoměrně rozloženo. Všimněte si, že sada celých čísel od 0 do odpovídá množině binárních řetězců délky . Pro jakékoli nezáporné celé číslo , definovat být -tý bit v binární reprezentaci takové, že:

Poté definujeme funkci která vydává pozici nejméně významného nastaveného bitu v binární reprezentaci :

kde . Všimněte si, že s výše uvedenou definicí používáme pro pozice 0 indexování. Například, , protože nejméně významný bit je 1 (0. pozice), a , protože nejméně významný bit je na 3. pozici. V tomto bodě si všimněte, že za předpokladu, že výstup naší hashovací funkce je rovnoměrně rozložen, pak pravděpodobnost pozorování hash výstupu končícího (jeden, následovaný nula) je , protože to odpovídá převrácení hlavy a pak ocas se spravedlivou mincí.

Nyní Flajolet – Martinův algoritmus pro odhad mohutnosti a multiset je následující:

  1. Inicializujte bitový vektor BITMAP, který má délku a obsahují všechny 0s.
  2. Pro každý prvek v :
    1. Vypočítejte index .
    2. Soubor .
  3. Nechat označují nejmenší index takhle .
  4. Odhadněte mohutnost tak jako , kde .

Myšlenka je, že pokud je počet odlišných prvků v multisetu , pak je přístupný přibližně časy, je přístupný přibližně krát a tak dále. V důsledku toho, pokud , pak je téměř jistě 0, a pokud , pak je téměř jistě 1. Pokud , pak lze očekávat, že bude 1 nebo 0.

Korekční faktor je nalezen výpočty, které najdete v původním článku.

Zlepšení přesnosti

Problém s algoritmem Flajolet – Martin ve výše uvedené formě spočívá v tom, že výsledky se výrazně liší. Běžným řešením bylo spuštění algoritmu vícekrát s různé hashovací funkce a kombinovat výsledky z různých běhů. Jedním z nápadů je vzít v úvahu výsledky společně z každé hashovací funkce, získání jediného odhadu mohutnosti. Problém je v tom, že průměrování je velmi náchylné k odlehlým hodnotám (které jsou zde pravděpodobně). Jiný nápad je použít medián, což je méně náchylné k vlivům odlehlých hodnot. Problém je v tom, že výsledky mohou mít pouze formu , kde je celé číslo. Běžným řešením je kombinace střední a střední hodnoty: Vytvořit hash funkce a rozdělit je na odlišné skupiny (každá o velikosti ). V každé skupině použijte medián pro agregaci dohromady výsledky a nakonec vezměte průměr z skupinové odhady jako konečný odhad.

V roce 2007 HyperLogLog Algoritmus rozdělí multiset na podskupiny a odhadne jejich kardinality, poté použije harmonický průměr spojit je do odhadu původní mohutnosti.[3]

Viz také

Reference

  1. ^ Flajolet, Philippe; Martin, G. Nigel (1985). „Algoritmy pravděpodobnostního počítání pro databázové aplikace“ (PDF). Journal of Computer and System Sciences. 31 (2): 182–209. doi:10.1016/0022-0000(85)90041-8. Citováno 2016-12-11.
  2. ^ Durand, Marianne; Flajolet, Philippe (2003). "Počítání logů velkých kardinálností" (PDF). Algoritmy - ESA 2003. Přednášky z informatiky. 2832. str. 605. doi:10.1007/978-3-540-39658-1_55. ISBN  978-3-540-20064-2. Citováno 2016-12-11.
  3. ^ A b Flajolet, Philippe; Fusy, Éric; Gandouet, Olivier; Meunier, Frédéric (2007). „Hyperloglog: Analýza téměř optimálního algoritmu odhadu mohutnosti“ (PDF). Sborník z diskrétní matematiky a teoretické informatiky. Nancy, Francie. AH: 127–146. CiteSeerX  10.1.1.76.4286. Citováno 2016-12-11.
  4. ^ Kane, Daniel M .; Nelson, Jelani; Woodruff, David P. (2010). "Optimální algoritmus pro problém odlišných prvků" (PDF). Sborník dvacátého devátého sympózia ACM SIGMOD-SIGACT-SIGART o zásadách databázových systémů dat - PODS '10. str. 41. doi:10.1145/1807085.1807094. ISBN  978-1-4503-0033-9. Citováno 2016-12-11.

Další zdroje