alberi binari di ricerca (BST)

Documenti analoghi
Alberi binari di ricerca

Alberi Binari di Ricerca

Alberi di ricerca binari

Alberi binari e alberi binari di ricerca

Esercitazione 6. Alberi binari di ricerca

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI

Alberi binari di ricerca

Heap e code di priorità

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem

Algoritmi e Strutture Dati

ADT Coda con priorità

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

TRIE (albero digitale di ricerca)

Note per la Lezione 4 Ugo Vaccaro

Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.

Per semplicità eliminiamo le ripetizioni nell'albero.

Alberi ed Alberi Binari

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

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

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)

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

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

Esempio: rappresentare gli insiemi

Algoritmi e Strutture Dati

ADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:

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

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

Algoritmi e Strutture Dati. HeapSort

Alberi e alberi binari I Un albero è un caso particolare di grafo

Esercizi Capitolo 6 - Alberi binari di ricerca

Strutture di accesso ai dati: B + -tree

Programmazione Funzionale

Ordinamenti per confronto: albero di decisione

FILE E INDICI Architettura DBMS

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Inserimento di un elemento in coda. quale va collegato quello nuovo. ultimo. *lista 8 3. aux. ultimo. *lista 8 3. aux

Albero di Riscorsione

Questa soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento.

I B+ Alberi. Sommario

Algoritmi e Strutture Dati

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1

Alberi Bilanciati di Ricerca

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1

Definizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

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

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:

alberi binari e ricorsione

Esercizi di Algoritmi e Strutture Dati

lezione 9 min-heap binario Heap e Alberi posizionali generali

Esercizi di preparazione alla prova scritta

Liste, Pile e Code. 1. L ADT Lista. Liste Pile e Code Pag. 1/18

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; }

Tempo e spazio di calcolo (continua)

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

Alberi Binari di Ricerca

Alberi binari. Esercizi su alberi binari

Strutture dati dinamiche in C (II)

Esercizi di Algoritmi e Strutture Dati

Esercizi Capitolo 6 - Alberi binari di ricerca

Laboratorio di Algoritmi e Strutture Dati

Introduzione agli algoritmi Prova di esame del 30/6/2016 Prof.sse E. Fachini - R. Petreschi

Algoritmi e Strutture Dati

Algoritmi di Ricerca. Esempi di programmi Java

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari

Esercitazioni di Algoritmi e Strutture Dati

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

Esercizi per il corso di Algoritmi e Strutture Dati

Fondamenti di Informatica II. Alberi

Costo di esecuzione e complessità. Modello di costo e complessità di un algoritmo

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

In questa lezione Strutture dati elementari: Pila Coda

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Esercizi Capitolo 7 - Hash

Strutture Dinamiche. Fondamenti di Informatica

4.1 Modelli di calcolo analisi asintotica e ricorrenze

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

Si può fare di meglio?

Algoritmi e strutture dati

Le Funzioni e la Ricorsione

Algoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014

Algoritmi e Strutture Dati

Alberto Montresor Università di Trento

T 1 =1. n 6 n. T n =3 T. Esercizio 1 (6 punti)

Problemi, istanze, soluzioni

Complessità algoritmi su strutture dati (riassunto)

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Laboratorio di Informatica

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Ordinamenti: mergesort e quicksort

Alberi. Definizioni principali

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

n deve essere maggiore di 0, altrimenti il metodo restituisce null.

Transcript:

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 struttura dati formata da record con chiave con operazioni di base: inserimento di un nuovo record ricerca di un record con chiave data. Talora è detta dizionario... 2004/2005 Le tabelle di simboli e i BT 2 1

DT tabella di simboli Operazioni: inserimento di un nuovo elemento ricerca di un elemento con data chiave cancellazione di elemento specificato selezione del k-esimo elemento più piccolo ordinamento della tabella secondo la chiave unione di due tabelle... 2004/2005 Le tabelle di simboli e i BT 3 lgoritmo di ricerca = implementazione dell DT tabella di simboli. ecord di tipo Item che includono chiavi di tipo Key con operazioni less e eq. key per recuperare la chiave... 2004/2005 Le tabelle di simboli e i BT 4 2

Interfaccia void Tinit(int) ; int Tcount() ; void Tinsert(Item) ; Item Tsearch(Key) ; void Tdelete(Item) ; Item Tselect(int) ; void Tsort(void (*visit) (Item)) ;.. 2004/2005 Le tabelle di simboli e i BT 5 estione delle chiavi duplicate truttura primaria con record privi di duplicati, composti da chiave e link a record con la stessa chiave, gestione della duplicazione affidata al client truttura con chiavi duplicate, ricerca che restituisce un qualsiasi record contenente la chiave ecord con chiave e identificatore univoco (eliminazione della duplicazione)... 2004/2005 Le tabelle di simboli e i BT 6 3

