INFORMATICA 3 Prof.ssa Sara Comai

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

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

Massimo Benerecetti Tabelle Hash

T 1 =1. n 4 n log n. T n =3 T. Esercizio 1 (6 punti) A.A Esame di Algoritmi e strutture dati 18 luglio 2008

Costrutti iterativi. Utilizzo dei costrutti iterativi

Algoritmi e Strutture Dati

Introduzione agli Algoritmi ed alle Strutture Dati Anno Accademico 2015/2016 Appello 23/6/2016

Algoritmi e strutture dati

Informatica 3. Informatica 3. LEZIONE 14: Alberi binari: introduzione. Lezione 14 - Modulo 1. Definizioni. Introduzione. Definizioni e proprietà

COGNOME E NOME (IN STAMPATELLO) MATRICOLA

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

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

Algoritmi di Ricerca. Esempi di programmi Java

Esercizi Capitolo 7 - Hash

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Massimo Benerecetti Tabelle Hash: gestione delle collisioni

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

Lezione 12 Tabelle Hash

Memorizzazione di una relazione

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

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Esercizio 1 (15 punti)

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1

Esercitazioni di Elementi di Informatica

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 13/09/2013/ Foglio delle domande/versione 1

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

TABELLE AD INDIRIZZAMENTO DIRETTO

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi e Strutture Dati

Formalismi per la descrizione di algoritmi

Esercizi. La funzione swapint() primo tentativo

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

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

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

Esercizio. Scrivere una classe ListMap<K, V> che implementa la mappa con una lista. Strutture Dati

Hash Table. Hash Table

Organigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

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

TRIE (albero digitale di ricerca)

03.x1. esercizi Sui cicli. 03-X1_Esercizi_[02] Versione del: giovedì 14 novembre Andrea Zoccheddu CORSO INFORMATICA ITI ANGIOY SASSARI

heap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata

In questa lezione Strutture dati elementari: Pila Coda

Fondamenti di Informatica

Complessità algoritmi su strutture dati (riassunto)

Esercizio 1: calcolo insieme intersezione

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Ω (grande omega) Esempio 10 COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Corso di Informatica 1 Esercitazione n. 4

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

1 Esercizio - caso particolare di ottimalità

Esercitazione 7. Procedure e Funzioni

Algoritmi di ordinamento: Array e ricorsione

Fondamenti di Informatica

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Algoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono

Strutture di accesso ai dati: B + -tree

4.1 Modelli di calcolo analisi asintotica e ricorrenze

Heap e code di priorità

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:

Dizionari Liste invertite e Trie

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

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

Alberi Binario in Java

Dizionari Specifiche, rappresentazione e confronto tra realizzazioni alternative.

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

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

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Algoritmi di ordinamento e ricerca. Classe SelSort.java

Algoritmi di Ricerca. Esempi di programmi Java

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

Indirizzamento Aperto

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

3 Costrutti while, for e switch

Algoritmi di ordinamento: Array e ricorsione

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

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006

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

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

UD 3.5a: Searching (parte 1) ALGORITMO DI RICERCA SEQUENZIALE. Dispense, cap

Informatica 3 secondo recupero 13 Settembre 2002

Lezione 9 Alberi binari di ricerca

Laboratorio di Matematica e Informatica 1

Strutture dati dinamiche in C (III)

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Tabelle hash. Damiano Macedonio Università Ca' Foscari di Venezia.

Transcript:

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: 3, 83, 7, 26, 1, 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 (h i (k)=(h(k)+i 2 )modm) double hashing con h 2 (K)=1+(kmod(m-1)) SOLUZIONE Calcolo di h(k) h(3)=3mod11=2 h(83)=83mod11=6 h(7)=7mod11=2 h(26)=26mod11=4 h(1)=1mod11=4 h(63)=63mod11=8 h(97)=97mod11=9 h(46)=46mod11=2

Separate chaining 0 1 2 3 4 6 7 8 9 10 3 7 46 26 1 83 63 97 h(3)=2 h(83)=6 h(7)=2 h(26)=4 h(1)=4 h(63)=8 h(97)=9 h(46)=2 Linear probing 0 1 2 3 4 6 7 8 9 10 3 7 26 1 83 46 63 97 h(7)=2 -> lo slot 2 è occupato h 1 (7)=3 h(1)=4 -> lo slot 4 è occupato h 1 (1)= 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)= -> lo slot è occupato h 4 (46)=6 -> lo slot 6 è occupato h (46)=7 Quadratic probing h(3)=2 h(83)=6 h(7)=2 h(26)=4 h(1)=4 h(63)=8 h(97)=9 h(46)=2

