argomenti Hashing Funzioni hash per file Tabelle hash Funzioni hash e metodi per generarle Inserimento e risoluzione delle collisioni Eliminazione
|
|
- Lorenzo Roberti
- 5 anni fa
- Visualizzazioni
Transcript
1 Hashing
2 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
3 Implementazione di un dizionario Insieme di coppie del tipo <elemento, chiave> Le chiavi appartengono a un insieme totalmente ordinato Operazioni: insert(el, key) delete(key) search(key) Indirizzamento diretto: si associa ad ogni valore della chiave un indice di un array ricerca in tempo O(1) Problemi? Hashing 3
4 Indirizzamento diretto Ogni chiave corrisponde a el. diverso dell array Può portare a spreco di memoria Es.: studenti e matr.= No. decimale a 5 cifre 0 2 No. chiavi N -1 Hashing 4
5 Obiettivi N ~ No. Chiavi effettivamente usate Tempo di ricerca O(1) D.: possibile? Nota: No. Chiavi possibili può essere >> T 0 2 No. chiavi T -1 Hashing 5
6 Tabella hash Dato l insieme base di un dizionario: <T, h> T è una tabella h: K {0,..., T -1} K insieme delle possibili chiavi {0,..., T -1} insieme delle posizioni nella tabella Hashing 6
7 asd_library.hash.hashtable public class HashTable implements Dictionary_adt{ public HashTable() { } this(default_table_size); public HashTable(int size) { allocatetable(size); makeempty(); isrehashable = false; } Hashing 7
8 Funzioni hash perfette e collisioni Funzione hash perfetta: k 1!=k 2 h(k 1 )!= h(k 2 ) Richiede T >= K Raramente ragionevole in pratica In generale T < K (spesso T << K ) Conseguenza: k 1!=k 2 ma h(k 1 ) == h(k 2 ) è possibile Collisione Es.: proporre una funzione hash perfetta nel caso in cui le chiavi siano stringhe di lunghezza 3 sull alfabeto {a, b, c} Hashing 8
9 Requisiti di una funzione hash Uniformità semplice: Pr[h(k)=j] ~ 1/ T La probabilità è calcolata rispetto alla distribuzione delle chiavi Intuitivamente, si desidera che gli elementi si distribuiscano nell array in modo uniforme Difficile costruire funzioni che soddisfino la proprietà D.: perché? Hashing 9
10 Requisiti di una funzione hash/2 Esempio: sia T =5 e h(k)=k mod 5 {1, 7, 10, 14} Non è nota la distribuzione delle chiavi {1, 6, 11, 16} Può aversi agglomerazione degli elementi In pratica: si cerca di avere indipendenza dai dati Hashing 10
11 Interpretazione delle chiavi Tra gli elementi di K è definito un ordinamento totale ma: Le chiavi non sono necessariamente numeri naturali (o persino numeri) Es.: stringhe Soluzione: associare a ciascuna chiave un intero Modalità dipendono da insieme delle chiavi e applicazione Hashing 11
12 Esempio: stringhe Possibile metodo: associare a ciascun carattere il valore ASCII e alla stringa il numero intero ottenuto in una base scelta Esempio: base 2, posizioni meno significative a destra Stringa = p t chiave = 112* *2 0 =240 Ascii( p )=112 Ascii( t )=116 Hashing 12
13 Derivazione di funzioni hash Molti metodi Divisione Ripiegamento Mid-square Estrazione... Obiettivo: distribuzione possibilmente uniforme Differenze: Complessità Fenomeni di agglomerazione Hashing 13
14 Divisione h(k)=k mod T - Bassa complessità Attenzione ai fenomeni di agglomerazione No potenze di 2: se m=2 p allora tutte le chiavi con i p bit meno significativi uguali collidono No potenze di 10 se le chiavi sono numeri decimali (motivo simile) In generale, la funzione dovrebbe dipendere da tutte le cifre della chiave (comunque rappresentata) Scelta buona in pratica: numero primo non troppo vicino a una potenza di 2 (esempio: h(k)=k mod 701 per K =2048 valori possibili) Hashing 14
15 Ripiegamento Chiave k suddivisa in parti k 1,k 2,...,k n h(k)=f(k 1,k 2,...,k n ) Esempio: la chiave è un No. di carta di credito. Possibile funzione hash: {477, 264, 537, 348} 2. f(477,264,537,348) = ( )mod 701 = 224 Hashing 15
16 Estrazione Si usa soltanto una parte della chiave per calcolare l indirizzo Esempio: 6 cifre centrali del numero di carta di credito Il numero ottenuto può essere ulteriormente manipolato L indirizzo può dipendere da una porzione della chiave Hashing 16
17 HashTable.hash() public static int hash( String key, int tablesize ){ int hashval = 0; for( int i = 0; i < key.length( ); i++ ) hashval = 37 * hashval + key.charat( i ); hashval %= tablesize; if( hashval < 0 ) hashval += tablesize; return hashval; } Hashing 17
18 Risoluzione delle collisioni I metodi si distinguono per la collocazione degli elementi che danno luogo alla collisione Concatenazione: alla i-esima posizione della tabella è associata la lista degli elementi tali che h(k)=i Indirizzamento aperto: tutti gli elementi sono contenuti nella tabella Hashing 18
19 Concatenazione h(k 1 )= h(k 4 )=0 h(k 5 )= h(k 7 )=h(k 2 )= k 1 k 4 k 2 k 5 k 7 k 2 Es.: h(k)=k mod 5 k 1 =0, k 4 =10 k 5 =9, k 7 =14, k 2 =4 Hashing 19
20 Concatenazione/2 insert(el, k): inserimento in testa alla lista associata alla posizione h(k) costo O(1) search(k): ricerca lineare nella lista associata alla posizione h(k) costo O(lungh. lista associata a h(k)) delete(k): ricerca nella lista associata a h(k), quindi cancellazione costo O(lungh. lista associata a h(k)) Hashing 20
21 Indirizzamento aperto Tutti gli elementi sono memorizzati nella tabella Le collisioni vanno risolte all interno della tabella Se la posizione calcolata è già occupata occorre cercarne una libera I diversi metodi ad indirizzamento diretto si distinguono per il metodo di scansione adottato La funzione hash dipende anche dal numero di tentativi effettuati Indirizzo=h(k, i) per l i-esimo tentativo Hashing 21
22 Inserimento insert (el, k) { /* T denota la tabella */ i=0; while (h(k, i) <occupata> && (i< T )) i++; if (i < T ) <inserisci el in pos. i> else <overflow> } Hashing 22
23 HashTable.insert() public Object insert(comparable key ){ int collisionnum = 0; int initialpos = hash( key.tostring(),table.length ); int currentpos=initialpos; while((collisionnum<=table.length)&& table[ currentpos ]!= null &&!table[ currentpos ].equals( key ) ){ currentpos = initialpos + k * ++collisionnum; // Compute ith probe currentpos = currentpos % table.length; // Implement the mod } if (collisionnum > table.length){ System.out.println("Insertion impossible: hash table full"); return null; } Hashing 23
24 HashTable.insert() else if (table[ currentpos ].equals( key ) ){ System.out.println("Element "+ key +" is alredy in the hash table."); return key; }else{ table[ currentpos ] = key; ++currentsize; System.out.println("Insertion: ok!"); return key; } } Hashing 24
25 Ricerca search (k) { /* T denota la tabella */ i=0; while ((k!=key(t[h(k, i)])) && (i< T )) i++; if (i < T ) <restituisci T[h(k, i)]> else <elemento assente> } Hashing 25
26 Cancellazione delete (k) { /* T denota la tabella */ search(k); if (<trovato>) <elimina elemento con chiave k> } Hashing 26
27 HashTable.remove() public Comparable remove(comparable key ){ int collisionnum = 0; int initialpos = hash( key.tostring(),table.length ); int currentpos=initialpos; while(!table[ currentpos ].equals( key )&& (collisionnum<=table.length)){ currentpos = initialpos + k * ++collisionnum; // Compute ith probe currentpos = currentpos % table.length; // Implement the mod } Hashing 27
28 HashTable.remove() if (!table[ currentpos ].equals( key )){ System.out.println("Element "+ key +" isn't in the hash table."); return null; }else{ System.out.println("Element "+ key +" is removed from the hash table."); table[currentpos]=null; return key; } } Hashing 28
29 Scansione La funzione h(k, i) deve essere tale che tutte le posizioni della tabella siano esaminate Sono possibili diverse forme per la funzione h(k,i) Scansione lineare Scansione quadratica Hashing doppio Si differenziano per complessità e comportamento rispetto a fenomeni di agglomerazione Hashing 29
30 Scansione lineare h(k, i) = (h (k)+i) mod T, dove h (k) è una funzione di hashing Si scandiscono tutte le posizioni nella sequenza T[h (k)], T[h (k)]+1,... T[ T ], 0, 1,..., T[h (k)]-1 Possibilità di agglomerazione primaria: gli elementi si agglomerano per lunghi tratti Hashing 30
31 Agglomerazione primaria h(k, i) = (h (k)+i) mod 101, h (k)=k mod 101 {2, 103, 104, 105,...} Caso estremo, ma il problema Esiste Prob[cella succ. gruppo]= dim(gruppo + 1)/ T Prob[cella isolata]= 1/ T 100 Hashing 31
32 Scansione quadratica h(k, i) = (h (k)+c 1 i+c 2 i 2 ) mod T, dove h (k) è una funzione di hashing, c 1 e c 2 sono costanti Es.: h(k, i) = h (k)+i 2, h(k, i+1) = h (k)-i 2, i=1,..., ( T -1)/2 Possibilità di agglomerazione secondaria: se h (k 1 )= h (k 2 ) h (k 1,i)= h (k 2,i) Descrivere h(k, i) quando h (k)=k mod 5 Hashing 32
33 Hashing doppio h(k, i) = (h 1 (k)+ih 2 (k)) mod T, dove h 1 (k) e h 2 (k) sono funzioni di hashing Es.: h(k, i) = h (k)+i 2, h(k, i+1) = h (k)-i 2, i=1,..., ( T -1)/2 Anche la modalità di scansione dipende dalla chiave L hashing doppio riduce i fenomeni di agglomerazione Hashing 33
34 Universal Hashing/1 Nel caso peggiore possono essere scelte n chiavi tali che h(k 1 )= h(k 2 )=. h(k n ). In questo caso il tempo di retrieval è O(n) Qualsiasi funzione hashing deterministica puo incontrare questo caso peggiore. Nell Universal Hashing si definisce una famiglia di funzioni hash. Una delle funzioni è selezionata a priori, in modo indipendente dalle chiavi degli elementi. Hashing 34
35 Universal Hashing/2 H e una famiglia di funzioni hash H e universale se per ogni coppia x,y: #h H:h(x)=h(y)= H / T La probabilità di collisione tra due chiavi è simile ad una scelta casuale di h(x): E[ c xy ] = 1/ T Hashing 35
36 Universal Hashing/3 Come costruire una famiglia universale H di funzioni hash? m= T primo x = <x 0, x 1,.., x r > r+1 bytes a = <a 0, a 1,.., a r > r+1 elementi random in {0,,m-1} h a = r! i= 0 a i x i mod m H contiene m r+1 funzioni H = U a h a Hashing 36
37 Universal Hashing/4 Thm:H è una famiglia universale di funzioni hash Fissati <a 1,.., a r > esiste un solo valore a 0 a r! 0 ( x0 " y0) = " a i( xi " yi )(mod m) i= 0 Percio ogni coppia di x e y collide esattamente per un m r valori della sequenza a Poiche vi sono m r+1 valori possibili per la sequenza a, la collisione avviene con probabilita 1/m Hashing 37
argomenti Hashing Richiamo sul concetto di dizionario Tabelle hash ! Hashing ! Funzioni hash per file ! Insieme di coppie del tipo <elemento, chiave>
argomenti Hashing! Hashing! Tabelle hash! Funzioni hash e metodi per generarle! Inserimento e risoluzione delle collisioni! Eliminazione! Funzioni hash per file! Hashing estendibile! Hashing lineare Hashing
DettagliTABELLE 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
DettagliDizionario. 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
DettagliTabelle 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)
DettagliAlgoritmi 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)
DettagliINTRODUZIONE 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliTavole 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
DettagliAlgoritmi 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
DettagliTabelle 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
DettagliInformatica 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
DettagliTavole (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
DettagliImplementazione 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
DettagliGianpiero 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
DettagliHash Tables. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione
Hash Tables Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Hash Tables, A.A. 2009/2010 1/42 Hash Tables Indirizzamento
DettagliUniversità 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
DettagliCOGNOME E NOME (IN STAMPATELLO) MATRICOLA
Politecnico di Milano Facoltà di Ingegneria dell Informazione Informatica 3 Proff. Campi, Ghezzi, Matera e Morzenti Seconda prova in itinere 4 Luglio 2006 COGNOME E NOME (IN STAMPATELLO) MATRICOLA Risolvere
DettagliAlgoritmi e Strutture Dati. Lezione 5
Algoritmi e Strutture Dati Lezione 5 www.iet.unipi.it/a.virdis Antonio Virdis antonio.virdis@unipi.it 1 Sommario Hashing Hashing e tipi di input Esercizi 2 Array ++ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3
DettagliHash 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.
DettagliInformatica 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
DettagliHeap 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à
DettagliSommario. 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
DettagliAlgoritmi 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
DettagliOrganizzazioni 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
DettagliTabelle 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
DettagliLook 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
DettagliAnalisi 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
DettagliEsercizi 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
DettagliTipo 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
DettagliArray e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 17. A. Miola Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 17 A. Miola Gennaio 2012 1 Contenuti q Array paralleli q Array e oggetti q Ricerca sequenziale q Ricerca binaria q Fusione di sequenze
DettagliIl 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
DettagliDefinizione 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
DettagliIl 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
DettagliAltro 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
DettagliMassimo 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
DettagliDizionari. 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
DettagliADT 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
DettagliHash Table. Hash Table
Hash Table La ricerca di un elemento su una lista (semplice o doppia) presenta una complessità di tipo O(n), dato che occorre scandire (al più) l intera lista per poter trovare l elemento desiderato. Le
Dettaglicome segue: data una collezione C di elementi e una un elemento che verifica la proprietà P
Problemi di Ricerca Carla Binucci e Walter Didimo Il problema della Ricerca In generale, il Problema della Ricerca è definito come segue: data una collezione C di elementi e una proprietà P, determinare
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliSET: specifica INTRODUZIONE. SET: esempio Si stampano i numeri casuali in ordine di generazione e il contenuto dell insieme.
INTRODUZIONE Il tipo di dati astratto insieme (set) definisce operazioni, quali inserimento e rimozione, su collezioni di oggetti che presentano molteplicità uno, cioè non sono ammessi duplicati. Una possibile
DettagliMassimo 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
DettagliHeap e Code di Priorità
Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non
DettagliAlgoritmi 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
DettagliRisoluzione 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
DettagliTabelle 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
Dettagli05EIP. 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:
Dettaglialgoritmi 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,
DettagliScritto di Algoritmi e s.d. (1o anno) 14 Luglio 2004 TESTO e RISPOSTE (in fondo)
Scritto di Algoritmi e s.d. (1o anno) 14 Luglio 2004 TESTO e RISPOSTE (in fondo) Esercizio 1 (punti 4 in prima approssimazione) Consideriamo il seguente codice C: typedef struct nodo * Alb; struct nodo
DettagliTecnica 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
DettagliEsercizio. Scrivere una classe ListMap<K, V> che implementa la mappa con una lista. Strutture Dati
Esercizio Scrivere una classe ListMap che implementa la mappa con una lista Esercizio Si scriva un metodo public static PositionList preorder(linkedbinarytree T) che preso in
DettagliAlgoritmi 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
DettagliAlgoritmi 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,
DettagliALBERI. Un Albero. Un grafo aciclico che non è un albero: due archi entranti in uno stesso nodo
ALBERI Un Albero è un grafo orientato connesso e aciclico, in cui inoltre esattamente un nodo (detto radice) non ha nessun arco entrante, e ogni altro nodo ha esattamente un arco entrante. Ogni nodo viene
DettagliAlgoritmi 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
DettagliEsercizi parte 3. La classe ArrayBinTree dovra implementare, tra le altre, l operazione seguente: padre: dato un nodo, restituire l indice del padre.
Esercizi parte 3 RAPPRESENTAZIONE DI ALBERI BINARI 1. Definire una classe LinkedBinTree che implementa alberi binari in modo collegato, con nodi implementati come oggetti di classe BinNode. La classe dovra
DettagliApplicazioni: Correttore ortografico: Hashtable. Funzioni hash: MD5 e SHA.
SOMMARIO Funzioni hash e tabelle hash: Strutture dati e operazioni di ricerca. Funzioni hash: Chiavi numeriche. Chiavi non numeriche: approccio polinomiale. Collisioni: Distribuzione uniforme: numeri primi.
DettagliEsercitazioni del Corso di Fondamenti di Informatica ARRAY. Prof. Giuseppe Manco. A cura di Ing. Andrea Tagarelli
Esercitazioni del Corso di Fondamenti di Informatica ARRAY Prof. Giuseppe Manco A cura di Ing. Andrea Tagarelli ESERCIZIO 1 public static int[] elaboravettore (int[] v) che verifica che gli elementi di
DettagliEfficienza algoritmi. Esempi
Efficienza algoritmi indipendente dal tipo di computer e dati stima del numero di operazioni necessarie es. stampa di una lista linkata es. un doppio loop stima caso peggiore caso medio programmazione
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliCoda su lista concatenata
Cosa studiare nel libro Capitolo 7: tutto tranne Argomenti avanzati 7.2 e 7.5 Capitolo 8: solo 8.5, 8.6, 8.7, 8.8 e Argomenti avanzati 8.1 Capitolo 9: tutto fino a 9.6 (escluso) Capitolo 10: tutto fino
DettagliAlgoritmi 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
DettagliINFORMATICA 3 Prof.ssa Sara Comai
INFORMATICA 3 Prof.ssa Sara Comai ESERCIZI SESSIONE LIVE Ricerca e indicizzazione Ing. Paola Spoletini 1. Hashing Data una tabella hash di lunghezza m=11, si supponga di dover inserire (in ordine) le chiavi:
DettagliDati 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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati
Passaggio dei parametri in Java Nel seguente esempio public class parametri2 public static void main(string args[]) int x = 1; int y; double d[] = new double[2]; d[0] = 25; y= metodo1(d, x); System.out.println("Il
DettagliEsame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z
Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z Anno Accademico 2002-2003 9 luglio 2002-03 Domanda 1, punti 6 Si consideri la seguente classe Java, in cui,
Dettagli3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;
Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso
Dettaglideterminare una funzione di accesso non biunivoca ma che riduca al massimo la possibilità di collisioni (funzione hash),
Tabelle Hash Per accedere agli elementi di una tabella è possibile utilizzare metodi di accesso diretto ai dati (detti anche metodi di accesso calcolato) che sono basati sulla possibilità di associare
DettagliInformatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann
Informatica 3 LEZIONE 16: Heap - Codifica di Huffmann Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 Lezione 16 - Modulo 1 Heap e code di priorità Introduzione
DettagliHashing. 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
DettagliLaboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Templates C++ ed Alberi di Ricerca
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Templates C++ ed Alberi di Ricerca Marco Antoniotti Laboratorio Comunicazioni di servizio Da settimana prossima di venerdì 12, 19 e 26 1
DettagliSimpleList: Realizzazione. Strutture dati. Strutture dati lineari: liste. SimpleList: rappresentazione collegata. Lista semplice: SimpleList
4 SimpleList: Realizzazione Strutture dati Un programma object-oriented usa oggetti per memorizzare dati Come organizzare gli oggetti in strutture dati dipende dalle funzionalità desiderate del programma
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Tecniche di Programmazione: Collezioni Parte b versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi
DettagliBasi 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
DettagliSpesso sono definite anche le seguenti operazioni:
Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:
DettagliIl TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliEsercizi su Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E09. C. Limongelli Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E09 Esercizi su Array C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esercizi su array 1 Contenuti Esercizi:
DettagliDefinizione informale
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliDefinizione informale. Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliAlgoritmi e Strutture Dati 2/ed Quiz a risposta multipla
Camil Demetrescu Irene Finocchi Giuseppe F. Italiano Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Indice 1 Un introduzione informale agli algoritmi 1 2 Modelli di calcolo e metodologie di
DettagliORDINAMENTO PER SELEZIONE ORDINAMENTO PER SELEZIONE ORDINAMENTO VELOCE CONFRONTI
ORDINAMENTO PER SELEZIONE Per l analisi delle prestazioni di tale algoritmo di ordinamento, si considerano i due cicli for annidati: poiché i confronti avvengono nel ciclo interno si ha che n 2 i= 0 (
DettagliAlberi ed Alberi Binari di Ricerca
Alberi ed Alberi Binari di Ricerca Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell
DettagliProblemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
DettagliDipartimento 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
DettagliSi usano quando serve accesso rapido sia in lettura che in scrittura su un insieme non ordinato
Le tavole hash È il modo con cui sono realizzati gli HashSet Si usano quando serve accesso rapido sia in lettura che in scrittura su un insieme non ordinato Principio base Gli array hanno le caratteristiche
DettagliArray. Walter Didimo
Array Walter Didimo Un problema ricorrente Gli strumenti di programmazione che abbiamo visto sin qui non sono ancora sufficienti per risolvere tutti i problemi di base Consideriamo ad esempio il seguente
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
DettagliAlberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
DettagliRicerca in una sequenza ordinata
Ricerca su array ordinata Ricerca in una sequenza ordinata Se la sequenza è ordinata posso sfruttare l ordinamento per rendere più efficiente la ricerca, terminando se l elemento corrente risulta maggiore
DettagliEsercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E08 Esercizi su Array C. Limongelli Gennaio 2012 1 Contenuti q Esercizi: Lettura e stampa di un array Massimo elemento di un array
DettagliStrutture 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
Dettaglitipi di dato astratti
tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica
DettagliArray e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento Selection Sort Quick Sort Lower bound alla complessità degli algoritmi di ordinamento giu 03 ASD 1 Selection Sort SelectionSort(dati[]) { for (i=0; i
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E14 F. Gasparetti, C. Limongelli Maggio 2012 1 Verifica presenza di elementi comuni V1 - Date due liste di stringhe scrivere
DettagliCapitolo 16 Iterazione
Capitolo 16 Accesso a sequenze I problemi esaminati in questo capitolo hanno lo scopo di accedere ed elaborare delle sequenze sequenze immesse dall utente lette dalla tastiera di lunghezza nota con un
Dettagli