sempio lienttabellaimboli.c equenza di chiavi in input generata casualmente o letta da standard input controllo se la chiave era già stata vista inserimento solo di chiavi non ancora viste nella tabella dei simboli tipi delle chiavi e operazioni su di esse specificati in Item.h... 2004/2005 Le tabelle di simboli e i BT 7 icerca indicizzata da chiave Tabelle ad accesso diretto: chiave k U = {0, 1,, M-1} tutte le chiavi sono interi distinti che fungono da indici di un array array st[0, 1,, M-1]: se key, essa è in st[key], altrimenti st[key] contiene NULLitem memorizzazione di un insieme K di K chiavi... 2004/2005 Le tabelle di simboli e i BT 8 4

1 2 4 U (universo delle chiavi) 0 7 0 1 2 6 9 3 4 5 3 5 6 8 7 8 M-1 TabellaccessoDiretto. st 2 3 5 8 c K (chiavi usate).. 2004/2005 Le tabelle di simboli e i BT 9 Vantaggi/svantaggi omplessità delle operazioni di inserimento, ricerca e cancellazione: T(n) = O(1) omplessità delle operazioni di inizializzazione, selezione e ordinamento: T(n) = O(M) Occupazione di memoria (n) = O( U ) = O(M) applicabile per M piccolo spreco di memoria per K << M... 2004/2005 Le tabelle di simboli e i BT 10 5

icerca sequenziale truttura dati: array lista concatenata Proprietà della struttura dati: ordinata non ordinata... 2004/2005 Le tabelle di simboli e i BT 11 TabellarrayOrdinato.c rray ordinato: inserimento con spostamento di una posizione degli elementi più grandi ricerca mediante scansione sequenziale, terminazione: chiave trovata o chiave più grande. rray non ordinato: inserimento in fondo ricerca mediante scansione sequenziale completa... 2004/2005 Le tabelle di simboli e i BT 12 6

Lista ordinata: inserimento in ordine TabellaListaNonOrdina ta.c ricerca mediante scansione sequenziale, terminazione: chiave trovata o chiave più grande. Lista non ordinata: inserimento in testa ricerca mediante scansione sequenziale completa... 2004/2005 Le tabelle di simboli e i BT 13 nalisi di complessità caso peggiore inserim. ricerca array indicizz. 1 1 array ordin. N N lista ordin. N N lista non ordin. 1 N.. 2004/2005 Le tabelle di simboli e i BT 14 7

earch hit: ricerca con successo earch miss: ricerca senza successo. caso medio inserim. search hit search miss array indicizz. 1 1 1 array ordin. N/2 N/2 N/2 lista ordin. N/2 N/2 N/2 lista non ordin. 1 N/2 N.. 2004/2005 Le tabelle di simboli e i BT 15 icerca binaria icbin.c osto quadratico per mantenere ordinato l array in inserimento Vantaggioso in situazioni statiche : array ordinato una sola volta all inizio ricerche, non inserzioni/cancellazioni fficienza legata alla capacità di accesso immediato alla cella dell array, svantaggioso usare liste concatenate... 2004/2005 Le tabelle di simboli e i BT 16 8

nalisi di complessità caso peggiore caso medio inserim. ricerca inserim. search hit search miss ric. bin. N lgn N/2 lgn lgn.. 2004/2005 Le tabelle di simboli e i BT 17 lberi binari di ricerca (BT) DT albero binario con proprietà: nodo x vale che: nodo y Left(x), key[y] key[x] nodo y ight(x), key[y] key[x] x Left(x) ight(x).. 2004/2005 Le tabelle di simboli e i BT 18 9

sempi 2 5 3 3 7 7 2 4 8 5 8 4.. 2004/2005 Le tabelle di simboli e i BT 19 Operazioni search minimum maximum predecessor successor insert sort select delete. TabellaBT.c.. 2004/2005 Le tabelle di simboli e i BT 20 10

earch icerca ricorsiva di un nodo con chiave v: percorrimento dell albero dalla radice terminazione: v uguale alla chiave della radice dell albero (search hit) oppure giunti ad un albero vuoto (search miss) ricorsione: dal nodo x su sottoalbero sinistro se v < della chiave in x su sottoalbero sinistro se v della chiave in x... 2004/2005 Le tabelle di simboli e i BT 21 sempio 15 k = 13 13 15 13 < 15 6 18 3 7 17 20 2 4 13 9.. 2004/2005 Le tabelle di simboli e i BT 22 11

15 k = 13 13 6 13 > 6 6 18 3 7 17 20 2 4 13 9.. 2004/2005 Le tabelle di simboli e i BT 23 15 k = 13 13 7 13 > 7 6 18 3 7 17 20 2 4 13 9.. 2004/2005 Le tabelle di simboli e i BT 24 12

