Kukačkový filtr - Cuckoo filter

A kukačkový filtr je prostorově efektivní pravděpodobnostní datová struktura který se používá k testování, zda živel je členem a soubor, jako Bloomův filtr dělá. Falešně pozitivní shody jsou možné, ale falešné negativy nejsou - jinými slovy, dotaz vrátí buď „možná v sadě“, nebo „rozhodně není v sadě“. Filtr kukačky může také mazat existující položky, což filtry Bloom nepodporují. Navíc u aplikací, které ukládají mnoho položek a cílí na mírně nízkou míru falešně pozitivních výsledků, mohou kukačkové filtry dosáhnout menšího prostoru nad hlavou než filtry Bloom optimalizované pro prostor.[1]

Kukačkové filtry byly poprvé popsány v roce 2014.[2]

Popis algoritmu

Kukačkový filtr používá a -way set-asociativní hash tabulka založená na kukačka hash k uložení otisků prstů všech položek (do každého segmentu hashtable lze uložit až Zejména dva potenciální segmenty v tabulce pro danou položku požadované hašováním kukaček se počítají z následujících dvou hashových funkcí (označovaných jako hašování kukačky s částečným klíčem[2]):


Použití výše uvedených dvou hash funkcí na konstrukci tabulky hash kukačky umožňuje přemístění položky pouze na základě otisků prstů, když je nemožné načíst původní položku. Výsledkem je, že při vkládání nové položky, která vyžaduje přemístění stávající položky , další možné umístění v tabulce pro tuto položku vykopnut z kbelíku se počítá jako

Na základě hašování kukaček s částečným klíčem může hašovací tabulka dosáhnout jak vysokého využití (díky hašování kukaček), tak kompaktnosti, protože se ukládají pouze otisky prstů. Operace vyhledávání a mazání kukačkového filtru jsou jednoduché. Kontrolovat lze maximálně dvě místa a . Pokud je nalezen, lze v něm provést příslušnou operaci vyhledávání nebo odstranění Více teoretické analýzy kukačkových filtrů lze najít v literatuře.[3][4]

Srovnání s Bloomovými filtry

Kukačkový filtr je podobný a Bloomův filtr v tom, že jsou oba velmi rychlé a kompaktní a oba mohou vracet falešná pozitiva jako odpovědi na dotazy týkající se set-membership:

  • Prostorově optimální filtry Bloom bity prostoru na jeden vložený klíč, kde je míra falešně pozitivních výsledků. Kukačkový filtr vyžaduje kde je zatěžovací koeficient zatěžovací tabulky, který může být na základě nastavení kukačkového filtru. Povšimněte si, že teoretická dolní mez vyžaduje informace bity pro každou položku.
  • Při pozitivním vyhledávání vyžaduje prostorový filtr Bloom konstantu paměť přistupuje do bitového pole, zatímco kukačkový filtr vyžaduje konstantní maximálně dvě vyhledávání.
  • Kukačkové filtry mají sníženou rychlost vkládání po dosažení prahové hodnoty zatížení, když se doporučuje rozšíření tabulky. Naproti tomu filtry Bloom mohou vkládat nové položky za cenu vyšší míry falešně pozitivních výsledků před rozšířením.

Omezení

  • Filtr kukačky může odstranit pouze položky, o nichž je známo, že byly vloženy dříve.
  • Vkládání může selhat a je vyžadováno opětovné promíchání jako u jiných hash tabulek s kukačkou. Všimněte si, že amortizovaná složitost vložení je stále .[5]

Reference

  1. ^ Michael D. Mitzenmacher. „Bloomové filtry, hašování kukaček, kukačkové filtry, adaptivní kukačkové filtry a naučené květinové filtry“.
  2. ^ A b Ventilátor, koš; Andersen, Dave G .; Kaminsky, Michael; Mitzenmacher, Michael D. (2014). Kukačkový filtr: Prakticky lepší než Bloom. Proc. 10. mezinárodní konference ACM o konferenci o nových experimentech a technologiích v oblasti vytváření sítí (CoNEXT '14). Sydney, Austrálie. str. 75–88. doi:10.1145/2674005.2674994. ISBN  9781450332798.
  3. ^ Eppstein, David (22. června 2016). Kukačkový filtr: Zjednodušení a analýza. Proc. 15. skandinávské sympozium a workshopy o teorii algoritmů (SWAT 2016). Leibniz International Proceedings in Informatics (LIPIcs). 53. Reykjavík, Island. str. 8: 1–8: 12. arXiv:1604.06067. doi:10.4230 / LIPIcs.SWAT.2016.8.
  4. ^ Fleming, Noah (17. května 2018). Kukačkové hashování a kukačkové filtry (PDF) (Technická zpráva). University of Toronto.
  5. ^ Pagh, Rasmus; Rodler, Flemming Friche (2001). "Kukaččí hash". Proc. 9. výroční evropské symposium o algoritmech (ESA 2001). Přednášky z informatiky. 2161. Århus, Dánsko. s. 121–133. doi:10.1007/3-540-44676-1_10. ISBN  978-3-540-42493-2.

externí odkazy