Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4"

Transcript

1 Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Dizionari e tabelle G. Gini 2013

2 dizionari Molte applicazioni richiedono solo di accedere a informazioni dinamiche per le operazioni di: search(item k) insert(item k) delete(item k) Servono per compilatori (tabella dei simboli ), memoria cache dei browser, tabu-search, combinatorial chemistry, etc

3 dizionari k Dizionario r 1 Record k data 1... data n r n Quale struttura dati per il dizionario? Array di record, da ordinare sul campo chiave?

4 Come implementare dizionari Array ordinato ricerca O(log n), inserimento/cancellazione O(n) Lista non ordinata ricerca/cancellazione O(n), inserimento- in testa O(1) Albero binario bilanciato ricerca/cancellazione O(log n), inserimento O(log n) 4

5 Nuova struttura dati: tabella Hash Vantaggio di usare array: l accesso ad un elemento èo(1) Svantaggio di usare array per dizionari: dimensione dell array per memorizzare molte chiavi Tabella Hash = struttura dati efficiente per implementare dizionari Nel caso peggiore la ricerca di un elemento è Θ(n) Facendo assunzioni ragionevoli il numero di chiavi effettivamente memorizzate è piccolo rispetto al numero delle chiavi possibili - la ricerca nel caso medio è Θ(1)

6 Tabella ad Accesso Diretto L universo delle chiavi possibili sia U {0, 1,, m 1} Utilizziamo un array T[0.. m 1] per memorizzarle serve una funzione iniettiva H: U -> {0, 1,, m 1} che permetta di ricavare la posizione della chiave H(k) nel vettore T in modo che per ogni k1 U e k2 U, k1 k2, H(k1) H(k2) m non potrebbe essere più piccolo di U in tal caso si accede direttamente ad ogni posizione in tempo O(1).

7 Tabella ad Accesso Diretto Problema: l universo U può essere molto grande e l array T così definito non può essere utilizzato Esempio: una chiave a 64 bit rappresenta valori Per evitare sprechi di memoria la dimensione m va scelta sulla base del numero di chiavi che si pensa davvero di usare, rinuciando alla iniettività della funzione H. Perciò chiavi diverse potranno avere lo stesso indirizzo nel vettore, H(k1)=H(k2) anche se k1 k2 Perchè allora non avere un unico indirizzo per ogni possibile chiave e memorizzare tutte le chiavi in una lista? No, il tempo per le operazioni cresce come O(n).

8 Tabella ad Accesso Diretto Occore una soluzione di compromesso con m>1 ma molto minore di U Occorre definire una funzione di hash (spezzettamento) che permetta di generare l indirizzo nell array per ogni elemento da inserire. Con l indirizzamento diretto nell array un elemento con chiave k è memorizzato nello slot k. Con l hashing è memorizzato nello slot h(k). La funzione h associa l universo U delle chiavi agli slot di una tabella hash T[0, 1,, m-1]

9 Funzioni hash perfette Vorremmo funzioni hash perfette, cioè iniettive, ovvero: u v h(u) h(v) Questo richiede che m U Esempio: Le matricole degli studenti degli ultimi tre anni Distribuiti fra e h(k) = k , m = 1000 Problema: è spesso impraticabile ottenere una funzione hash perfetta

10 Funzioni di hash definire una funzione di hash h che mappa l universo U di tutte le chiavi in {0, 1,, m 1} T 0 k 1 k 5 k 4 k 2 k 3 U h(k 1 ) h(k 4 ) h(k 2 ) = h(k 5 ) h(k 3 ) m 1 PROBLEMA: Quando inseriamo Quando una una chiave chiave k i, kla i èfunzione mappatadi in hash uno hslot già occupato si genera una collisione mappa la chiave in uno slot di T

11 Riassumendo: Tabelle hash Un array T[0...m-1] Una funzione hash h: U {0,...,m-1} Indirizzamento hash Diciamo che h(k) è il valore hash della chiave k La chiave k viene mappata nello slot T[h(k)] PROBLEMA: Quando due o più chiavi nel dizionario hanno lo stesso valore hash, diciamo che è avvenuta una collisione Idealmente vogliamo funzioni hash senza collisioni

12 Risolvere le collisioni - concatenamento I record mappati nello stesso slot sono inseriti in una lista T h(49) = h(86) = h(52) = i i Caso peggiore: tutte le chiavi sono mappate nello stesso slot, il tempo di accesso è Θ(n)

13 Fattore di carico Data una tabella hash T con m slot dove sono memorizzati n elementi, fattore di carico α è il rapporto n/m Caso pessimo: le n chiavi sono associate tutte allo stesso slot creando una lista di lunghezza n. La ricerca è quindi Θ(n), nessun vantaggio Se qualsiasi elemento ha la stessa probabilità di essere associato a uno qualsiasi degli m slot, il valore medio della lunghezza della lista associata allo slot j sarà n/m, cioè α. Se il valore hash h(k) può essere calcolato in O(1), il tempo per cercare un elemento con chiave k dipende dalla lunghezza della lista associata. Il tempo è Θ(1+α),

