Tipurile abstracte de date (TAD) reprezintă o modalitate de a modela datele prin specificarea operațiilor permise asupra lor, fără a dezvălui detaliile interne de implementare. În cadrul acestei lecții, ne concentrăm pe două TAD-uri fundamentale: mulțimile (set) și dicționarele (map). O mulțime este o colecție de elemente distincte, fără o ordine particulară, care suportă operații precum adăugarea, ștergerea, căutarea, reunirea, intersecția și diferența.
În contextul Bacalaureatului, se pune accent pe implementarea eficientă a mulțimilor folosind vectori de frecvență (pentru mulțimi de numere mici), tabele hash sau arbori binari de căutare. De exemplu, pentru a verifica dacă un element aparține mulțimii, un vector de frecvență oferă complexitate O(1) la căutare, dar este limitat la un interval cunoscut de valori. Pe de altă parte, un dicționar asociază chei unice cu valori, implementat uzual prin tabele hash, care oferă operații de inserare, ștergere și căutare în medie O(1).
În implementări C/C++ la bac, se folosesc fie vectori paraleli (unul pentru chei și unul pentru valori) cu căutare liniară, fie funcții hash simple. O aplicație clasică este contorizarea frecvenței cuvintelor dintr-un text. Este important ca elevii să înțeleagă diferența dintre specificația abstractă (ce face TAD-ul) și implementarea concretă (cum face).
La bacalaureat, se testează atât cunoașterea operațiilor și proprietăților, cât și capacitatea de a scrie algoritmi de implementare, de exemplu pentru reuniunea a două mulțimi stocate ca vectori sortați (algoritm de interclasare). De asemenea, se discută compromisul între memorie și timp: un vector de frecvență consumă multă memorie dacă domeniul valorilor este mare, dar oferă operații rapide, în timp ce un arbore binar echilibrat consumă mai puțină memorie dar are complexitate logaritmică.
Concepte cheie: TAD (Tip Abstract de Date) – separarea specificației de implementare, Mulțime – colecție de elemente distincte, operații: adăugare, ștergere, căutare, reuniune, intersecție, diferență, Dicționar – asociere cheie–valoare, operații: inserare, căutare după cheie, ștergere, Implementare cu vector de frecvență – O(1) la căutare, memorie mare pentru domenii largi, Implementare cu tabelă hash – O(1) mediu, gestionarea coliziunilor (înlănțuire), Reuniunea a două mulțimi sortate prin interclasare – O(n+m)
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.