0 1 2 3 4 6 7 8 9 10 46 3 7 26 1 83 63 97 h(7)=2 -> lo slot 2 è occupato h 1 (7)=3 h(1)=4 -> lo slot 4 è occupato h 1 (1)= 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(3)=2 h(83)=6 h(7)=2 h(26)=4 h(1)=4 h(63)=8 h(97)=9 h(46)=2 Double hashing 0 1 2 3 4 6 7 8 9 10 46 3 26 1 83 63 97 7 h(7)=2 -> lo slot 2 è occupato h 1 (7)=2+1*8=10 h(1)=4 -> lo slot 4 è occupato h 1 (1)=4+1*6=10 -> lo slot 10 è occupato h 2 (1)=4+2*6= h(46)=2 -> lo slot 2 è occupato h 1 (46)=2+1*7=9 -> lo slot 9 è occupato h 2 (46)=2+2*7= -> lo slot è occupato h 3 (46)=2+3*7=1 h(3)=2 h(83)=6 h(7)=2 h(26)=4 h(1)=4 h(63)=8 h(97)=9 h(46)=2 2. Hashing Data una tabella hash di lunghezza m=13, si supponga di dover inserire (in ordine) le chiavi: 3, 23, 7, 9, 12, 24,, 4, 8, 17 con la funzione di hash h(k) = k mod m. Si illustrino i risultati dell inserimento usando: separate chaining linear probing double hashing con h 2 (K)=1+(kmod(m-1))

SOLUZIONE Calcolo di h(k) h(3)=3mod13=3 h(23)=23mod13=10 h(7)=7mod13=7 h(9)=9mod13=9 h(12)=12mod13=12 h(24)=24mod13=11 h()=mod13= h(4)=4mod13=4 h(8)=8mod13=8 h(17)=17mod13=4 Separate chaining Linear probing h(3)=3 h(23)=10 h(7)=7 h(9)=9 h(12)=12 h(24)=11 h()= h(4)=4 h(8)=8 h(17)=4 h(3)=3 h(23)=10 h(7)=7 h(9)=9 h(12)=12 h(24)=11 h()= h(4)=4 h(8)=8 h(17)=4 0 1 2 3 4 6 7 8 9 10 11 12 3 23 9 7 12 11 4 17 8 0 1 2 3 4 6 7 8 9 10 11 12 3 23 9 7 12 11 4 17 8

0 1 2 3 4 6 7 8 9 10 11 12 3 4 17 7 8 9 23 24 12 h(17)=4 -> lo slot 4 è occupato h 1 (17)= -> lo slot è occupato h 2 (17)=6 h(3)=3 h(23)=10 h(7)=7 h(9)=9 h(12)=12 h(24)=11 h()= h(4)=4 h(8)=8 h(17)=4 Double hashing 0 1 2 3 4 6 7 8 9 10 11 12 3 17 4 7 8 9 23 24 12 h(17)=4 -> lo slot 4 è occupato h 1 (17)=4+1*6=10 -> lo slot 10 è occupato h 2 (17)=4+2*6=3 h(3)=3 h(23)=10 h(7)=7 h(9)=9 h(12)=12 h(24)=11 h()= h(4)=4 h(8)=8 h(17)=4 3. Hashing Data una tabella hash di lunghezza m=12, si supponga di dover inserire (in ordine) le chiavi: 7, 24, 32, 36, 43, 19, 21, 90, 102 con la funzione di hash f(k) = k mod m. Si illustrino i risultati dell inserimento usando - linear probing - quadratic probing. SOLUZIONE Linear Probing 7mod12=7

