De ce contează?
Imaginează-ți o clasă în care fiecare elev și-a notat nota la ultimul test. Poți păstra informația în două feluri. Fie ții catalogul în ordine: „Ana 8, Bogdan 6, Carmen 8, Dan 10..." — știi exact a câta persoană ce notă a luat. Fie ții doar un afiș la intrare: „nota 6 a fost luată de 1 elev, nota 8 de 2 elevi, nota 10 de 1 elev". Ambele descriu aceiași elevi, dar răspund la întrebări diferite în viteze diferite.
Ideea-cheie
Aceleași date pot fi ținute în două reprezentări distincte, iar tu alegi care.
- Vectorul brut este șirul de elemente exact așa cum au venit:
v = [8, 6, 8, 10]. Păstrează ordinea și valorile exacte pe poziții — știi căv[0]e prima notă,v[3]e a patra. - Vectorul de frecvențe ține, pentru fiecare valoare posibilă, câte apariții are:
freq[6]=1, freq[8]=2, freq[10]=1. Pierde ordinea și nu mai știi cine a luat ce, dar răspunde instant la „de câte ori apare valoarea X?".
Nu e vorba că una e mai bună. E vorba că fiecare reprezentare face anumite operații ieftine și altele scumpe. Alegerea reprezentării schimbă ce întrebări poți răspunde repede.
Trecerea de la vectorul brut la cel de frecvențe este o cale cu sens unic. Din [8, 6, 8, 10] poți construi numărătorile. Dar din freq[6]=1, freq[8]=2, freq[10]=1 nu mai poți reconstrui ordinea originală — nu știi dacă șirul a fost 8 6 8 10 sau 6 8 10 8. Când transformi în frecvențe, arunci ordinea în mod conștient, în schimbul răspunsurilor rapide la numărători.