Hash Tables. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Hash Tables. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione"

Transcript

1 Hash Tables Ilaria Castelli Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Hash Tables, A.A. 2009/2010 1/42

2 Hash Tables Indirizzamento diretto Tabelle Hash Risoluzione di collisioni Indirizzamento aperto I. Castelli Hash Tables, A.A. 2009/2010 2/42

3 Introduzione A volte è necessario disporre di strutture dati che fungano da dizionario. inserimento ricerca rimozione NON sono necessarie altre operazioni (massimo, minimo, ordinamento... ) Le hash tables sono strutture dati efficienti utili a questo scopo...non sono l unica soluzione possibile... sotto alcune condizioni sono la soluzione più vantaggiosa I. Castelli Hash Tables, A.A. 2009/2010 3/42

4 Indirizzamento Problema dell indirizzamento: Disponiamo di un insieme di chiavi prelevate da un universo U = {k 0, k 1,... k m1 }. Ad ogni chiave sono associati una serie di dati. i dati sono costituiti da un insieme di record un record è una struttura dati eterogenea, contenente una combinazione di elementi di diverso tipo. Gli elementi di un record sono detti anche campi. key dati aggiuntivi k0 Ilaria Castelli 201 castelli@dii.unisi.it k1 Edmondo Trentin trentin@dii.unisi.it k(m1) Marco Maggini 118 maggini@dii.unisi.it I. Castelli Hash Tables, A.A. 2009/2010 4/42

5 Indirizzamento Scopo: 1 avere tempi di ricerca (look-up) rapidi (costanti O(1)) 2 ottimizzare l uso della memoria key dati aggiuntivi k0 Ilaria Castelli 201 castelli@dii.unisi.it k1 Edmondo Trentin trentin@dii.unisi.it k(m1) Marco Maggini 118 maggini@dii.unisi.it I. Castelli Hash Tables, A.A. 2009/2010 5/42

6 Indirizzamento diretto Soluzione semplice: tabelle ad indirizzamento diretto creare uno spazio di memoria per ogni possibile chiave ci sarà una corrispondenza diretta tra la chiave e lo spazio assegnato al relativo record Chiavi Indici Record Edmondo Trentin 1 Ilaria Castelli 201 castelli@dii.unisi.it Marco Maggini 2... Edmondo Trentin trentin@dii.unisi.it Ilaria Castelli 99 Marco Maggini 118 maggini@dii.unisi.it I. Castelli Hash Tables, A.A. 2009/2010 6/42

7 Indirizzamento diretto Semplificazione: consideriamo come chiavi i numeri interi L indirizzamento diretto è comodo quando l insieme delle chiavi U è piccolo U (insieme di tutte le chiavi) T[0...8] key dati aggiuntivi K (chiavi effettive) I. Castelli Hash Tables, A.A. 2009/2010 7/42

8 Indirizzamento diretto Per rappresentare l insieme si usa un array T [0...(m 1)] Ogni posizione è associata ad una e una sola chiave dell insieme U Si assume che non esistano più elementi con la stessa chiave T [k i ] punta all elemento dell insieme con la chiave k i (e alle sue informazioni aggiuntive) T [k i ] = NIL se non esiste nessun elemento con chiave k i I. Castelli Hash Tables, A.A. 2009/2010 8/42

9 Indirizzamento diretto - Operazioni DIRECTADDRESSSEARCH(T, k ) r e t u r n T[ k ] Ricerca DIRECTADDRESSINSERT (T, x ) T[ key [ x ] ] = x Inserimento DIRECTADDRESSDELETE(T, x ) T[ key [ x ] ] = NIL Rimozione Queste tre operazioni richiedono tempo O(1) I. Castelli Hash Tables, A.A. 2009/2010 9/42

10 Indirizzamento diretto - Considerazioni Gli elementi dell insieme (i record) vengono memorizzati in strutture dati esterne Ogni posizione della tabella T contiene un puntatore alla struttura dati corrispondente È superfluo memorizzare la chiave dell elemento In alcune applicazioni gli elementi possono essere memorizzati direttamente nella tabella I. Castelli Hash Tables, A.A. 2009/ /42

11 Indirizzamento diretto - Considerazioni Se U non è grande, allora l array ha dimensioni modeste In tal caso l utilizzo dell indirizzamento diretto è efficiente Ricorda: deve esistere una posizione nell array per ogni possibile valore della chiave Se il numero di chiavi necessarie è piccolo rispetto all intero universo delle chiavi sprechiamo molto spazio Se U è molto grande può essere difficile (o impossibile) allocare la memoria necessaria Le hash tables sono un alternativa efficiente alle tabelle con indirizzamento diretto I. Castelli Hash Tables, A.A. 2009/ /42

12 Indirizzamento diretto Esempio Consideriamo un dizionario della lingua italiana con circa parole. K è l insieme delle parole della lingua italiana = K = L = {a, b, c,..., z} è l alfabeto = L = 26 U è l universo di tutte le possibili parole che possiamo costruire a partire da L. Supponiamo parole di lunghezza massima 15. U = 15 i=1 K = L i I. Castelli Hash Tables, A.A. 2009/ /42

13 Hash Tables Ind. diretto = l elemento con chiave k è associato alla posizione k Hashing = l elemento con chiave k è associato alla posizione h(k) U (insieme di tutte le chiavi) K (chiavi effettive)... k0 k1 k2 k3 T[0,...,m1] h(k0) = h(k1) h(k2) h(k3) I. Castelli Hash Tables, A.A. 2009/ /42

14 Hash Function h(k) è detta funzione hash h : U {0, 1,..., m 1} Consente di calcolare la posizione nell array, a partire dalla chiave k h(k) è il valore hash della chiave k L obiettivo è ridurre la dimensione dell array Non sono necessarie U locazioni di memoria, ma solo m I. Castelli Hash Tables, A.A. 2009/ /42