14 Progettare buone funzioni di hash Le collisioni sono inevitabili, si cerca quindi di minimizzare il loro numero Funzioni di hash che distribuiscano uniformemente le chiavi negli indici [0..m-1] della tabella hash Usando una dimensione m che sia una sovrastima delle chiavi davvero usate

15 Hash con uniformità semplice Proprietà: uniformità semplice sia P(k) la probabilità che una chiave k sia inserita in tabella sia Q(i) = Σ k:h(k)=i P(k) la probabilità che una chiave qualsiasi, finisca nella cella i. Una funzione h gode della proprietà di uniformità semplice se i [0...m 1]: Q(i)=1/m Esempio: U numeri reali in [0,1], ogni chiave k ha la stessa probabilità di essere scelta, m slot, allora h(k)= km soddisfa la proprietà di uniformità semplice Per ottenere una funzione hash con uniformità semplice, la distribuzione delle probabilità P deve essere nota Nella realtà la distribuzione esatta può non essere nota e quindi si utilizzano euristiche (ad esempio chiavi vicine vengano assegnate a slot distanti, etc)

16 chiavi come numeri naturali Assunzioni Tutte le chiavi sono equiprobabili: P(k) = 1 / U Le chiavi sono valori numerici non negativi Tutte le chiavi devono essere trasformate in numeri Con questa ipotesi vedremo diversi metodi per costruire buone funzioni di hash È possibile trasformare una chiave stringa in un numero, ad ed esempio considerando il carattere ASCII e la posizione DOG -> 'D'*256*256+'O'*256+'G'

17 Creare funzioni hash Ci sono 4 metodi 1. Divisione 2. Moltiplicazione 3. Estrazione: si prende un sottoinsieme di p bit della rappresentazione binaria di k 4. Xor: si sommano bit a bit diversi sottoinsiemi della rappresentazione binaria di k

18 1. Divisione Una chiave k viene associata ad uno degli m slots usando il resto della divisione per m: h(k) = k mod m Esempio: m=12, k=100 h(k) = 4 Vantaggio: molto veloce (richiede solo una divisione) Svantaggio: il valore m deve essere scelto opportunamente Non vanno bene alcune scelte di m m=2 p : h(k) rappresenta i p bit meno significativi di k m=2 p -1: permutazione di stringhe in base 2 p hanno lo stesso valore hash Vanno bene: Numeri primi, distanti da potenze di 2 (e di 10)

19 2. Moltiplicazione Il metodo di moltiplicazione si svolge in due passate: prima moltiplichiamo la chiave k per una costante A, 0<A<1, poi estraiamo la parte frazionaria di h(k), la moltiplichiamo per m e prendiamo la parte intera inferiore h(k)= m(ka - ka ) = m(ka mod1) Esempio: m = 8, k = 21, A =13/32 h(k)=h(21) = 8(21.13/32) mod 1 = 8(8.53 mod 1) = 8 (0.53) = 4 Svantaggi: più lento del metodo di divisione Vantaggi: il valore di m non è critico Si può scegliere una potenza di 2 (m=2 p ), che semplifica l'implementazione Come scegliere A? Knuth suggerisce A ( 5 1)/2

20 Implementazione del Metodo della Moltiplicazione con operazioni sui bit Si sceglie m=2 p con p intero Sia w la dimensione in bit della parola di memoria: k, m 2 w Sia s = A2 w ks può essere scritto come r 1 2 w + r 0 r 1 contiene la parte intera di ka r 0 contiene la parte frazionaria di ka Ritorniamo i p bit più significativi di r 0

21 Risolvere le collisioni Una buona funzione di hash può ridurre, ma non elimina le collisioni Come gestire le collisioni residue? Dobbiamo trovare collocazioni alternative per le chiavi Se una chiave non si trova nella posizione attesa, bisogna andare a cercare nelle posizioni alternative Le operazioni possono costare Ө(n) nel caso peggiore......ma hanno costo Ө(1) nel caso medio Due tecniche: Concatenamento Indirizzamento aperto

22 Soluzione collisioni - Concatenamento Gli elementi con lo stesso valore hash h vengono memorizzati in una lista Si memorizza un puntatore alla testa della lista nello slot A[h] della tabella hash Operazioni Insert: inserimento in testa Search, Delete: richiedono di scandire la lista alla ricerca della chiave

