Video: Web Apps of the Future with React by Neel Mehta 2025
Lære å telle objekter i en strøm kan hjelpe deg med å finne de hyppigste gjenstandene eller rangere vanlige og uvanlige hendelser. Denne algoritmen utnytter hashfunksjoner og omtrentlige skisser. Det gjør det etter at du har filtrert dupliserte objekter og teller forskjellige elementer som har dukket opp i datastrømmen.
Du bruker denne teknikken til å løse problemer som å finne de hyppigste spørsmålene i en søkemotor, de bestselgende elementene fra en nettbutikk, de mest populære sidene på et nettsted eller de mest volatile aksjene (ved å telle tiden en aksje er solgt og kjøpt).
Du bruker løsningen på dette problemet, Count-Min Sketch, til en datastrøm. Det krever bare én datafort og lagrer så lite informasjon som mulig. Denne algoritmen brukes i mange virkelige situasjoner (for eksempel å analysere nettverkstrafikk eller administrere distribuerte datastrømmer). Oppskriften krever bruk av en haug med hashfunksjoner, hver med tilknytning til en bitvektor, på en måte som ligner et blomstfilter, som vist i figuren:
- Initialiser alle bitvektorene til nuller i alle posisjoner.
- Bruk hash-funksjonen for hver bitvektor når du mottar en gjenstand fra en strøm. Bruk den resulterende numeriske adressen til å øke verdien på den aktuelle posisjonen.
- Bruk hash-funksjonen til en gjenstand og hent verdien på tilhørende posisjon når du blir bedt om å estimere frekvensen til et objekt. Av alle verdiene mottatt fra bitvektorene, tar du det minste som frekvensen av strømmen.
Fordi kollisjoner alltid er mulige når du bruker en hashfunksjon, spesielt hvis den tilhørende bitvektoren har få spor, har flere bitvektorer tilgjengelig for hånden at minst en av dem beholder den riktige verdien. Valget av valget skal være det minste fordi det ikke er blandet med falske positive teller på grunn av kollisjoner.