15 Hash Tables Se K U con gli array ad indirizzamento diretto si spreca molta memoria! Con le hash tables la quantità di memoria necessaria può essere ridotta a Θ( K ) Il tempo necessario per una ricerca resta O(1) nel caso medio Si ottiene un buon compromesso tra lo spazio occupato e il tempo necessario per effettuare una ricerca È possibile che vi siano collisioni se key i key j e h(key i ) = h(key j ) Se la funzione hash distribuisce in modo uniforme le chiavi nelle posizioni dell array, la probabilità di collisioni diminuisce U > m, quindi evitare del tutto le collisioni è impossibile I. Castelli Hash Tables, A.A. 2009/ /42

16 Gestione delle collisioni - Chaining Si inseriscono tutti gli elementi con lo stesso valore hash in una lista concatenata U (insieme di tutte le chiavi) T[0,...,m1]... k0 k1 K (chiavi effettive) k0 k2 k1 k3 k2 k3 I. Castelli Hash Tables, A.A. 2009/ /42

17 Gestione delle collisioni - Chaining T [h(k)] contiene un puntatore all inizio della lista concatenata in cui sono inseriti gli elementi con lo stesso valore hash h(k) Set T [h(k)] = NIL non c è nessun elemento con valore hash h(k) Operazioni CHAINEDHASHSEARCH(T, k ) / c e r c a l a c h i a v e k n e l l a l i s t a T[ h ( k ) ] / LISTSEARCH(T[ h ( k ) ], k ) Ricerca CHAINEDHASHINSERT (T, x ) / i n s e r i s c i x n e l l a l i s t a T[ h ( key [ x ] ) ] / LISTINSERT (T[ h ( key [ x ] ) ], x ) Inserimento CHAINEDHASHDELETE(T, x ) / e l i m i n a x d a l l a l i s t a T[ h ( key [ x ] ) ] / LISTDELETE(T[ h ( key [ x ] ) ], x ) Rimozione I. Castelli Hash Tables, A.A. 2009/ /42

18 Gestione delle collisioni - Chaining Usando le liste: L inserimento richiede tempo O(1) La ricerca richiede un tempo proporzionale alla lunghezza della lista nel caso peggiore La rimozione può essere compiuta in O(1) se la lista è bidirezionale Se la lista è unidirezionale, prima di effettuare la rimozione di x, bisogna anche cercare l elemento che lo precede. Il tempo è quindi proporzionale alla lunghezza della lista I. Castelli Hash Tables, A.A. 2009/ /42

19 Analisi della tecnica di chaining 1 Caso peggiore tutti gli n elementi collidono su uno stesso valore di hash si genera un unica lista concantenata di lunghezza n 2 Caso medio le performance dipendono dalla scelta della funione hash e dal modo in cui distribuisce le chiavi negli m slot supponiamo uniformità semplice della funzione hash, cioè che la proababilità di ogni chiave di cadere nei vari slot sia uniforme 3 Si assume che il calcolo della funzione di hash h(k) sia costante: O(1) 4 Si assume che l accesso alle celle dell array sia fatto in tempo costante: O(1) Def. Si definisce il fattore di carico α per la tabella hash T come α = n m cioè il numero medio di elementi in una lista I. Castelli Hash Tables, A.A. 2009/ /42

20 Analisi della tecnica di chaining - Ricerca senza successo Teorema In una tabella hash che risolve le collisioni per concatenazione una ricerca senza successo richiede tempo medio pari a Θ(1 + α) assumendo uniformità semplice della funzione hash Dimostrazione 1 se si ha uniformità semplice della funzione di hash, ogni chiave k può cadere in modo equiprobabile in ognuno degli m slot 2 ogni lista è lunga α = n m 3 se la ricerca è senza successo esaminerò α elementi 4 il tempo per calcolare h(k) è O(1) I. Castelli Hash Tables, A.A. 2009/ /42

21 Analisi della tecnica di chaining - Ricerca con successo Teorema In una tabella hash che risolve le collisioni per concatenazione una ricerca con successo richiede tempo medio paria a Θ(1 + α) assumendo uniformità semplice della funzione hash Dimostrazione 1 se si ha uniformità semplice della funzione di hash, ogni chiave k può cadere in modo equiprobabile in ognuno degli m slot 2 l analisi è più complessa: dipende dal punto della lista in cui mediamente si trova l elemento da trovare 3 si suppone che gli elementi vengano inseriti alla fine della lista (questa ipotesi non cambia il risultato!) I. Castelli Hash Tables, A.A. 2009/ /42

22 Analisi della tecnica di chaining - Ricerca con successo 4 l elemento i-esimo viene inserito in una lista lunga in media i1 m 5 per trovare l elemento i-esimo si deve calcolare h(k) esaminare mediamente i1 m elementi 6 il tempo medio per una ricerca è T (n) = 1 n Il tempo è Θ(1 + α) n T (i) = 1 n i=1 = nm n i=1 = 1 + α 2 1 2m n i=1 ( 1 + i 1 ) m (i 1) = nm ( ) n(n 1) 2 I. Castelli Hash Tables, A.A. 2009/ /42

23 Analisi della tecnica di chaining Conclusioni 1 Se il numero m di slot nella tabella è proporzionale al numero n di elementi si ha n = O(m) 2 α = O(m) m = O(1) 3 La ricerca richiede tempo costante 4 Tutte le operazioni possono essere eseguite in tempo costante I. Castelli Hash Tables, A.A. 2009/ /42

24 Scelta della funzione hash - Assunzione di uniformità Una buona funzione hash soddisfa l assunzione di uniformità semplice Supponiamo che ogni chiave k sia pescata indipendentemente dalle altre da U, con probabilità P (k). Allora P (k) = 1 j = 0, 1,..., m 1 m k:h(k)=j Partizionando U in sottoinsiemi tali che in ognuno cadano tutte le chiavi che sono mappate su uno stesso valore di hash, allora vi è la stessa probabilità di estrarre un elemento da uno qualsiasi di questi sottoinsiemi. Ma... Raramente si conosce la distribuzione di probabilità P Per questo motivo è necessario usare delle euristiche per ottenere una buona funzione hash Nota: si assume che le chiavi siano esprimibili come numeri naturali. I. Castelli Hash Tables, A.A. 2009/ /42