23 Operazioni per concatenamento Tutti gli elementi associati allo stesso slot sono posti in una lista. La tabella contiene puntatori alle liste associate. Le liste possono essere doppiamente concatenate. Le operazioni del dizionario sono così modificate: chained-hash-insert (T, x) inserisce x in testa alla lista T[h(key[x])] chained-hash-search (T, x) ricerca un elemento con chiave k nella lista T[h[(k)] chained-hash-delete (T, x) cancella x dalla lista T[h(key[x])]

24 Concatenamento: complessità n: # elementi nella tabella m: # slot nella tabella Fattore di carico α: # medio di elementi nelle liste (α=n/m) Caso pessimo Tutte le chiavi sono collocate in unica lista Insert: Ө(1) Search, Delete: Ө(n) Caso medio Dipende da come le chiavi vengono distribuite Assumiamo hashing uniforme semplice Costo funzione di hashing è Ө(1) Costo per insert, search, delete?

25 Concatenamento: complessità Teorema: In una tabella hash con concatenamento, una ricerca senza successo richiede un tempo atteso Ө(1 + α) Teorema: In una tabella hash con concatenamento, una ricerca con successo richiede un tempo atteso Ө(1 + α). Più precisamente Ө(2 + α/2 + α/2n), dove n è il numero di elementi Qual è il significato? quindi tutte le operazioni sono Ө(1) nell ipotesi di hashing uniforme semplice

26 Soluzione collisioni - Indirizzamento Aperto La gestione delle collisioni tramite concatenamento richiede una struttura dati complessa, con liste e puntatori Idea: memorizzare tutte le chiavi nella tabella stessa - non necessita di memoria oltre la tabella stessa, non servono puntatori Ogni slot contiene una chiave oppure nil Inserimento: Se lo slot prescelto è utilizzato, si cerca uno slot alternativo generando una sequenza di sondaggio (probing) Ricerca: Si cerca nello slot prescelto, e poi negli slot alternativi fino a quando non si trova la chiave oppure nil

27 Indirizzamento Aperto L inserimento aperto sistematicamente esamina la tabella fino a quando uno slot vuoto viene trovato La funzione di hash dipende sia dalla chiave h(k,0) che dall indice di probing h(k,i): h: U {0, 1,, m 1} {0, 1,, m 1} La sequenza di probing <h(k,0), h(k,1),, h(k,m 1)> deve essere una permutazione di {0, 1,, m 1} Nota Può essere necessario esaminare ogni slot Non vogliamo esaminare ogni slot più di una volta La tabella tende a riempirsi e la cancellazione può essere complicata

28 Esempio Inserisce la chiave k = 496: 0. Probe h(496,0) T collisione m 1

29 Esempio Inserisce k = 496: 0. Probe h(496,0) 1. Probe h(496,1) T collisione m 1

30 Esempio Inserisce k = 496: 0. Probe h(496,0) 1. Probe h(496,1) 2. Probe h(496,2) T inserimento m 1

31 Esempio Sequenza di probing per k = 496: 0. Probe h(496,0) 1. Probe h(496,1) 2. Probe h(496,2) La ricerca utilizza la stessa m 1 sequenza di probing La ricerca ha successo se trova la chiave e fallisce se incontra uno slot vuoto T

32 Algoritmo di Inserimento Hash-Insert(A, k) 1. i := 0 2. repeat j := h(k, i) 3. if A[j] = nil then 4. A[j] := k 5. return j 6. else 7. i := i until i = m 9. error hash table overflow

33 Algoritmo di Ricerca Hash-Search (A, k) 1. i := 0 2. repeat j := h(k, i) 3. if A[j] = k then 4. return j 5. i := i until A[j] = nil or i = m 7. return nil

34 Cancellazione Non è possibile sostituire la chiave che vogliamo cancellare con nil (perché non riusciremmo più a trovare le chiavi inserite dopo quella cancellata) Soluzione Utilizziamo uno speciale valore DELETED al posto di nil per marcare uno slot come vuoto dopo la cancellazione Ricerca: DELETED trattati come slot pieni Inserimento: DELETED trattati come slot vuoti Svantaggio: il tempo di ricerca non dipende più da α.

35 Probing (Ispezione) Hashing Uniforme (ideale) Generalizzazione dell'hashing uniforme semplice Ogni chiave ha la stessa probabilità di avere come sequenza di ispezione una qualsiasi delle m! permutazioni di [0..m-1] Difficile da implementare, si usano approssimazioni che non soddisfano appieno l hashing uniforme Tecniche per calcolare le sequenze di scansione: 1. Ispezione lineare 2. Ispezione quadratica 3. Doppio hashing

36 1. Probing Lineare Funzione di hash: h(k,i) = (h (k)+i) mod m per i fra 0 e m-1 Funzione hash ausiliaria Si usa una funzione hash ausiliaria. Il primo slot esaminato è h'(k), poi in sequenza h'(k), h'(k)+1,, m 1, 0, 1,, h'(k) 1 Solo m sequenze di ispezione distinte CProblema: clustering Primario Lunghe sotto-sequenze occupate che tendono a diventare via via sempre più lunghe Uno slot vuoto preceduto da i slot pieni viene riempito con probabilità (i+1)/m I tempi medi di inserimento e cancellazione crescono

37 2. Probing Quadratico Funzione: h(k,i) = (h'(k) + c 1 i + c 2 i 2 ) mod m con c 1 c 2 Con hash secondario e costanti non nulle Sequenza di ispezioni L'ispezione iniziale è T[h'(k) ] Le ispezione successive hanno un offset che dipende da una funzione quadratica nel numero di ispezione i Solo m sequenze di ispezione distinte sono possibili c 1, c 2, m devono essere scelti in modo da garantire la permutazione di [0..m-1] Problema di clustering secondario Se due chiavi hanno la stessa ispezione iniziale, poi le loro sequenze sono identiche

38 3. Probing con Doppio Hashing Funzione: h(k,i) = (h 1 (k) + i h 2 (k)) mod m Usa due funzioni hashing ausiliarie: h 1 determina la prima ispezione T[h'(k) ] h 2 fornisce l'offset delle successive ispezioni m 2 sequenze di ispezione distinte sono possibili Nota: Per garantire una permutazione completa, h 2 (k) deve essere relativamente primo con m (cioè non avere divisori comuni tranne 1) Scegliere m = 2 p e h 2 (k) che restituisca numeri dispari Scegliere m primo, e h 2 (k) deve restituire numeri < di m esempio: h1(k) = k mod m h2(k) = 1 + (k mod m') con m' < m (per esempio m' = m-1)

39 Esempio doppio hashing Tabella hash di 13 posizioni h(k,i) = (h 1 (k) + i h 2 (k)) mod m h1(k) = k mod 13 h2(k) = 1 + (k mod 11) la chiave 14 diventa 1 per h1e 3+1 per h2, cioè offset pari a 4 La chiave 14 viene inserita nello slot vuoto 9 poiché sia 1 che 5 sono trovati già occupati

40 Indirizzamento aperto: Complessità Assunzioni Hashing uniforme Nessuna cancellazione Nella ricerca con successo, tutte le chiavi hanno la stessa probabilità di essere cercate Analisi n chiavi inserite in una tabella di m slot n < m, ovvero il fattore di carico α < 1 Analisi basata sul valore di α

41 Indirizzamento aperto: Complessità Teorema 1: Il numero atteso di ispezioni per una ricerca senza successo è al massimo 1/(1- α) Teorema 2: Il numero atteso di ispezioni per una ricerca con successo è al massimo 1/ α ln 1/(1- α) Teorema 3: Il numero atteso di ispezioni per un inserimento è al massimo 1/(1- α) Implicazioni Se α è costante, allora l accesso a una tabella hash con indirizzamento aperto richiede un tempo costante Se la tabella è mezza piena, allora il numero atteso di ispezioni è 1/(1 0.5) = 2. Se la tabella è piena al 90%, allora il numero atteso di ispezioni è 1/(1 0.9) = 10.

42 Intrinseca Debolezza dell Hashing Problema: Per una qualsiasi funzione di hash h, può essere generato un insieme di chiavi che causa un alto tempo medio di accesso. Ad esempio, un utente potrebbe scegliere un insieme di n chiavi che si mappano tutte sullo stesso slot portanto il tempo di accesso a Θ(n) Soluzione: la funzione di hash viene scelta in maniera casuale in maniera indipendente dalle chiavi che poi verranno memorizzate Universal Hashing

43 Hashing universale Definizione. Dato l universo di chiavi U e una collezione finita H di funzioni di hash, ciascuna delle quali mappa U in {0, 1,, m 1}, diciamo che H è universale se per ogni coppia di chiavi x, y U, x y, il numero delle funzioni hash h H per cui h(x) = h(y) è al massimo H / m. Ovvero, H è universale se la probabilità di collisione fra x e y è 1/m se scegliamo la funzione di hash fra quelle di H {h : h(x) = h(y)} H m H

44 Hashing universale Teorema. Sia data una funzione di hash h scelta in maniera casuale (con probabilità uniforme) da un insieme universale di funzioni di hash H. Se h è utilizzata per mappare n chiavi negli m slot (con n m) della tabella T, allora, per una chiave x abbiamo, p[# collisioni per x] < n/m (ovvero <1) Come progettare H?

45 Design di Universal Hashing Scegliamo m dall insieme dei numeri primi e scomponiamo la chiave k in r + 1 digit (o byte o sottosequenze binarie) con valore in {0, 1,, m 1}. La chiave k può essere rappresentata come <k 0, k 1,, k r >, dove 0 k i <m Randomized strategy Scegliamo a = <a 0, a 1,, a r > dove a i èsceltoin maniera casuale da {0, 1,, m 1} Definiamo h a (k) = Σ i20..r a i k i mod m Definiamo H = {h a (k)} e quindi H =m r+1 Teorema: H={h a (k)} è universale

46 Hashing perfetto L hashing può essere utilizzato per ottenere prestazioni eccellenti anche nel caso peggiore se l insieme delle chiavi è statico, cioè una volta che le chiavi sono memorizzate in tabella queste non cambiano più. Il caso si presenta ad esempio per le parole riservate di un linguaggio di programmazione, i nomi dei files su un CD-Rom, etc. Chiamiamo hashing perfetto un metodo di hashing per cui anche nel caso peggiore il tempo di ricerca è O(1).

47 Costruzione di hashing perfetto Utilizziamo uno schema a due livelli, con un hashing universale a ciascun livello. Il primo livello è sostanzialmente hashing con concatenamento con una funzione hash universale; Invece di creare la lista concatenata di chiavi associate allo slot j, usiamo una piccola tabella hash secondaria Sj con una sua funzione di hash che garantisca che non ci siano collisioni. La dimensione della tabella secondaria dovrà essere il quadrato del numero delle chiavi che si associano allo slot j.

48 Teoremi per hashing perfetto Teorema 1: se memorizziamo n chiavi in una tabella di dimensione m=n 2, la probabilità che si verifichi una collisione è minore di ½ Teorema 2: se memorizziamo n chiavi in una tabella hash lunga m usando una funzione hash universale ed impostiamo la dimensione delle tabelle secondarie pari al quadrato delle collisioni, abbiamo che la memoria totale occupata per tutte le tabelle è minore di 2n. Perciò la memoria usata per l hashing perfetto è Θ(n)

49 conclusioni hash table Tables which can be searched for an item in O(1) time using a hash function to form an address from the key. hash function Function which, when applied to the key, produces a integer which can be used as an address in a hash table. collision When a hash function maps two different keys to the same table address, a collision is said to occur. linear probing A simple re-hashing scheme in which the next slot in the table is checked on a collision. quadratic probing A re-hashing scheme in which a higher (usually 2nd) order function of the hash index is used to calculate the address. perfect hash function Function which, when applied to all the members of the set of items to be stored in a hash table, produces a unique set of integers within some suitable range. Good implementations available in java, C++ distributed hash tables (DHT) in peer-to-peer systems

50 Esercizio Data una tabella hash di lunghezza m=11, si supponga di dover inserire nell ordine le chiavi: 35, 83, 57, 26, 15, 63, 97,46, con la funzione di hash h(k) = k mod m. Si illustrino i risultati dell inserimento usando: separate chaining linear probing quadratic probing (hi(k)=(h(k)+i 2 ) mod m) double hashing con h2(k)=1+(k mod (m-1))

51 Calcolo di h(k) h(35)=35mod11=2 h(83)=83mod11=6 h(57)=57mod11=2 h(26)=26mod11=4 h(15)=15mod11=4 h(63)=63mod11=8 h(97)=97mod11=9 h(46)=46mod11=2

52 Separate chaining h(35)=2 h(83)=6 h(57)=2 h(26)=4 h(15)=4 h(63)=8 h(97)=9 h(46)=2

53 Linear Probing h(57)=2 -> lo slot 2 è occupato h 1 (57)=3 h(15)=4 -> lo slot 4 è occupato h 1 (15)=5 h(46)=2 -> lo slot 2 è occupato h 1 (46)=3 -> lo slot 3 è occupato h 2 (46)=4 -> lo slot 4 è occupato h 3 (46)=5 -> lo slot 5 è occupato h 4 (46)=6 -> lo slot 6 è occupato h 5 (46)=7 h(35)=2 h(83)=6 h(57)=2 h(26)=4 h(15)=4 h(63)=8 h(97)=9 h(46)=2

54 Quadratic Probing h i (k)=(h(k)+i 2 )mod m h(57)=2 -> lo slot 2 è occupato h 1 (57)=3 h(15)=4 -> lo slot 4 è occupato h 1 (15)=5 h(46)=2 -> lo slot 2 è occupato h 1 (46)=3 -> lo slot 3 è occupato h 2 (46)=6 -> lo slot 6 è occupato h 3 (46)=0 h(35)=2 h(83)=6 h(57)=2 h(26)=4 h(15)=4 h(63)=8 h(97)=9 h(46)=2

55 Double hashing h 2 (K)=1+(k mod(m-1)) -> h i (k)=(h 1 (k)+i*h 2 (k))mod m h(57)=2 -> lo slot 2 è occupato h 1 (57)=2+1*8=10 h(15)=4 -> lo slot 4 è occupato h 1 (15)=4+1*6=10 -> lo slot 10 è occupato h 2 (15)=4+2*6=5 h(46)=2 -> lo slot 2 è occupato h 1 (46)=2+1*7=9 -> lo slot 9 è occupato h 2 (46)=2+2*7=5 -> lo slot 5 è occupato h 3 (46)=2+3*7=1 h(35)=2 h(83)=6 h(57)=2 h(26)=4 h(15)=4 h(63)=8 h(97)=9 h(46)=2

56 Una applicazione: i fingeprints Paragonare strutture a grafo è complesso Paragonare stringhe è più semplice Da qui l idea di trasformare una struttura in una stringa di bits attraverso uso di hash. esempio estrarre i pattern Estrarre tutti i cammini lineari fino ad una certa lunghezza, individuare i punti di diramazione e di fine, individuare i cicli, Usando hashing trovare la posizione in cui mappare un certo pattern bit For example, the molecule OC=CN would generate the following patterns: 0-bond paths: C O N 1-bond paths: OC C=C CN 2-bond paths: OC=C C=CN 3-bond paths: OC=CN

57

58 I parametri da definire la lunghezza del fingerprint definisce la capacità di conservare informazioni ma anche la memoria e il tempo di screening. Una lunghezza elevata diminuisce la probabilità di collisioni. 512 bits funziona bene, 1024 è meglio per la similarity. la lunghezza del pattern massimo Lunghi pattern conservano più informazione ma spesso sono unici. Pattern lunghi 5 o 6 vanno bene per la ricerca di sottostrutture, 7 o 8 vanno bene per similarity.

59 Ricerca di sottostrutture Substructure searching è noto essere un problema nonpolynomial-complete (NP-complete). Il tempo nel caso pessimo per risolvere questi problemi non può essere espresso come un polinomio nel numero di atomi o di legami O(N K )). In caso pessimo è esponenziale O(K kn ). Però le molecole sono grafi sparsi, quindi in pratica abbiamo spesso complessità O(N 2 ) o O(N 3 ). L idea è quella di usare un algoritmo imperfetto che non garantisca la risposta P «not in» M con confidenza al 100%, ma che sappia dire P «in»mcon confidenza inferiore. Questo si ottiene appunto usando i fingerprints.

60 Da tema d esame 2013 Si vuole progettare una tabella di hashing in cui memorizzare numeri primi, usando gli stessi come chiave. La tabella è lunga 2n elementi, si sceglie di utilizzare la funzione h(x) = x mod 2n come funzione di hash. E' una buona scelta? Motivare brevemente la risposta. SOLUZIONE La funzione di hash proposta non è una buona funzione: i numeri primi, fatto salvo 2, sono tutti dispari; quindi i posti di posizione pari verranno utilizzati solo in caso di conflitti e la tabella risulterà fortemente sbilanciata e/o sottooccupata.

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

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

Hash 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

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

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 Capitolo 7 Tabelle hash Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Implementazioni Dizionario Tempo richiesto dall operazione più costosa: -Liste - Alberi di ricerca

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

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

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

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 e Strutture Dati. Hashing

Algoritmi e Strutture Dati. Hashing Algoritmi e Strutture Dati Hashing Alberto Montresor Università di Trento 2016/10/19 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1 Introduzione

Dettagli

Algoritmi e Strutture Dati. Hashing

Algoritmi e Strutture Dati. Hashing Algoritmi e Strutture Dati Hashing Alberto Montresor Università di Trento 2016/10/19 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1 Introduzione

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

Indirizzamento Aperto

Indirizzamento Aperto Indirizzamento Aperto Sommario Metodo di indirizzamento aperto Scansione lineare Scansione quadratica Hashing doppio Metodo di indirizzamento aperto L idea è di memorizzare tutti gli elementi nella tabella

Dettagli

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo

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

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

Heap e code di priorità

Heap e code di priorità Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010

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

Esempio: rappresentare gli insiemi

Esempio: rappresentare gli insiemi Esempio: rappresentare gli insiemi Problema: rappresentare gli insiemi Vedremo che la scelta della rappresentazione per implementarli non è così ovvia come era stato per i numeri razionali In realtà ci

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

Tecniche di compressione senza perdita

Tecniche di compressione senza perdita FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Tecniche di compressione senza perdita 2000 Pier Luca Montessoro (si veda la nota di copyright

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

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

Analisi ammortizzata (Tarjan in 1985)

Analisi ammortizzata (Tarjan in 1985) In questa lezione Analisi della complessità di una sequenza di operazioni di estrazione e inserimento in una tabella memorizzata su un array, usando l analisi ammortizzata. Analisi ammortizzata (Tarjan

Dettagli

Il 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. 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

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

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

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

QUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT)

QUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT) QUICKSORT Basato sul paradigma divide-et-impera (come MERGE-SORT) Divide: stabilisce un valore di q tale da dividere l array A[p.. r] in due sottoarray non vuoti A[p.. q] e A[q+1.. r], dove ogni elemento

Dettagli

La codifica. dell informazione

La codifica. dell informazione 00010010101001110101010100010110101000011100010111 00010010101001110101010100010110101000011100010111 La codifica 00010010101001110101010100010110101000011100010111 dell informazione 00010010101001110101010100010110101000011100010111

Dettagli

Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative.

Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative. Insiemi Specifiche, rappresentazione e confronto tra realizzazioni alternative. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro Definizione

Dettagli

argomenti Hashing Richiamo sul concetto di dizionario Tabelle hash ! Hashing ! Funzioni hash per file ! Insieme di coppie del tipo <elemento, chiave>

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

Dettagli

Aritmetica dei Calcolatori Elettronici

Aritmetica dei Calcolatori Elettronici Aritmetica dei Calcolatori Elettronici Prof. Orazio Mirabella L informazione Analogica Segnale analogico: variabile continua assume un numero infinito di valori entro l intervallo di variazione intervallo

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

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

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

Albero di Riscorsione

Albero di Riscorsione Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Cammini minimi fra tutte le coppie

Cammini minimi fra tutte le coppie Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)

Dettagli

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort Ordinamento Sommario Ordinamento Selection Sort Bubble Sort/ Shaker Sort Shell Sort Cosa e' l'ordinamento Il problema consiste nell elaborare insiemi di dati costituiti da record I record hanno sono costituiti

Dettagli

La codifica. dell informazione

La codifica. dell informazione La codifica dell informazione (continua) Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero

Dettagli

UNIVERSITA DEGLI STUDI DI PERUGIA

UNIVERSITA DEGLI STUDI DI PERUGIA UNIVERSITA DEGLI STUDI DI PERUGIA REGISTRO DELLE LEZIONI E DELLE ALTRE ATTIVITÀ DIDATTICHE Anno accademico 2006-2007 Dott./Prof. Pinotti Maria Cristina Settore scientifico-disciplinare INF01 Facoltà Scienze

Dettagli

Rappresentazione dei Dati

Rappresentazione dei Dati Parte II I computer hanno una memoria finita. Quindi, l insieme dei numeri interi e reali che si possono rappresentare in un computer è necessariamente finito 2 Codifica Binaria Tutti i dati usati dagli

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi 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

Dettagli

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2 INDICI MULTILIVELLO DINAMICI Indici multilivello dinamici (B-alberi e B + -alberi) Gli indici multilivello dinamici (B-alberi e B + -alberi) sono casi speciali di strutture ad albero. Un albero è formato

Dettagli

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Algoritmi 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

Dettagli

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

Dettagli

I Tipi di Dato Astratto

I Tipi di Dato Astratto I Tipi di Dato Astratto Sommario Cosa sono le Strutture Dati Astratte? Le strutture dati Le operazioni Come scegliere fra varie implementazioni? Quale è la questione? Come organizzare (strutturare) i dati

Dettagli

La rappresentazione dei dati

La rappresentazione dei dati La rappresentazione dei dati Base binaria E la base minima che include cifre diverse si devono conoscere le tabelline dello 0 dell 1 in elettronica si realizzano bene dispositivi bistabili There are only

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Somma di numeri binari

Somma di numeri binari Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di

Dettagli

Parte 6 Esercitazione sull accesso ai file

Parte 6 Esercitazione sull accesso ai file Gestione dei dati Parte 6 Esercitazione sull accesso ai file Maurizio Lenzerini, Riccardo Rosati Facoltà di Ingegneria Sapienza Università di Roma Anno Accademico 2012/2013 http://www.dis.uniroma1.it/~rosati/gd/

Dettagli

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

I B+ Alberi. Sommario

I B+ Alberi. Sommario I B+ Alberi R. Basili (Basi di Dati, a.a. 2002-3) Sommario Indici organizzati secondo B + -alberi Motivazioni ed Esempio Definizione Ricerca in un B + -albero Esempio Vantaggi Inserimento/Cancellazione

Dettagli

Cache associativa. Possibili alternative per il trasferimento di un blocco dalla memoria inferiore alla memoria superiore:

Cache associativa. Possibili alternative per il trasferimento di un blocco dalla memoria inferiore alla memoria superiore: Cache associativa Possibili alternative per il trasferimento di un blocco dalla memoria inferiore alla memoria superiore: 1. Indirizzamento diretto (già visto). Ogni blocco della memoria inferiore può

Dettagli

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

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

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo: c m c m-1... c 1 c 0 (le c i sono cifre

Dettagli

Accordo su chiavi. Accordo su una chiave. Diffie-Hellman [1976] Accordo su chiavi. Diffie-Hellman [1976] Diffie-Hellman [1976] ??

Accordo su chiavi. Accordo su una chiave. Diffie-Hellman [1976] Accordo su chiavi. Diffie-Hellman [1976] Diffie-Hellman [1976] ?? Accordo su chiavi Accordo su una chiave Barbara Masucci Dipartimento di Informatica ed Applicazioni Università di Salerno masucci@dia.unisa.it http://www.dia.unisa.it/professori/masucci K K 1 Accordo su

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 4 Implementazioni delle partizioni Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio 2016.

Dettagli

Applicazioni: Correttore ortografico: Hashtable. Funzioni hash: MD5 e SHA.

Applicazioni: 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.

Dettagli

Analisi asintotica della complessità di tempo degli algoritmi

Analisi asintotica della complessità di tempo degli algoritmi Analisi asintotica della complessità di tempo degli algoritmi Due esempi di funzioni di Python: 1. nel primo mettiamo in evidenza l importanza di una buona organizzazione dei dati in memoria, cioè di una

Dettagli

Algoritmi e strutture di dati 2

Algoritmi e strutture di dati 2 Paola Vocca Lezione 4: Programmazione dinamica 1 Caratteristiche Programmazione dinamica: paradigma basato sullo stesso principio utilizzato per il divide et impera o il problema viene decomposto in sotto-problemi

Dettagli

Regole associative Mario Guarracino Laboratorio di Sistemi Informativi Aziendali a.a. 2006/2007

Regole associative Mario Guarracino Laboratorio di Sistemi Informativi Aziendali a.a. 2006/2007 Regole associative Mario Guarracino Laboratorio di Sistemi Informativi Aziendali a.a. 26/27 Introduzione Le regole associative si collocano tra i metodi di apprendimento non supervisionato e sono volte

Dettagli

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario I sistemi di numerazione Il sistema binario Altri sistemi di numerazione Algoritmi di conversione Esercizi 07/03/2012 2 Sistemi

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare

Dettagli

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

3.4 Metodo di Branch and Bound

3.4 Metodo di Branch and Bound 3.4 Metodo di Branch and Bound Consideriamo un generico problema di Ottimizzazione Discreta dove X è la regione ammissibile. (P ) z = max{c(x) : x X} Metodologia generale di enumerazione implicita (Land

Dettagli

Il file È un insieme di informazioni: programmi. Il File System. Il file system

Il file È un insieme di informazioni: programmi. Il File System. Il file system Il File System Il file È un insieme di informazioni: programmi d a t i testi rappresentati come insieme di record logici (bit, byte, linee, record, etc.) Ogni file è individuato da (almeno) un nome simbolico

Dettagli

alberi binari di ricerca (BST)

alberi binari di ricerca (BST) Le tabelle di simboli e gli alberi binari di ricerca (BT) ianpiero abodi e Paolo amurati Dip. utomatica e Informatica Politecnico di Torino Tabelle di simboli Definizione: una tabella di simboli è una

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo: c m c m-1... c 1 c 0 (le c i sono cifre

Dettagli

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità.

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. Linguaggio C Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. 1 Complessità degli Algoritmi Si definisce Complessità di un Algoritmo C(A) la funzione dei parametri rilevanti per A che determina

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Prof. G. M. Farinella gfarinella@dmi.unict.it www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,

Dettagli

Rappresentazioni numeriche

Rappresentazioni numeriche Rappresentazioni numeriche Un numero è dotato di un valore una rappresentazione La rappresentazione di un numero è il sistema che utilizziamo per indicarne il valore. Normalmente è una sequenza (stringa)

Dettagli

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato. Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti

Dettagli

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

Strutture fisiche di accesso

Strutture fisiche di accesso Strutture fisiche di accesso Esercitazioni - Basi di dati (complementi) Autore: Dr. Simone Grega Esercizio 1 Siano date le seguenti informazioni: B=4096 bytes la dimensione di un blocco H=12 bytes la dimensione

Dettagli

Coverage. Visto che il coverage si basa su aree dell ambiente che vengono monitorate non è

Coverage. Visto che il coverage si basa su aree dell ambiente che vengono monitorate non è L. Pallottino, Sistemi Robotici Distribuiti - Versione del 10 Dicembre 2015 393 Coverage Si consideri ora il problema di coordinare una squadra di robot con dei sensori omnidirezionali in modo da garantire

Dettagli

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi Fondamenti di Informatica T-1 modulo 2 Laboratorio 10: preparazione alla prova d esame 1 Esercizio 1 - Gestione degli impegni Gli impegni giornalieri dei dipendenti di un azienda devono essere aggiornati

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Algoritmi e Principi dell Informatica

Algoritmi e Principi dell Informatica Algoritmi e Principi dell Informatica Appello del 20 Febbraio 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2h e 30 Chi deve sostenere solo il modulo di Informatica

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente .. Grafi (non orientati e connessi): minimo albero ricoprente Una presentazione alternativa (con ulteriori dettagli) Problema: calcolo del minimo albero di copertura (M.S.T.) Dato un grafo pesato non orientato

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

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Dettagli

TRIE (albero digitale di ricerca)

TRIE (albero digitale di ricerca) TRIE (albero digitale di ricerca) Struttura dati impiegata per memorizzare un insieme S di n stringhe (il vocabolario V). Tabelle hash le operazioni di dizionario hanno costo O(m) al caso medio per una

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Gestione della memoria

Gestione della memoria Gestione della memoria centrale Gestione della memoria Concetti generali. Swapping. Allocazione contigua di memoria. Paginazione. Segmentazione. Segmentazione con paginazione. Esempio: Pentium Intel Background

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

Permutazioni. 1 Introduzione

Permutazioni. 1 Introduzione Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,

Dettagli

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Array 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

Dettagli

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Dettagli

I.4 Rappresentazione dell informazione

I.4 Rappresentazione dell informazione I.4 Rappresentazione dell informazione Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti Introduzione 1 Introduzione 2 3 L elaboratore Introduzione

Dettagli

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli