Struttura dati
Una struttura dati è un modo formale per organizzare i dati in un insieme, consentendo la manipolazione (processamento, conservazione) e l'esaminazione (ricerca) tramite vari metodi. La scelta di una struttura dati è cruciale per l’efficienza algoritmica, poiché influenza direttamente la complessità temporale e spaziale.
Un’array monodimensionale è una delle strutture dati più semplici.
Correlazione tra struttura dati e algoritmi
La scelta di una struttura rispetto ad un’altra è strettamente legata a quella degli algoritmi, per questo spesso vengono considerati insieme. In altre parole la scelta della struttura dati influisce inevitabilmente sull’efficienza computazionale degli algoritmi che la manipolano.
4. Strutture Dati Basate su Chiavi
Queste strutture organizzano i dati in base a una chiave associata a ciascun elemento, consentendo un accesso rapido.
6. Strutture Dati Specializzate per Insiemi
- S (Disjoint Set Data Structure):
- Descrizione: Mantiene una famiglia di insiemi dinamici disgiunti. Ogni insieme è identificato da un elemento rappresentante.
- Operazioni:
MakeSet(x): Crea un nuovo insieme contenente solox.Union(x, y): Unisce i due insiemi contenentixey.FindSet(x): Restituisce il rappresentante dell’insieme che contienex.
- Implementazione (con liste concatenate modificate): Ogni lista ha puntatori a
headetail, e ogni nodo ha un puntatorebackalla testa della sua lista.MakeSet(x): O(1).FindSet(x): O(1) (seguendo il puntatoreback).Union(u, v): La lista di un insieme viene concatenata all’altra, e i puntatoribackdi tutti i nodi della lista unita devono essere aggiornati. O(n) nel caso peggiore (dovenè la dimensione dell’insieme più piccolo).
- Complessità Ammortizzata: Una sequenza di
moperazioni (MakeSet,FindSet,Union) sunelementi ha complessità O(m + n log n). - Utilizzo Pratico: Algoritmo di Kruskal per il Minimum Spanning Tree.