25 Funzioni hash - Metodo della divisione La posizione è data dal resto della divisione tra k ed m: h(k) = k mod m È molto veloce, ma la scelta di m deve essere fatta in maniera opportuna Cattiva scelta: m = 2 p k è rappresentata su w bit: 0 k < 2 w h(k) = k mod m = k mod 2 p = 0 h(k) < 2 p k 2 p = shift di k a dx, di p posizioni k mod 2 p sono gli ultimi p bit di k I. Castelli Hash Tables, A.A. 2009/ /42

26 Funzioni hash - Metodo della divisione Esempio: k = = w = 10 (10 bit) m = = 2 4 = p = 4, m = 16 Note: k m = } {{}, 0010 }{{} = h(k) = 0010 quoziente resto Per calcolare h(k) si usa solo una piccola frazione dei bit della chiave k Molta informazione non viene usata! I. Castelli Hash Tables, A.A. 2009/ /42

27 Funzioni hash - Metodo della divisione Buona scelta: Scegliere m come un numero primo non vicino ad una potenza di 2. Esempio: n = 2000 chiavi collisioni gestite con la tecnica di chaining vogliamo α 3 Come si sceglie m? m = 701 è una buona scelta! h(k) = k mod 701 I. Castelli Hash Tables, A.A. 2009/ /42

28 Funzioni hash - Metodo della moltiplicazione Richiede due passi: 1 si moltiplica k per una costante 0 < A < 1, e si estrae la parte frazionaria 2 si moltiplica il risultato per m e si prende la parte intera h(k) = m (ka mod 1) = m (ka ka ) È più lento, ma non ci sono valori critici per m va bene con qualsiasi valore di 0 < A < 1. Knuth suggerisce A = se m = 2 p si semplifica l implementazione I. Castelli Hash Tables, A.A. 2009/ /42

29 Funzioni hash - Metodo della moltiplicazione Esempio: m = 1000 k = 123 A h(k) = 1000 ( mod 1) = 1000 ( mod 1) = = = 18 I. Castelli Hash Tables, A.A. 2009/ /42

30 Funzioni hash - Metodo della moltiplicazione Se m = 2 p si implementa facilmente: k è codificato su w bit (dimensione di una parola in memoria) A2 w è codificato su w bit il prodotto k A2 w sta al più su 2w bit k A2 w = r 1 2 w + r0 h(k) corrisponde ai p bit più significativi di r 0 w bits k x floor(a*2^w) r1 h(k) r0 p bits I. Castelli Hash Tables, A.A. 2009/ /42

31 Gestione delle collisioni - Indirizzamento aperto Tutti gli elementi vengono inseriti nella tabella stessa. Ogni posizione della tabella contiene, o un elemento, o NIL NON ci sono puntatori Non ci sono strutture dati esterne alla tabella Inserimento: se si ha una collisione, si cerca uno slot alternativo in cui inserire Ricerca: si esaminano sistematicamente le posizioni della tabella finché, o si trova l elemento, oppure è chiaro che non è presente invece di seguire i puntatori, si calcola una sequenza di posizioni in cui l elemento potrebbe trovarsi La tabella può riempirsi completamente α 1 I. Castelli Hash Tables, A.A. 2009/ /42

32 Indirizzamento aperto - Scansione Per inserire o cercare un elemento, si esamina una sequenza di posizioni finché si trova l elemento, oppure N IL la sequenza s 0, s 1,..., s m1 è una permutazione degli indici 0, 1,..., m 1 della tabella dipende da k la funzione hash è h : U {0, 1,..., m 1} {0, 1,..., m 1} la sequenza di scansione è h(k, 0), h(k, 1),..., h(k, m 1) I. Castelli Hash Tables, A.A. 2009/ /42

33 Indirizzamento aperto - Inserimento Si vuole inserire un elemento con k = 706 h(k, 0) = h(706, 0) h(k, 1) = h(706, 1) h(k, 2) = h(706, 2) T[0,...,m1] vuoto! m1 I. Castelli Hash Tables, A.A. 2009/ /42

34 Indirizzamento aperto - Inserimento HASHINSERT (T, k ) i = 0 r e p e a t / c a l c o l o l o s l o t / j = h ( k, i ) i f T[ j ] = NIL / s e e vuoto i n s e r i s c o / then T[ j ] = k r e t u r n j e l s e i = i + 1 u n t i l i = m / r a g g i u n t a l a f i n e d e l l a t a b e l l a / e r r o r "hash table overflow " La ricerca dello slot in cui inserire termina quando si trova una posizione libera Se la tabella è piena non si può inserire I. Castelli Hash Tables, A.A. 2009/ /42

35 Indirizzamento aperto - Ricerca HASHSEARCH(T, k ) i = 0 r e p e a t / c a l c o l o l o s l o t / j = h ( k, i ) i f T[ j ] = k then r e t u r n j e l s e i = i + 1 u n t i l T[ j ] = NIL or i = m / r a g g i u n t a l a f i n e d e l l a t a b e l l a / e r r o r "hash table overflow " La ricerca termina: se si trova la chiave oppure se si trova una posizione vuota (se k fosse stata inserita, sarebbe lì!) Esplora la stessa sequenza di slot della procedura di inserimento I. Castelli Hash Tables, A.A. 2009/ /42

36 Indirizzamento aperto - Rimozione 1 Se si gestissero le collisioni con la tecnica di chaining sarebbe semplice: è sufficiente eliminare un elemento dalla lista. 2 Nel caso dell indirizzamento aperto la rimozione è un operazione delicata. k9 k1 DELETED... h(k9,1) h(k1,0) h(k2,0) = h(k9,0) Si vuole rimuovere k2 Si inserisce NIL nella posizione che era occupata da k2. Attenzione: h(k9, 0) = h(k2, 0)! Che succede se si cerca k9? Soluzione: non inseriamo NIL, ma un apposito marker DELET ED la procedura di inserimento deve trattare DELET ED come una posizione libera la procedura di ricerca non deve fermarsi quando trova DELET ED I. Castelli Hash Tables, A.A. 2009/ /42

37 Uniformità della funzione hash Ipotesi di uniformità Si assume che, per ogni chiave k, sia equamente probabile una qualunque delle m! possibili permutazioni delle posizioni nella tabella È una generalizzazione dell ipotesi di uniformità semplice. In questo caso la funzione hash non restituisce una sola posizione, ma un intera sequenza. È difficile definire una funzione di hashing che sia davvero uniforme Le tecniche maggiormente usate sono: Scansione lineare Scansione quadratica Double hashing I. Castelli Hash Tables, A.A. 2009/ /42

38 Scansione lineare Data una funzione hash h : U {0, 1,..., m 1}, il metodo di scansione lineare usa la funzione hash h(k, i) = ( h (k) + i ) mod m i = 0,..., m 1 Si genera una sequenza di posizioni contigue l una all altra T [h (k)], T [h (k) + 1],...,T [m 1],T [0],...,T [h (k) 1] Si ottiene una sequenza diversa per ogni possibile posizione di partenza m possibili sequenze, su m! Facile da implementare Agglomerazione primaria: le posizioni occupate si accumulano in lunghi tratti contigui Come influisce questo sul tempo necessario per la ricerca? I. Castelli Hash Tables, A.A. 2009/ /42

39 Scansione quadratica Data una funzione hash h : U {0, 1,..., m 1}, il metodo di scansione quadratica usa la funzione hash h(k, i) = ( h (k) + c 1 i + c 2 i 2) mod m i = 0,..., m 1 dove c 1 e c 2 sono costanti fissate a priori La posizioni dipendono quadraticamente da i Funziona meglio della scansione lineare, ma c 1 e c 2 devono essere scelte in modo che la sequenza scansioni l intera tabella. Si ottiene una sequenza diversa per ogni possibile posizione di partenza m possibili sequenze, su m! Agglomerazione secondaria: h(k 1, 0) = h(k 2, 0) = h(k 1, 1) = h(k 2, 1) =... I. Castelli Hash Tables, A.A. 2009/ /42

40 Double hashing Data due funzioni hash h1 : U {0, 1,..., m 1} e h2 : U {0, 1,..., m 1}, il metodo di double hashing usa la funzione hash h(k, i) = (h 1 (k) + ih 2 (k)) mod m i = 0,..., m 1 È uno dei migliori metodi esistenti Le posizioni successive alla prima dipendono da h 2 mod m A differenza degli altri metodi, dipende in due modi da k. Nota: i valori h 1 (k) e h 2 (k) sono indipendenti l uno dall altro. Ogni possibile coppia (h 1 (k), h 2 (k)) genera una sequenza diversa m 2 possibili sequenze È il metodo che si avvicina di più allo schema ideale di hashing uniforme I. Castelli Hash Tables, A.A. 2009/ /42

41 Double hashing Nota: È necessario che h 2 (k) ed m siano primi tra loro. Se hanno un divisore comune d, si generano ciclicamente sempre le stesse posizioni. Non si visita mai l intera tabella ma solo (1/d)-esimo delle possibili posizioni. Di solito si usa m primo e si sceglie h 2 in modo che generi sempre numeri minori di m Esempio: h 1 (k) = k mod m h 2 (k) = 1 + (k mod m ), con m < m (m 1,o m 2) I. Castelli Hash Tables, A.A. 2009/ /42

42 Indirizzamento aperto - Analisi Ricerca senza successo Data una tabella hash a indirizzamento aperto con fattore dicarico α < 1, il numero medio di accessi di una ricerca senza successo è al più 1 1α, assumendo uniformità della funzione hash Ricerca con successo Data una tabella hash a indirizzamento aperto con fattore di carico α < 1, il numero medio di accessi di una ricerca con successo è al più 1 α ln 1 1α, assumendo uniformità della funzione hash e che ogni chiave sia ricercata nella tabella in modo equamente probabile I. Castelli Hash Tables, A.A. 2009/ /42

TABELLE AD INDIRIZZAMENTO DIRETTO

TABELLE AD INDIRIZZAMENTO DIRETTO Tabelle Servono per implementare dizioniari in modo efficiente. dizionari insiemi di coppie (chiave, valore). Esempio: in un compilatore di un linguaggio di programmazione viene creata una tabella dei

Dettagli

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1 Dizionario Insieme dinamico che offre solo le seguenti operazioni: inserimento di un elemento dato cancellazione di un elemento dato ricerca di un elemento dato (verifica dell appartenenza di un elemento

Dettagli

Implementazione di dizionari

Implementazione di dizionari Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri campi in cui sono memorizzati i dati associati alla

Dettagli

Heap scenario. Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero);

Heap scenario. Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero); Heap Heap scenario Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero); Voglio poter: inserire: nuovi elementi, ciascuno con una data priorità