15 k = 13 13 = 13 6 18 3 7 17 20 2 4 13 9 trovato!.. 2004/2005 Le tabelle di simboli e i BT 25 Min e max Min: seguire il puntatore al sottoalbero sinistro finchè esiste Max: seguire il puntatore al sottoalbero destro finchè esiste.. 2004/2005 Le tabelle di simboli e i BT 26 13

sempio 15 min = 2 max = 20 6 18 3 7 17 20 2 4 13 9.. 2004/2005 Le tabelle di simboli e i BT 27 uccessor uccessore di un nodo x:nodo con la più piccola chiave k > della chiave in x. Due casi: ight(x): succ(x) = min(ight(x)) ight(x): succ(x) = primo antenato di x il cui figlio sinistro è anche un antenato di x. p[x] x x p[x].. 2004/2005 Le tabelle di simboli e i BT 28 14

sempio 15 x 6 18 3 7 17 20 succ(x) 2 4 13 9.. 2004/2005 Le tabelle di simboli e i BT 29 15 succ(x) 6 18 3 7 17 20 2 4 13 x 9.. 2004/2005 Le tabelle di simboli e i BT 30 15

Predecessor Predecessore di un nodo x: nodo con la più grande chiave k < della chiave in x. Due casi: Left(x): pred(x) = max(left(x)) Left(x): pred(x) = primo antenato di x il cui figlio destro è anche un antenato di x... 2004/2005 Le tabelle di simboli e i BT 31 sempio 15 x 6 18 3 7 17 20 2 4 13 pred(x) 9.. 2004/2005 Le tabelle di simboli e i BT 32 16

15 6 18 pred(x) 3 7 17 20 2 4 13 9 x.. 2004/2005 Le tabelle di simboli e i BT 33 Insert InsertIter.c Inserire in un albero binario di ricerca un nodo z con chiave v mantenimento della proprietà: se il BT è vuoto, creazione del nuovo albero inserimento ricorsivo nel sottoalbero sinistro o destro a seconda del confronto inserimento iterativo: prima si ricerca la posizione, poi si appende il nuovo nodo... 2004/2005 Le tabelle di simboli e i BT 34 17

sempio z 13 T 12 insert(t,13) 5 18 2 9 15 20 17.. 2004/2005 Le tabelle di simboli e i BT 35 z 13 T 12 insert(t,13) 5 18 2 9 15 20 17.. 2004/2005 Le tabelle di simboli e i BT 36 18

T 12 5 18 2 9 15 20 13 17.. 2004/2005 Le tabelle di simboli e i BT 37 ort ort.c ttraversamento: elenco dei nodi secondo una strategia: Pre-ordine: x, Left(x), ight(x) In-ordine: Left(x), x, ight(x) Post-ordine: Left(x), ight(x), x omplessità: T(n) = Θ(n). ttraversamento in-ordine: ordinamento crescente delle chiavi... 2004/2005 Le tabelle di simboli e i BT 38 19

sempio 15 6 18 3 7 17 20 2 4 13 9.. 2004/2005 Le tabelle di simboli e i BT 39 Visita in pre-ordine 15 1 15 6 2 6 9 18 3 3 6 7 17 10 20 11 4 2 5 4 7 13 8 9 3 2 4 7 13 9 18 17.. 2004/2005 Le tabelle di simboli e i BT 40 20 20

Visita in-ordine 2 8 15 3 4 6 10 18 2 3 5 7 17 9 20 11 1 2 3 4 7 13 6 9.. 2004/2005 Le tabelle di simboli e i BT 41 4 6 7 9 13 15 17 18 20 Visita in post-ordine 11 15 7 6 10 18 3 3 6 7 17 8 20 9 1 2 2 4 5 13 4 9 2 4 3 9 13 7 6 17 20 18.. 2004/2005 Le tabelle di simboli e i BT 42 15 21

omplessità Le operazioni hanno complessità T(n) = O(h): albero con n nodi completamente bilanciato altezza h = log 2 n albero con n nodi completamente sbilanciato ha altezza h = n O(log 2 n) T(n) O(n).. 2004/2005 Le tabelle di simboli e i BT 43 caso peggiore caso medio inserim. ricerca inserim. search hit search miss BT N N lgn lgn lgn.. 2004/2005 Le tabelle di simboli e i BT 44 22

Inserimento alla radice Inserimento dalle foglie a scelta e non obbligatorio Nodi più recenti nella parte alta del BT Operazioni ausiliarie: rotazione a D di radice e suo figlio rotazione a di radice e suo figlio D. Inserimento ricorsivo alla radice: inserimento nel sottoalbero appropriato rotazione per farlo diventare radice dell albero principale... 2004/2005 Le tabelle di simboli e i BT 45 otazione a destra di BT x = h->l x y h γ α x x->r = h y α β x->r β γ h->l = x->r link rot(link h) { link x = h->l; h->l = x->r; x->r = h; return x; }.. 2004/2005 Le tabelle di simboli e i BT 46 23