24mod12=0 32mod12=8 36mod12=0 collisione!!! ((36mod12)+1)mod12=1 43mod12=7 collisione!!! ((43mod12)+1)mod12=8 collisione!!! ((43mod12)+2)mod12=9 19mod12=7 collisione!!! ((19mod12)+1)mod12=8 collisione!!! ((19mod12)+2)mod12=9 collisione!!! ((19mod12)+3)mod12=10 21mod12=9 collisione!!! ((21mod12)+1)mod12=10 collisione!!! ((21mod12)+2)mod12=11 90mod12=6 102mod12=6 collisione!!! (102mod12)+1)mod12=7 collisione!!! (102mod12)+2)mod12=8 collisione!!! (102mod12)+3)mod12=9collisione!!! (102mod12)+4)mod12=10 collisione!!! (102mod12)+)mod12=11 collisione!!! (102mod12)+6)mod12=0 collisione!!! (102mod12)+7)mod12=1 collisone!!! (102mod12)+8)mod12=2 24 36 102 90 7 32 43 19 21 Quadratic Probing 7mod12=7 24mod12=0 32mod12=8 36mod12=0 collisione!!! ((36mod12)+1)mod12=1 43mod12=7 collisione!!! ((43mod12)+1)mod12=8 collisione!!! ((43mod12)+4)mod12=11 19mod12=7 collisione!!! ((19mod12)+1)mod12=8 collisione!!! ((19mod12)+4)mod12=11 collisione!!! ((19mod12)+9)mod12=4 21mod12=9 90mod12=6

102mod12=6 collisione!!! (102mod12)+1)mod12=7 collisione!!! (102mod12)+4)mod12=10 24 36 19 90 7 32 21 102 43 4. Algoritmi Nel gioco del SuGiu un giocatore deve indovinare un numero, compreso in un intervallo prefissato, attraverso una serie di tentativi. A ogni tentativo il giocatore indica un valore e un interlocutore che conosce il numero da indovinare dà una delle seguenti tre risposte: SI se il numero è stato indovinato, SU se il numero da indovinare dal giocatore è superiore al numero indicato, GIU se è inferiore. Tratteggiare l implementazione di un programma che, ricevendo come parametri in ingresso gli estremi inferiore e superiore dell intervallo di possibili valori per il numero da indovinare, riesca a trovarlo con un numero di tentativi minimo (si assuma che il programma possa fare la parte del giocatore, scrivendo sull output standard i suoi tentativi e leggendo le indicazioni dell interlocutore dall input standard). SOLUZIONE La strategia migliore è di simulare una ricerca binaria, mantenendo un intervallo di valori all interno del quale si assume che si trovi il numero da indovinare e utilizzando le indicazioni dell interlocutore per dimezzare la dimensione di tale intervallo a ogni tentativo. La complessità asintotica di tale programma è logaritmica rispetto all ampiezza dell intervallo di valori ammissibili. Bozza di programma: static void sugiu (int inf, int sup) { int med; String risposta; } do { med = (inf + sup) / 2; scrivi med; leggi risposta; if (risposta = GIU) sup = med 1; else if (risposta = SU) inf = med + 1; } while (risposta!= SI);

. B+-tree Si consideri il seguente albero: 19 11 29 2 3 7 11 17 19 23 29 31 a) Di che tipo e ordine è? b) Si eseguano in sequenza le seguenti operazioni: Inserisci 9, Inserisci 10, Inserisci 8, Cancella 23, Cancella 19. SOLUZIONE a) B+, m=4 b) Inserisci 9: 19 11 29 2 3 7 9 11 17 19 23 29 31 Inserisci 10: 19 9 11 29 2 3 7 9 10 11 17 19 23 29 31 6. B+-tree Dato il seguente albero:

19 11 30 2 4 6 8 11 17 19 22 30 36 a) Di che tipo e ordine è? b) Si indichi una sequenza di inserimenti che, partendo dall albero vuoto, porta all albero indicato, mostrando gli alberi intermedi ottenuti a seguito delle operazioni di split. SOLUZIONE a) B+ di ordine 4 b) ins 2, ins 4, ins : 2 4 ins 6: 2 4 6 ins 11, ins 17: 11 2 4 6 11 17 ins 8, ins 19, ins 22: 11 19 2 4 6 8 11 17 19 22 ins 30, ins 36:

19 11 30 2 4 6 8 11 17 19 22 30 36 N.B. la soluzione non è univoca: ad es. si può inserire 8 in una qualsiasi fase successiva a quella mostrata (ma non precedente), oppure permutare alcuni blocchi di inserimenti (come 2 e 4).