Dettagli

Tabelle Hash. Implementazioni Dizionario. Implementazione. Tabelle ad accesso diretto. Tempo richiesto dall operazione più costosa:

Tabelle Hash. Implementazioni Dizionario. Implementazione. Tabelle ad accesso diretto. Tempo richiesto dall operazione più costosa: Algoritmi e Strutture Dati Implementazioni Dizionario Tempo richiesto dall operazione più costosa: Tabelle Hash - Liste - Alberi di ricerca non bilanciati - Alberi di ricerca bilanciati -Tabelle hash O(n)

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Tabelle Tabelle Hash Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2007/08 Tabelle Tabelle Una tabella è una sequenza di elementi E

Dettagli

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet  francesc Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc Algoritmi e Strutture di Dati I 2 Tabelle hash Una tabella hash (in inglese hash

Dettagli

Tavole (o tabelle) hash

Tavole (o tabelle) hash Alcune possibili implementazioni dell ADT Dizionario Tavole (o tabelle) hash Una rapida panoramica (vedere anche [Deme] cap. 7) Parte 23 del Corso Algoritmi e Laboratorio a.a. 2006-07 Tempo richiesto dall

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Tabelle Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Tabelle Tabelle Una tabella è una sequenza di elementi E i ciascuno dei

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Tabelle Hash Tabelle Hash Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Tabelle Hash Tabelle Hash Una tabella hash è una struttura dati efficiente

Dettagli

Tavole hash. Alcune possibili implementazioni dell ADT Dizionario. Tavole ad accesso diretto. Tempo richiesto dall operazione più costosa:

Tavole hash. Alcune possibili implementazioni dell ADT Dizionario. Tavole ad accesso diretto. Tempo richiesto dall operazione più costosa: Tavole hash Una rapida panoramica Alcune possibili implementazioni dell ADT Dizionario Tempo richiesto dall operazione più costosa: Liste Alberi di ricerca non bilanciati Alberi di ricerca bilanciati Tavole

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Tavole hash Implementazioni Dizionario Tempo richiesto dall operazione più costosa: - Liste - Alberi di ricerca non bilanciati - Alberi di ricerca bilanciati - Tavole hash O(n)

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Tabelle di hash Fabio Patrizi 1 Implementazioni Dizionario Tempo richiesto dall operazione più costosa: - Liste - Alberi di ricerca non bilanciati - Alberi di ricerca bilanciati

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 7 Tabelle hash Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Implementazioni Dizionario Tempo richiesto dall operazione più costosa: -Liste - Alberi di ricerca

Dettagli

Università degli Studi G.d Annunzio Chieti Pescara Corso di Laurea in Economia Informatica

Università degli Studi G.d Annunzio Chieti Pescara Corso di Laurea in Economia Informatica Dott. Massimo Franceschet Prof.ssa Maria Chiara Meo Introduzione alle tabelle hash di Enrico Zimuel (enrico@zimuel.it) revisione del 22/3/2003 Sommario L idea delle tabelle hash Tabelle ad indirizzamento

Dettagli

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash Funzioni Hash Sommario Tabelle ad indirizzamento diretto e hash Funzioni Hash Requisiti Metodo della divisione Metodo della moltiplicazione Funzione Hash Universale La ricerca Talvolta si richiede che

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Tabelle di hash Domenico Fabio Savo 1 Implementazioni Dizionario Tempo richiesto dall operazione più costosa: - Liste - Alberi di ricerca non bilanciati - Alberi di ricerca bilanciati

Dettagli

Risoluzione delle collisioni con indirizzamento aperto

Risoluzione delle collisioni con indirizzamento aperto Risoluzione delle collisioni con indirizzamento aperto Con la tecnica di indirizzamento aperto tutti gli elementi stanno nella tavola. La funzione hash non individua una singola cella ma un ordine in cui

Dettagli

Analisi dell Hashing

Analisi dell Hashing Massimo Benerecetti Analisi dell Hashing # Lezione n. Parole chiave: Inserire testo Corso di Laurea: Informatica Algoritmi e Strutture Insegnamento: Dati Email Docente: bene@na.infn.it A.A. 2009-2010 Hashing

Dettagli

Massimo Benerecetti Tabelle Hash: gestione delle collisioni

Massimo Benerecetti Tabelle Hash: gestione delle collisioni Massimo Benerecetti Tabelle Hash: gestione delle collisioni # Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: bene@na.infn.it A.A. 2009-2010

Dettagli

Tabelle hash. Vittorio Maniezzo - Università di Bologna

Tabelle hash. Vittorio Maniezzo - Università di Bologna Tabelle hash 1 Vittorio Maniezzo - Università di Bologna Look up table, caso generale Anche memoria associativa, associative array, map, symboltable, dictionary: collezione di elementi nella forma coppia

Dettagli

Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino

Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Le tabelle di hash Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Tabelle di hash Finora gli algoritmi di ricerca si erano basati sul confronto. Eccezione: tabelle

Dettagli

Look up table, caso generale

Look up table, caso generale Tabelle hash 1 Vittorio Maniezzo - Università di Bologna Look up table, caso generale Anche memoria associativa, associative array, map, symboltable, dictionary: collezione di elementi nella forma coppia

Dettagli

Massimo Benerecetti Tabelle Hash

Massimo Benerecetti Tabelle Hash Massimo Benerecetti Tabelle Hash # Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: bene@na.infn.it A.A. 2009-2010 Rappresentazione di insiemi

Dettagli

Esercizi Capitolo 7 - Hash

Esercizi Capitolo 7 - Hash Esercizi Capitolo 7 - Hash Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive

Dettagli

Informatica 3. Informatica 3. LEZIONE 22: Politiche di risoluzione delle collisioni. Lezione 23 - Modulo 1. Politiche di risoluzione delle collisioni

Informatica 3. Informatica 3. LEZIONE 22: Politiche di risoluzione delle collisioni. Lezione 23 - Modulo 1. Politiche di risoluzione delle collisioni Informatica 3 Informatica 3 LEZIONE 22: Politiche di risoluzione delle collisioni Lezione 23 - Modulo 1 Modulo 1: Open e closed hashing Modulo 2: Sequenze di probe Modulo 3: Analisi del closed hashing

Dettagli

argomenti Hashing Funzioni hash per file Tabelle hash Funzioni hash e metodi per generarle Inserimento e risoluzione delle collisioni Eliminazione

argomenti Hashing Funzioni hash per file Tabelle hash Funzioni hash e metodi per generarle Inserimento e risoluzione delle collisioni Eliminazione Hashing argomenti Hashing Tabelle hash Funzioni hash e metodi per generarle Inserimento e risoluzione delle collisioni Eliminazione Funzioni hash per file Hashing estendibile Hashing lineare Hashing 2

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy

Dettagli

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH INTRODUZIONE INTRODUZIONE Una tabella hash è una struttura dati che permette operazioni di ricerca e inserimento molto veloci: in pratica si ha un costo computazionale costante O(1). Si ricorda che la

Dettagli

Tabelle Hash! Presentare le tabelle hash e la nozione di funzione di hashing Discutere la complessità di questa realizzazione per le Tavole

Tabelle Hash! Presentare le tabelle hash e la nozione di funzione di hashing Discutere la complessità di questa realizzazione per le Tavole Tabelle Hash! n Obiettivi: Presentare le tabelle hash e la nozione di funzione di hashing Discutere la complessità di questa realizzazione per le Tavole 1 Tavole! n Una tavola è un tipo di dato astratto

Dettagli

Hash file. idea di base : il file è organizzato in B bucket, i record sono assegnati ai bucket in ragione del valore di chiave.

Hash file. idea di base : il file è organizzato in B bucket, i record sono assegnati ai bucket in ragione del valore di chiave. Hash file idea di base : il file è organizzato in B bucket, i record sono assegnati ai bucket in ragione del valore di chiave. hash(chiave) [0,B-1] è desiderabile una distribuzione uniforme sui bucket.

Dettagli

Tabelle Hash. Massimo Benerecetti. Informatica. Lezione n. Parole chiave: Inserire testo. Corso di Laurea:

Tabelle Hash. Massimo Benerecetti. Informatica. Lezione n. Parole chiave: Inserire testo. Corso di Laurea: Massimo Benerecetti Tabelle Hash Lezione n. Parole chiave: Inserire testo Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: bene@na.infn.it A.A. 2009-2010 Rappresentazione

Dettagli

Informatica 3. Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Lezione 21 - Modulo 1. Introduzione (1) Introduzione (2) Ricerca:

Informatica 3. Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Lezione 21 - Modulo 1. Introduzione (1) Introduzione (2) Ricerca: Informatica 3 Informatica 3 LEZIONE 21: Ricerca su liste e tecniche di hashing Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Lezione 21 - Modulo 1 Algoritmi sequenziali e basati su

Dettagli

05EIP. Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino

05EIP. Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino Tabelle di Hash Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino ADT Dizionario In molte applicazioni è necessario un ADT Dizionario che supporti le seguenti operazioni:

Dettagli

Algoritmi 2 - Dr. Simone Faro - Esercizi sulle Tabelle Hash 1

Algoritmi 2 - Dr. Simone Faro - Esercizi sulle Tabelle Hash 1 Algoritmi 2 - Dr. Simone Faro - Esercizi sulle Tabelle Hash 1 1. Supponete di effettuare una ricerca in una lista concatenata di lunghezza n, dove ogni elemento contiene una chiave k ed un valore hash

Dettagli

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Dizionari e tabelle hash @ G. Gini 2013 dizionari Molte applicazioni richiedono solo di accedere a informazioni dinamiche per le operazioni

Dettagli

Organizzazioni hash. Corso di Basi di Dati e Sistemi Informativi

Organizzazioni hash. Corso di Basi di Dati e Sistemi Informativi Organizzazioni hash Corso di Basi di Dati e Sistemi Informativi 1 Hashing index-based data organizations: relazione tra chiave e indirizzo esplicita tramite puntatori. hash-based organizations: relazione

Dettagli

Tecnica HASH. Corso di Linguaggi di Programmazione. Stefano Ferilli. Pasquale Lops.

Tecnica HASH. Corso di Linguaggi di Programmazione. Stefano Ferilli. Pasquale Lops. Tecnica HASH Corso di Linguaggi di Programmazione Stefano Ferilli ferilli@di.uniba.it Pasquale Lops lops@di.uniba.it Università degli Studi di Bari A.A. 2003/2004 Linguaggi di Programmazione 1 Obiettivo

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Dettagli

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 7, 2016 Liste trabocco (Separate Chaining) Esercizio 1 [Libro 7.5] Un dizionario è realizzato con liste di trabocco.

Dettagli

Dizionari. Hashtables.

Dizionari. Hashtables. Dizionari Hashtables http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione I tipi di dato che abbiamo introdotto fino ad ora sono

Dettagli

Il TDA Map. Tabelle hash

Il TDA Map. Tabelle hash Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale

Dettagli

Definizione informale. Il TDA Map memorizza coppie formate da una chiave k e da un valore v. La coppia è chiamata entry. Ogni chiave deve essere unica

Definizione informale. Il TDA Map memorizza coppie formate da una chiave k e da un valore v. La coppia è chiamata entry. Ogni chiave deve essere unica Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale

Dettagli

Il TDA Map. Definizione informale. I metodi del TDA Map 2. I metodi del TDA Map 1. Interfaccia Map 1 NO_SUCH_KEY. Tabelle hash

Il TDA Map. Definizione informale. I metodi del TDA Map 2. I metodi del TDA Map 1. Interfaccia Map 1 NO_SUCH_KEY. Tabelle hash Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale

Dettagli

FILE E INDICI Architettura DBMS

FILE E INDICI Architettura DBMS FILE E INDICI Architettura DBMS Giorgio Giacinto 2010 Database 2 Dati su dispositivi di memorizzazione esterni! Dischi! si può leggere qualunque pagina a costo medio fisso! Nastri! si possono leggere le

Dettagli

Tipo di dato Dizionario

Tipo di dato Dizionario Tabelle Hash lezione 8 Tipo di dato Dizionario Il tipo di dato Dizionario permette di gestire collezioni di elementi a cui sono associate chiavi prese da un dominio totalmente ordinato. I dati ammessi

Dettagli

ADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati

ADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati ADT Mappa Una mappa è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore ogni elemento (k,v) viene detto entrata (entry) della mappa entrate multiple con la

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 E1 Organizzazione hash 1 Prerequisiti È necessario conoscere: concetto matematico di funzione distribuzione uniforme 2 1 Informazioni generali In questa Unità si introduce

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Tabelle hash. Damiano Macedonio Università Ca' Foscari di Venezia. mace@unive.it

Tabelle hash. Damiano Macedonio Università Ca' Foscari di Venezia. mace@unive.it Tabelle hash Damiano Macedonio Università Ca' Foscari di Venezia mace@unive.it Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml) Modifications