otazione a sinistra di BT h x = h->r x x->l = h α x γ β x->l γ α β h->r = x->l link rotl(link h) { link x = h->r; h->r = x->l; x->l = h; return x; }.. 2004/2005 Le tabelle di simboli e i BT 47 sempio otazione a sinistra attorno a 11 7 4 11 3 6 9 18 2 14 19 2 4 3 6 9 7 12 17 11 14 12 17.. 2004/2005 Le tabelle di simboli e i BT 48 18 20 19 22 20 22 24

sempio inserzione di inserzione di alla radice del sottoalbero opportuno.. 2004/2005 Le tabelle di simboli e i BT 49 rotazione a D.. 2004/2005 Le tabelle di simboli e i BT 50 25

26.. 2004/2005 Le tabelle di simboli e i BT 51 rotazione a D.. 2004/2005 Le tabelle di simboli e i BT 52 rotazione a

27.. 2004/2005 Le tabelle di simboli e i BT 53 rotazione a D.. 2004/2005 Le tabelle di simboli e i BT 54 rotazione a prog. 12.12.c

elect elezione della k-esima chiave più piccola (k=0 chiave minima): t è il numero di nodi del sottoalbero sinistro: t = k: ritorno la radice del sottoalbero t > k: ricorsione nel sottoalbero sinistro alla ricerca della k-esima chiave più piccola t < k: ricorsione nel sottoalbero destro alla ricerca della (k-t-1)-esima chiave più piccola... 2004/2005 Le tabelle di simboli e i BT 55 sempio 15 11 6 7 18 3 k = 4 quinta più piccola chiave t=7 7>4 scendo a 3 3 7 3 17 1 20 1 2 1 4 1 13 2 9 1.. 2004/2005 Le tabelle di simboli e i BT 56 28

15 11 6 7 18 3 k = 4 t=3 3<4 scendo a D cerco k=4-3-1=0 3 3 7 3 17 1 20 1 2 1 4 1 13 2 9 1.. 2004/2005 Le tabelle di simboli e i BT 57 15 11 k = 0 t=0 return 7 6 7 18 3 3 3 7 3 17 1 20 1 2 1 4 1 13 2 9 1.. 2004/2005 Le tabelle di simboli e i BT 58 29

Partition progr. 12.14.c iorganizza l albero avendo la k-esima chiave più piccola nella radice: poni il nodo come radice di un sottoalbero: t > k: ricorsione nel sottoalbero sinistro, partizionamento rispetto alla k-esima chiave più piccola t < k: ricorsione nel sottoalbero destro, partizionamento rispetto alla (k-t-1)-esima chiave più piccola esegui rotazione per farlo diventare radice dell albero... 2004/2005 Le tabelle di simboli e i BT 59 sempio Partizionamento rispetto alla 5a chiave più piccola (M, k=4) M T.. 2004/2005 Le tabelle di simboli e i BT 60 30

31.. 2004/2005 Le tabelle di simboli e i BT 61 M T rotazione a M T.. 2004/2005 Le tabelle di simboli e i BT 62 rotazione a D M T M T

32.. 2004/2005 Le tabelle di simboli e i BT 63 rotazione a L M T M T.. 2004/2005 Le tabelle di simboli e i BT 64 rotazione a D M T M T

M M T T rotazione a.. 2004/2005 Le tabelle di simboli e i BT 65 Delete Per cancellare da un albero binario di ricerca un nodo con data chiave v bisogna mantenere: la proprietà dei BT la struttura ad albero binario Passi: controllare se il nodo da cancellare è in uno dei sottoalberi. e sì, cancellazione ricorsiva nel sottoalbero se è la radice, eliminarlo e ricombinare i 2 sottoalberi. La nuova radice è il succ o il pred del nodo cancellato... 2004/2005 Le tabelle di simboli e i BT 66 33

ancellazione di una radice L N I M P.. 2004/2005 Le tabelle di simboli e i BT 67 N I M P succ(l).. 2004/2005 Le tabelle di simboli e i BT 68 34

partition rispetto a M M I N.. 2004/2005 Le tabelle di simboli e i BT 69 P ricostruzione dell albero con radice M M N I P.. 2004/2005 Le tabelle di simboli e i BT 70 35

36.. 2004/2005 Le tabelle di simboli e i BT 71 sempio progr 12.15.c cancellazione in sequenza di L,, I N L I N delete L.. 2004/2005 Le tabelle di simboli e i BT 72 I N delete N I

37.. 2004/2005 Le tabelle di simboli e i BT 73 delete N I N I.. 2004/2005 Le tabelle di simboli e i BT 74 N I N I