Dettagli

Strutture fisiche e strutture di accesso ai dati

Strutture fisiche e strutture di accesso ai dati Strutture fisiche e strutture di accesso ai dati 1 A L B E R T O B E L U S S I P R I M A P A R T E A N N O A C C A D E M I C O 2 0 1 2-2 0 1 3 Gestore dei metodi di accesso 2 E il modulo del DBMS che esegue

Dettagli

Organizzazione Fisica dei Dati (Parte II)

Organizzazione Fisica dei Dati (Parte II) Modello Fisico dei Dati Basi di Dati / Complementi di Basi di Dati 1 Organizzazione Fisica dei Dati (Parte II) Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Modello Fisico

Dettagli

Ordinamenti per confronto: albero di decisione

Ordinamenti per confronto: albero di decisione Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto

Dettagli

Strutture Dati. Parte I: pile, code, liste, tabelle hash

Strutture Dati. Parte I: pile, code, liste, tabelle hash Strutture Dati Parte I: pile, code, liste, tabelle hash Scopo delle strutture dati Le strutture dati sono usate per contenere oggetti Rappresentano collezioni di oggetti Spesso (ma non sempre) gli oggetti

Dettagli

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35 LIBRERIA WEB Alberi binari 3. Alberi binari e tecniche di hashing per la gestione delle chiavi Gli indici di un file possono essere trattati in modo efficiente con tecniche che si basano sull uso di alberi

Dettagli

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi Somma di numeri floating point Algoritmi di moltiplicazione e divisione per numeri interi Standard IEEE754 " Standard IEEE754: Singola precisione (32 bit) si riescono a rappresentare numeri 2.0 10 2-38

Dettagli

Altro di ADT. Dominio. Funzioni. Dominio. Funzioni. Costanti - Collezioni

Altro di ADT. Dominio. Funzioni. Dominio. Funzioni. Costanti - Collezioni di astratto Abstract Data Type Paolo Bison Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova definizione di un indipendente dalla sua rappresentazione interna e dalla effettiva implementazione

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni

Dettagli

algoritmi e strutture di dati

algoritmi e strutture di dati algoritmi e strutture di dati hashing m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Una breve introduzione all implementazione in C di algoritmi su grafo

Una breve introduzione all implementazione in C di algoritmi su grafo Una breve introduzione all implementazione in C di algoritmi su grafo A cura di Gianmaria Leo Introduzione La lezione è un introduzione a concetti e strumenti che permettono l implementazione di algoritmi

Dettagli

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (come la notazione decimale). Ogni numero è rappresentato da una sequenza di simboli Il valore del numero dipende non solo dalla

Dettagli

Strutture Dati. (parte I: pile, code, liste, tabelle hash)

Strutture Dati. (parte I: pile, code, liste, tabelle hash) Strutture Dati (parte I: pile, code, liste, tabelle hash) 1 Scopo delle strutture dati Le strutture dati sono aggeggi usati per contenere oggetti rappresentano collezioni di oggetti spesso (ma non sempre)

Dettagli

Elaborato di Algoritmi e Strutture Dati. Traficante Nicola

Elaborato di Algoritmi e Strutture Dati. Traficante Nicola Elaborato di Algoritmi e Strutture Dati Traficante Nicola 11 Febbraio 2010 Sommario Sommario...3 Indice degli algoritmi...4 Indice dei Codici...5 Indice delle Figure...6 Randomized Select...7 1.1 Pseudocodice

Dettagli

Informazione e Registri - 2

Informazione e Registri - 2 Informazione e Registri Le informazioni (dati e/o istruzioni) trattate da una macchina sono memorizzate in elementi detti registri Il registro può essere visto come un contenitore di informazione individuato

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] I Dizionari I dizionari sono un caso particolare di insieme in cui sono possibili le seguenti operazioni: verificare l appartenenza

Dettagli

Strutture dati per insiemi disgiunti

Strutture dati per insiemi disgiunti Strutture dati per insiemi disgiunti Servono a mantenere una collezione S = {S 1, S 2,..., S k } di insiemi disgiunti. Ogni insieme S i è individuato da un rappresentante che è un particolare elemento

Dettagli

Strutture di accesso ai dati: B + -tree

Strutture di accesso ai dati: B + -tree Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O 2 0 1 1-2 0 1 2 Osservazione Quando l indice aumenta di dimensioni, non può risiedere

Dettagli

Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Giuseppe Loseto Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Struttura DBMS Gestore delle interrogazioni Decide le strategie di accesso ai dati per rispondere alle interrogazioni Gestore

Dettagli

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15 ANNO ACCADEMICO 2014/15 1 a prova in itinere 13 gennaio 2015 ESERCIZIO 1 Si risolva l equazione di ricorrenza al variare del parametro reale a>1. T (n) = 27 n a T + n 2 log n a ESERCIZIO 2 Si ordinino

Dettagli

Calcolare x n = x x x (n volte)

Calcolare x n = x x x (n volte) Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 2 Implementazione dei dizionari: tabelle hash Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Mappa (I parte)

Dati e Algoritmi 1: A. Pietracaprina. Mappa (I parte) Dati e Algoritmi 1: A. Pietracaprina Mappa (I parte) 1 Mappa In generale, una Mappa è una collezione di entry che supporta, come metodi principali: ricerca, inserimento, rimozione. Gradi di libertà: Universo

Dettagli

Memorizzazione di una relazione

Memorizzazione di una relazione Heap file File ordinati Indici o Hash o B+-tree Costo delle operazioni algebriche Simboli: NP: numero di pagine NR: numero record LP: lunghezza pagina LR: lunghezza record Memorizzazione di una relazione

Dettagli

TIPO DI DATO ASTRATTO

TIPO DI DATO ASTRATTO TIPO DI DATO ASTRATTO Tipo di dato astratto Esempio: Vogliamo rappresentare un sistema di prenotazione di esami universitari. Dati immagazzinati: prenotazioni esami Operazioni supportate: prenota(esame,

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Tabelle Hash m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Strutture dati - Parte 1

Strutture dati - Parte 1 Strutture dati - Parte 1 Dipartimento di Elettronica e Informazione Politecnico di Milano 16 giugno 2017 Strutture dati Organizzare i dati processati Spesso algoritmi efficienti necessitano di poter accedere,

Dettagli

Strutture di accesso ai dati: B + -tree

Strutture di accesso ai dati: B + -tree Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O 2 0 0 9-2 0 0 Osservazione Quando l indice aumenta di dimensioni, non può risiedere

Dettagli

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro

Dettagli

Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees

Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees Databases Architettura di un DBMS: Struttura ad indice per i files, B + -Trees Indici Un indice consiste di coppie e supporta l efficiente recupero di tutte le etichette con chiave

Dettagli

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa: Come nella Mappa: un Dizionario è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore. ogni elemento (k,v) viene detto entrata (entry) del Dizionario. chiavi

Dettagli

PROVA SCRITTA DEL MODULO DI NOME: COGNOME: MATRICOLA:

PROVA SCRITTA DEL MODULO DI NOME: COGNOME: MATRICOLA: PROVA SCRITTA DEL MODULO DI CORSO DI LAUREA IN INGEGNERIA ELETTRICA ED ELETTRONICA, INGEGNERIA BIOMEDICA - 6 CFU Settembre 204 NOME: COGNOME: MATRICOLA: ESERCIZIO RETI LOGICHE (0 punti) Si vuole implementare

Dettagli

PROVA SCRITTA DEL MODULO INTEGRATO E DEL CORSO DI NOME: COGNOME: MATRICOLA: CFU:

PROVA SCRITTA DEL MODULO INTEGRATO E DEL CORSO DI NOME: COGNOME: MATRICOLA: CFU: PROVA SCRITTA DEL MODULO INTEGRATO E DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA ELETTRONICA 5/7 CFU CORSO DI LAUREA IN INGEGNERIA ELETTRICA ED ELETTRONICA, INGEGNERIA BIOMEDICA - 6 CFU 12 Giugno 2013 NOME:

Dettagli

Architettura dei sistemi di elaborazione: La memoria (parte 2)

Architettura dei sistemi di elaborazione: La memoria (parte 2) Architettura dei sistemi di elaborazione: La memoria (parte 2) La cache è una memoria veloce e di piccole dimensioni posta fra la CPU e la memoria principale. Memoria Cache La cache e la memoria principale

Dettagli

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale Analogico vs. Digitale LEZIONE II La codifica binaria Analogico Segnale che può assumere infiniti valori con continuità Digitale Segnale che può assumere solo valori discreti Analogico vs digitale Il computer

Dettagli

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27 Lunghezza media Teorema Codice D-ario prefisso per v.c. X soddisfa L H D (X). Uguaglianza vale sse D l i = p i.. p.1/27 Lunghezza media Teorema Codice D-ario prefisso per v.c. X soddisfa L H D (X). Uguaglianza

Dettagli

La codifica dei numeri

La codifica dei numeri La codifica dei numeri La rappresentazione dei numeri con il sistema decimale può essere utilizzata come spunto per definire un metodo di codifica dei numeri all interno degli elaboratori: la sequenza

Dettagli

Hashing. Dott. Ezio Bartocci, Dott. Francesco De Angelis. Laboratorio di Algoritmi e strutture Dati - AA 2006/2007

Hashing. Dott. Ezio Bartocci, Dott. Francesco De Angelis. Laboratorio di Algoritmi e strutture Dati - AA 2006/2007 Hashing Dott. Ezio Bartocci, Dott. Francesco De Angelis Laboratorio di Algoritmi e strutture Dati - AA 2006/2007 Dip. di Matematica e Informatica Università di Camerino ezio.bartocci@unicam.it, francesco.deangelis@unicam.it

Dettagli

Concetti di teoria dei campioni ad uso degli studenti di Statistica Economica e Finanziaria, A.A. 2017/2018. Giovanni Lafratta

Concetti di teoria dei campioni ad uso degli studenti di Statistica Economica e Finanziaria, A.A. 2017/2018. Giovanni Lafratta Concetti di teoria dei campioni ad uso degli studenti di Statistica Economica e Finanziaria, A.A. 2017/2018 Giovanni Lafratta ii Indice 1 Spazi, Disegni e Strategie Campionarie 1 2 Campionamento casuale

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Dettagli

Rappresentazione dell informazione

Rappresentazione dell informazione Rappresentazione dell informazione Problema che coinvolge aspetti filosofici Interessa soprattutto distinguere informazioni diverse Con un solo simbolo è impossibile Pertanto l insieme minimo è costituito

Dettagli

Moltiplicazione e Divisione tra numeri relativi

Moltiplicazione e Divisione tra numeri relativi Moltiplicazione e Divisione tra numeri relativi Salvatore Orlando & Marta Simeoni Arch. Elab.A M. Simeoni 1 Moltiplicazione tra numeri interi Oltre ai circuiti per realizzare somme e sottrazioni di interi,

Dettagli

Strutture dati per insiemi disgiunti (union-find)

Strutture dati per insiemi disgiunti (union-find) Strutture dati per insiemi disgiunti (union-find) Una struttura dati per insiemi disgiunti mantiene una collezione S = { S 1, S 2,..., S k } di insiemi dinamici disgiunti. Ciascun insieme è identificato

Dettagli

Moltiplicazione tra numeri interi. Moltiplicazione e Divisione tra numeri relativi. Moltiplicazione: algoritmo carta e penna (base 2)

Moltiplicazione tra numeri interi. Moltiplicazione e Divisione tra numeri relativi. Moltiplicazione: algoritmo carta e penna (base 2) Arch. Elab.A M. Simeoni 1 Moltiplicazione tra numeri interi Moltiplicazione e Divisione tra numeri relativi Salvatore Orlando & Marta Simeoni Oltre ai circuiti per realizzare somme e sottrazioni di interi,

Dettagli

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto Argomenti della lezione Introduzione agli Algoritmi e alle Strutture Dati Operazioni su Liste Dr. Emanuela Merelli Tipi di Dato Astratto Lista Lineare Pila Coda Concetto di Struttura dati dinamiche Lista

Dettagli

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera:

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera: MergeSort Usa la tecnica del divide et impera: 1 Divide: dividi l array a metà 2 Risolvi i due sottoproblemi ricorsivamente 3 Impera: fondi le due sottosequenze ordinate 1 Esempio di esecuzione 7 2 4 5

Dettagli

Esercitazione E3 File System

Esercitazione E3 File System Esercitazione E3 File System Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009 E3-1 Indici ISAM Si consideri un file di 60.000 record di 80 byte ciascuno, con un campo chiave di 16 byte, sul quale

Dettagli