Alberi Binari di Ricerca (ABR)
|
|
- Michela Volpi
- 7 anni fa
- Visualizzazioni
Transcript
1 Alberi Binari di Ricerca (ABR) (Binary Search Tree BST) Albero binario di ricerca E n albero binario che soddisfa le segenti proprietà: Ogni elemento ha na chiae (s ci è definito n ordinamento); de elementi non possono aere la stessa chiae (cioè le chiai sono niche); Le chiai in n sottoalbero sinistro non oto deono essere più piccole della chiae nella radice dell albero Le chiai in n sottoalbero destro non oto deono essere più grandi della chiae nella radice dell albero Anche i sottoalberi sinistro e destro sono alberi di ricerca binari 1
2 Albero binario di ricerca In altri termini, definito n ordinamento sll informazione dei nodi (es: interi, stringhe, ma anche strttre complesse con n campo chiae), n albero binario è n albero binario di ricerca se: Per ogni nodo N dell albero: L informazione associata ad ogni nodo nel sottoalbero sinistro di N è strettamente minore dell informazione associata ad N; L informazione associata ad ogni nodo nel sottoalbero destro di N è strettamente maggiore dell informazione associata ad N; Albero binario di ricerca: esempio ok errato!
3 Rappresentazione ABR in C Esattamente identica agli Alberi Binari già esaminati (con l nico incolo della presenza nel campo info di n alore che fnga da chiae) typedef int TipoInfoAlbero; /* etichetta di tipo intero */ strct nodoalbero { TipoInfoAlbero info; strct nodoalbero *destro, *sinistro; typedef strct nodoalbero NodoAlbero; typedef NodoAlbero *TipoAlbero; Perché si sano gli ABR? La ricerca di n elemento in n albero binario di ricerca è na operazione molto efficiente (se l albero è bilanciato) 3
4 Alberi bilanciati Un albero (binario) si dice bilanciato se, detta P la profondità dell albero, ttte le foglie stanno a liello P o P-1, e ttti i nodi interni hanno de figli, tranne al più n nodo al liello P-1 che ne ha no solo Bilanciato Non bilanciato 91 Ricerca in n ABR algoritmo cerca elem nell albero binario di ricerca Alb if Alb è oto then elem non è presente in Alb else if elem coincide con l etichetta della radice di Alb then elem `e stato troato else if elem precede l etichetta della radice di Alb then cerca elem nel sottoalbero sinistro di Alb else cerca elem nel sottoalbero destro di Alb 4
5 Ricerca in n ABR (ersione ricorsia) /* Effetta la ricerca di elem nell'albero binario di ricerca a. Il alore di ritorno e` il sottoalbero di a la ci radice e` pari ad elem, se elem e` presente in a, NULL altrimenti.*/ TipoAlbero RicercaAlbero(TipoAlbero a, TipoInfoAlbero elem) { TipoAlbero posiz; if (a == NULL) posiz = NULL; else if (elem == a->info) /* l'elemento e` stato troato */ posiz = a; else if (elem < a->info) /* cerca nel sottoalbero sinistro */ posiz = RicercaAlbero(a->sinistro, elem); else /* cerca nel sottoalbero destro */ posiz = RicercaAlbero(a->destro, elem); retrn posiz; Ricerca in n ABR (ersione iteratia) TipoAlbero RicercaAlbero(TipoAlbero a, TipoInfoAlbero elem) { while (a!= nll) { if (elem == a->info) /* l'elemento e` stato troato */ retrn a; else if (elem < a->info) /* cerca nel sottoalbero sinistro */ a = a->sinistro; else /* cerca nel sottoalbero destro */ a= a->destro; retrn NULL; in qesto caso, la ersione iteratia non richiede l'so di na pila: perché? 5
6 Costo della ricerca in n ABR ABR di n nodi caso peggiore Albero che degenera in lista O(n) caso medio dipende dalla distribzione O(lg n) per alberi bilanciati caso migliore O(1) (poco interessante) Costo della ricerca in n ABR nel caso di distribzione niforme delle chiai il alore atteso dell'altezza dell'albero èo(lgn) N.B. L'altezza di n albero binario di n nodi aria in { lg 2 n + 1,, n n BST con chiai niformemente distribite ha n costo atteso di ricerca O(lg n) 6
7 Analisi del caso medio IPL (internal path length): somma lngh. percorsi radice-nodo, per ttti i nodi lngh. media percorso radice-nodo: IPL/(#nodi) Analisi del caso medio spp. chiai 1,,n presenti in n BST di n nodi (senza perdita di generalità) P n (i): lngh. percorso medio in BST di n nodi aente chiae i in radice (IPL/#nodi) P n : percorso medio in BST di n nodi (IPL/#nodi) se k(radice) = i allora sottoalbero sx ha i 1 chiai sottoalbero dx ha n i chiai (Pi 1 + 1)( i 1) + (Pn i + 1)( n i ) P n ( i ) = n n P ( i ) i 1 n Pn = = =... = O(lgn) n 7
8 Visita in n ABR Di ttte le isite analizzate per n albero binario, nel caso di n ABR na rieste na particolare importanza: La isita in ordine simmetrico (inorder) prodce n elenco ordinato delle chiai! , 20, 22,, 57, 82, 88, 91, Ricerca predecessore in n ABR (1) Problema: data na chiae a, troare la chiae b = pred(a), oero la più grande fra le chiai < a operazione sfrttata nell'algoritmo di eliminazione doe si troa b rispetto a? se esiste sottoalbero sinistro si troa in tale sottoalbero se non esiste sottoalbero sinistro si troa sl percorso radice nodo contenente a 8
9 Ricerca predecessore in n ABR (2) Esiste n sottoalbero sinistro di. cerchiamo pred(k()) nel sottoalbero di radice non pò essere nel sottoalbero del figlio destro (chiai > k()) il max nel sottoalbero del figlio sinistro è n candidato si tratta del "nodo più a destra", indiidabile scendendo sempre a destra in tale sottoalbero, fino a troare n nodo senza figlio destro x w non qi Ricerca predecessore in n ABR (3) Non esiste n sottoalbero sinistro di cerchiamo pred(k()) sl cammino erso la radice non pò essere fori dal percorso radice (per le proprietà del BST) E il primo nodo con chiae minore di che si incontra sl cammino erso la radice 9
10 Ricerca predecessore in n ABR (4) TipoAlbero Predecessore(TipoAlbero a, TipoInfoAlbero elem) { TipoAlbero pred=null; while (a!=null) if (elem <= a->info) a = a->sinistro; else { pred = a; a = a->destro; retrn pred; Ricerca predecessore in n ABR (5) costo ricerca predecessore proporzionale all'altezza dell'albero nel caso peggiore O(n) la ricerca del sccessore si realizza in modo analogo e simmetrico. costo O(n) 10
11 Inserimento in n ABR Ogni noo nodo iene inserito come foglia fase 1: cerca il nodo genitore fase 2: inserisci come figlio di Inserimento in n ABR la fase 1 termina qando si ragginge n nodo del BST prio del figlio in ci arebbe ato senso continare la ricerca non necessariamente na foglia è il nodo inserito che diiene foglia la fase 2 si limita a collegare na noa foglia
12 Inserimento in n ABR (1/2) oid InserisciNodoAlbero(TipoAlbero *a, TipoInfoAlbero elem) { TipoAlbero pax, pre; pax = *a; pre = NULL; while (pax!= NULL) { // find a place for insert new node; pre = pax; if (pax->info == elem) retrn; else if (pax->info < elem) pax = pax->destro; else pax = pax->sinistro; /* pre pnta all'ltimo nodo incontrato drante la ricerca */ contina Inserimento in n ABR (2/2) contina pax = (TipoAlbero)malloc(sizeof(TipoNodoAlbero)); pax->info = elem; pax->sinistro = NULL; pax->destro = NULL; if (*a == NULL) /* se l'albero è oto inserisco l'elemento come radice */ *a = pax; else if (pre->info < elem) pre->destro = pax; else pre->sinistro = pax; 12
13 Costo dell inserimento in n ABR Ogni inserimento introdce na noa foglia il costo è (proporzionale a) la lnghezza del ramo radice-foglia interessato all'operazione nel caso peggiore: O(n) Costo dell inserimento in n ABR caso peggiore costo fase 1: O(n ) costo fase 2: O(1) costo totale: O(n ) caso medio (distrib. nif.) costo fase 1: O(lg n ) costo fase 2: O(1) costo totale: O(lg n )
14 Cancellazione da n ABR (1) Si possono presentare tre casi: 1. Il nodo da eliminare è na foglia 2. Il nodo da eliminare ha n solo figlio 3. Il nodo da eliminare ha de figli (caso più complesso) Cancellazione da n ABR (2) 1. cancellazione di na foglia indiidare nodo genitore e metterne a NULL il campo opportno (pntatore sinistro o destro); se foglia = radice (nico nodo) mettere a NULL il riferimento alla radice indiidare genitore significa effettare na ricerca (come nella fase 1 dell'inserimento) n approccio alternatio è basato slla tramatra dell'albero (i nodi contengono altri riferimenti, ad es., al genitore) 14
15 Cancellazione da n ABR (3) cancellazione di Cancellazione da n ABR (4) 2. cancellazione di n nodo con n solo figlio indiidare genitore w di ; se è radice diiene la noa radice se esiste w, sostitire al collegamento (w,) il collegamento (w,) w w w w 15
16 Cancellazione da n ABR (5) cancellazione di Cancellazione da n ABR (6) 3. cancellazione di n nodo con de figli (ci si ricondce ad no dei casi precedenti) indiidare predecessore (o sccessore) di non pò aere de figli, altrimenti non sarebbe predecessore (sccessore) copiare la chiae di al posto di qella di cancellare nodo è foglia oppre ha n solo figlio: caso già trattato 16
17 copia chiae Cancellazione da n ABR (7) w w w cancella w Cancellazione da n ABR (implementazione) oid CancellaNodoAlbero(TipoAlbero *a, TipoInfoAlbero elem) { TipoAlbero p = *a; TipoAlbero parent = NULL, pred; TipoInfoAlbero infotmp; while(p!= NULL){ if(elem > p->info) { parent = p; p = p->destro; else if(elem < p->info) { parent = p; p = p->sinistro; else break; if(p == NULL) retrn; // elem not in tree 17
18 Cancellazione da n ABR (implementazione) // 1st case: p is leaf if(p->sinistro == NULL && p->destro == NULL) if(parent == NULL) { // p is root, too free(p); *a = NULL; else if(parent->destro == p) { // p is rightchild free(p); parent->destro = NULL; else { // p is leftchild free(p); parent->sinistro = NULL; Cancellazione da n ABR (implementazione) // 2nd case: p has one child else if(p->sinistro == NULL) // p has only a rightchild if(parent == NULL) // p is root, too *a = p->destro; else if(parent->destro == p) // p is rightchild { parent->destro = p->destro; free(p); else // p is leftchild { parent->sinistro = p->destro; free(p); else if(p->destro == NULL) // p has only a leftchild if(parent == NULL) // p is root, too *a = p->sinistro; else if(parent->destro == p) // p is rightchild { parent->destro = p->sinistro; free(p); else // p is leftchild { parent->sinistro = p->sinistro; free(p); 18
19 Cancellazione da n ABR (implementazione) // 3rd case: p has 2 children (then it has a predecessor!) else { pred = Predecessore(p->sinistro, p->info); infotmp = pred->info; CancellaNodoAlbero(a,pred->info); // remoing node doesn't hae two children! p->info= infotmp; /* CancellaNodoAlbero */ Costo della cancellazione da n ABR la cancellazione di n nodo interno richiede l'indiidazione del nodo da cancellare nonché del so predecessore (o sccessore) nel caso peggiore entrambi i costi sono lineari: O(n) + O(n) = O(n) da cancellare predecessore n/2 n/2 19
Alberi 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
Dettaglialbero binario di ricerca Algoritmi e strutture dati albero binario di ricerca/3 albero binario di ricerca/2
albero binario di ricerca Algoritmi e strttre dati Alberi binari di ricerca (BST) albero binario che soddisfa la segente proprietà per ogni nodo, ttte le chiai nel so sottoalbero sinistro sono! della chiae
DettagliAlberi ed Alberi Binari
Alberi ed Alberi Binari 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 informazione,
Dettaglialgoritmi e strutture dati alberi binari di ricerca (BST)
algoritmi e strutture dati alberi binari di ricerca (BST) concetto di chiave insieme di campi di un record che caratterizza l'intero record es.: {, , , , }
DettagliOrganigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre
Alberi Struttura dati Albero Organigramma Gerarchia (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre Esempio di un organigramma di un azienda Tree terminology
Dettaglid. Cancellazione del valore 5 e. Inserimento del valore 1
Esercizio1 Si consideri un albero binario non vuoto in cui a ciascun nodo v è associato un numero reale v.val. Scrivere un algoritmo che, dato in input l'albero T e un numero reale x, restituisce true
DettagliStruttura dati Dizionario
Struttura dati Dizionario Un dizionario è : un insieme di coppie (elemento, chiave) Sul campo chiave è definita una relazione d'ordine totale Su cui definiamo le seguenti operazioni: insert(elem e, chiave
DettagliEsercitazione 6. Alberi binari di ricerca
Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Alberi di ricerca Domenico Fabio Savo 1 Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato Dizionario 2 Alberi binari di ricerca (BST
DettagliAlgoritmi e strutture dati
Algoritmi e Strutture Dati Alberi di ricerca Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario 2 Alberi binari di ricerca (BST = binary search tree)
DettagliEsercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 8 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti
DettagliAlberi di ricerca. Dizionari. Definizione. Alberi binari di ricerca (BST = binary search tree) Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Dizionari Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato dizionario Alberi di ricerca Basato su materiale di C. Demetrescu, I. Finocchi, G.F.
DettagliAlberi binari di ricerca
Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente
DettagliPer semplicità eliminiamo le ripetizioni nell'albero.
Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore
DettagliAlgoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario
Algoritmi e Strutture Dati Capitolo 6 Il problema del dizionario Il tipo dato Dizionario Suppongo sempre che mi venga dato un riferimento diretto all elemento da cancellare Applicazioni: gestione archivi
DettagliAlgoritmo di ordinamento sul posto che ha tempo di esecuzione :
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : O(n2 ) nel caso peggiore O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior algoritmo
DettagliAlberi binari e alberi binari di ricerca
Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Alberi Un albero è una collezione non vuota di: nodi con nome e informazioni
DettagliAlbero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)
Albero binario 2 Alberi binari (introduzione) Struttura di dati bidimensionale formata da nodi costituiti ciascuno dai dati da memorizzare e da due link Ver. 2.4 20 - Claudio Fornaro - Corso di programmazione
DettagliAlberi. Alberi: Esempio di utilizzo
Sono strutture dati del tipo: Alberi SOTTOALBERO n1 RADICE DELL ALBERO () n2 n n4 Profondità o Livello 0 1 n n n n n n 2 NODI FOGLIA (LEAF NODES) 1 Alberi: Esempio di utilizzo Rappresentazione di un file
DettagliAlberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica giovedì 9
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Frodo Dudo Daisy Alberi Gli alberi sono una generalizzazione
DettagliAlberi binari di ricerca
Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente
DettagliAlberi 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
DettagliInformatica 3. LEZIONE 15: Implementazione di alberi binari - BST. Modulo 1: Implementazione degli alberi binari Modulo 2: BST
Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST Informatica 3 Lezione 15 - Modulo 1 Implementazione degli alberi binari Introduzione
DettagliALBERI BINARI DI RICERCA
ALBERI BINARI DI RICERCA ABR Abbiamo visto che la scelta del tipo di dato astratto da utilizzare dipende dal problema. Se la situazione è tale per cui la lista deve essere continuamente modificata in dimensione
DettagliProva di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
DettagliAlberi Binari di Ricerca
Alberi Binari di Ricerca Algoritmi su gli alberi binari: visite Dato un puntatore alla radice di un albero vogliamo scandire in modo sistematico tutti i nodi di tale albero In una lista abbiamo una unica
DettagliStruttura di dati che può essere usata sia come dizionario, sia come coda con priorità
Albero binario di ricerca Struttura di dati che può essere usata sia come dizionario, sia come coda con priorità Proprietà: sia x un nodo di un (sotto)albero binario di ricerca Se y è un nodo del sottoalbero
DettagliALGORITMI E STRUTTURE DATI
ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Alberi, ABR StudentiDIA
DettagliStrutture dati Alberi binari
Strutture dati - 2 - Alberi binari Definizione L albero è un insieme di elementi (nodi), sui quali è definita una relazione di discendenza con due proprietà: esiste un solo nodo radice senza predecessori
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari I Un albero è un caso particolare di grafo I I I I È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine
Dettaglidizionari dizionari introduzione al bilanciamento dizionari/2 alberi bilanciati ! ADT che supportano le seguenti operazioni
dizionari dizionari alberi bilanciati! ADT ce supportano le seguenti operazioni! membersip! ance detta searc! insert! delete! o remove! le liste e i BST sono dizionari maggio 2002 ASD2002 - Alberi bilanciati
DettagliIntroduzione Implementazione (1)
Informatica 3 Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST Lezione 15 - Modulo 1 Implementazione degli alberi binari Politecnico
DettagliIl tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
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
DettagliAlberi di ricerca. Alberi binari di ricerca. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)
Alberi di ricerca Alberi binari di ricerca Un esempio: l ADT Dizionario (mutabile) Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Alberi binari di
DettagliImplementazione ADT: Alberi
Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice
DettagliIn questa lezione Alberi binari di ricerca
In questa lezione Alberi binari di ricerca!1 Dizionari Un dizionario è una struttura dati costituita da un insieme con le operazioni di inserimento, cancellazione e verifica di appartenenza di un elemento.
DettagliUn esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem
Un esempio: l ADT Dizionario (mutabile) Algoritmi e Laboratorio a.a. 2006-07 Lezioni Gli alberi di ricerca sono usati per realizzare in modo efficiente il tipo di dato astratto dizionario Parte 19-D Alberi
DettagliAlgoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
Algoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
DettagliIn questa lezione Alberi binari di ricerca: la cancellazione
In questa leione Alberi binari di ricerca: la cancellaione 1 L algoritmo di Hibbard per cancellare (1962) Sia il nodo da cancellare: 1) è una foglia: si rimuove 2) ha un solo figlio x: si rende x figlio
Dettaglidizionari alberi bilanciati
dizionari alberi bilanciati dizionari ADT che supportano le seguenti operazioni membership anche detta search insert delete o remove le liste e i BST sono dizionari maggio 2002 ASD2002 - Alberi bilanciati
DettagliAlberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati
Alberi CORDA Informatica A. Ferrari Testi da Marco Bernardo Edoardo Bontà Dispense del Corso di Algoritmi e Strutture Dati Albero - definizione Albero Figli, fratelli, nodi, foglie Grado, livello, altezza,
Dettagliricerca di un elemento, verifica dell appartenenza di un elemento
Alberi Binari di Ricerca Gli alberi binari di ricerca (o, alberi di ricerca binaria) sono strutture dati che consentono, su un insieme di elementi con un ordine totale le operazioni di: ricerca di un elemento,
DettagliMulti-way search trees
Multi-way search trees GT. 10.4 1 Argomenti Multi-way search trees Multi-way searching 9 (2,4) Trees 2 5 7 10 14 2 1 Alberi Binari di Ricerca Bilanciati n numero di chiavi (entry(key,elem)) AVL tree log(
DettagliUn esempio di mutua ricorsione
Inserimento in un ABR n-bilanciato Un esempio di mutua ricorsione con gli alberi bilanciati in altezza, proprietà più debole, si ottiene maggiore semplicità delle operazioni di ribilanciamento (niente
DettagliAlgoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
lgoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
DettagliAlberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
DettagliDizionari. Dizionari con gli alberi. Alberi binari di ricerca. Realizzazione con alberi binari di ricerca. Alberi rosso-neri.
Dizionari Realizzazione con alberi binari di ricerca. Alberi rosso-neri. Dizionari con gli alberi Astro, Dado, Lana, Mela, Tasto,Vela, Zappa Astro Mela Tasto Zappa Alberi binari di ricerca Gli alberi binari
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo Frodo Daisy Alberi Gli alberi sono una generalizzazione
DettagliQuickSort Università degli Studi di Milano
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior
DettagliAlberi. Definizione, realizzazione e algoritmi elementari. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 7
Alberi Definizione, realizzazione e algoritmi elementari Cosa sono gli alberi? Strutture gerarchiche di ogni tipo Generale Colonnello 1 Colonnello k Maggiore 1,1 Maggiore 1,m Capitano Maggiore k,1 Maggiore
Dettagliricerca di un elemento, verifica dell appartenenza di un elemento
Alberi Binari di Ricerca Gli alberi binari di ricerca (o, alberi di ricerca binaria) sono strutture dati che consentono, su un insieme di elementi con un ordine totale le operazioni di: ricerca di un elemento,
DettagliAlgoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello del 24 Gennaio 2007 Esercizio 1 (ASD) 1. Sia T (n) = T (n/6) + T (n/3) + Θ(n). Considerare ciascuna delle seguenti affermazioni
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
DettagliDepth-first search. Visita in profondità di un grafo Algoritmo Esempio Complessità dell algoritmo Proprietà Ordinamento topologico
Depth-first search Visita in profondità di n grafo Algoritmo Esempio Complessità dell algoritmo Proprietà Ordinamento topologico Depth-first search Dato n grafo G=(V,E) e n specifico ertice s chiamato
Dettaglilezione 9 min-heap binario Heap e Alberi posizionali generali
lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato
DettagliGrafo diretto Università degli Studi di Milano
Grafo diretto Un grafo diretto G è na coppia ordinata (V, E), doe V è l insieme dei ertici {,,,,n} (anche detti nodi). E V V è n insieme di coppie ordinate (,) dette archi diretti 6 V= {,,,4,5,6,7} 7 4
Dettagliheap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata
heap heap concetti ed applicazioni heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. tutte le foglie sono a sinistra ma non è un BST!! 3. ogni nodo contiene una chiave maggiore
DettagliPROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE
PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta
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
DettagliLezione 12 Tabelle Hash
Lezione 12 Tabelle Hash Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 2 ABR: Visita Scrivere un programma che legga
DettagliAlberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli.
Alberi Un albero è un insieme di oggetti, chiamati nodi, su cui è definita una relazione binaria G(x, y) che leggiamo x è genitore di y tale che: 1. esiste un unico nodo, chiamato radice, che non ha genitori;
DettagliLE 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
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
DettagliADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:
Ordered search table Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D: possiamo memorizzare le entrate di D in un array list S in ordine non decrescente di chiavi:
DettagliAlberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3
Alberi binari (radicati e ordinati) Il figlio sinistro della radice Il padre del nodo 5 e del nodo 3 4 3 Il figlio sinistro del nodo 2 2 5 1 6 7 8 9 La radice Il figlio destro della radice una foglia Figlio
DettagliAlberi Binari di Ricerca e Alberi Rosso-Neri
Alberi Binari di Ricerca e Alberi Rosso-Neri Obiettivi Studiare strutture dati che consentano di effettuare in modo efficiente le operazioni di Minimo e massimo Successore Inserimento e cancellazione Ricerca
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
DettagliAlgoritmi e Strutture Dati. Lezione 3
Algoritmi e Strutture Dati Lezione 3 www.iet.unipi.it/a.virdis Antonio Virdis antonio.virdis@unipi.it 1 Sommario Alberi Binari di Ricerca Gestione Stringhe Progettazione Esercizi 2 3 4 Alberi Binari 10
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,
Dettagli23/10/2016. gli alberi. alcune definizioni. un esempio. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica.
gli alberi Un albero è una struttura dati NON LINEARE organizzata gerarchicamente. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica È costituito da un insieme di nodi collegati tra di loro:
DettagliEspressioni aritmetiche
Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:
DettagliGLI ALBERI BINARI DI RICERCA. Cosimo Laneve
GLI ALBERI BINARI DI RICERCA Cosimo Laneve argomenti 1. alberi binari di ricerca 2. la ricerca di elementi e la complessità computazionale 3. operazione di cancellazione di elementi 4. esempi/esercizi
DettagliVerificare se un albero binario è bilanciato
Verificare se un albero binario è bilanciato Definizione: Un albero è bilanciato nel Numero dei Nodi, brevemente n- bilanciato, quando, per ogni sottoalbero t radicato in un suo nodo, il numero dei nodi
DettagliAlberi binari. Alberi Albero binario Heap tree
Alberi binari Alberi Albero binario eap tree Albero Ogni nodo può avere un numero arbitrario di figli Un nodo senza figli viene detto foglia siste un nodo particolare chiamato radice, tutti gli altri hanno
DettagliEsempi. Albero di interi. Struttura che non è un albero!
albero si dice "grafo diretto" un insieme di nodi legati "a due a due" da archi direzionati (puntatori) un albero è un grafo diretto in cui ogni nodo può avere un solo arco entrante ed un qualunque numero
DettagliALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI
SOMMARIO ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI Dimensione e Altezza ALBERI BINARI DI RICERCA (BST) Introduzione Ricerca, inserimento e cancellazione Implementazione
DettagliDati e Algoritmi 1: A. Pietracaprina. Alberi Binari
Dati e Algoritmi 1: A. Pietracaprina Alberi Binari 1 Definizione Un alberto binario T è un albero ordinato in cui Nota ogni nodo interno ha 2 figli ogni nodo non radice è etichettato come figlio sinistro
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
DettagliAlberi. Albero binario. Un albero binario è un albero (ordinato) in cui ciascun nodo può avere al massimo due figli (figlio destro e figlio sinistro)
Albero binario Un albero binario è un albero (ordinato) in cui ciascun nodo può avere al massimo due figli (figlio destro e figlio sinistro) albero binario proprio: ogni nodo interno ha esattamente due
Dettaglialberi binari e ricorsione
alberi binari e ricorsione un albero binario: ogni nodo ha al più 2 figli ogni figlio è destro o sinistro figlio sinistro nodo interno radice figlio destro foglia cammini = sequenze di nodi = sequenze
DettagliAlberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica
Alberi ( GT. 7 ) Albero definizioni Albero ADT (Abstract Data Type) Algoritmi di base su alberi Alberi binari Strutture dati per rappresentare alberi Implementazione AlberoBinario 1 Alberi (GT. 7) In informatica,
DettagliAlbero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata
Il TDA BinaryTree Albero Binario A B C D E F G Albero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata I figli di un nodo vengono chiamati figlio sinistro e figlio
DettagliEsercitazione 4 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016
Esercitazione 4 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 5, 2016 Alberi Esercizio 1 * [Libro 5.2] Dato un albero ordinato i cui nodi contengono valori interi, se ne vogliono
DettagliLezione 7 Alberi binari: visite e alberi di ricerca
Lezione 7 Alberi binari: visite e alberi di ricerca Informatica 6 Maggio 2015 Operazioni sugli alberi: visita La visita di un albero esplora tutti i nodi ed esegue una qualche operazione su di essi. Per
DettagliEsercizi proposti Risolvere i problemi seguenti su espressioni rappresentate come alberi binari, mediante la dichiarazione di tipo
Esercizi proposti 8 INDICZIONI DI CRTTERE GENERLE: Quando scrivete una funzione che ne utilizza una ausiliaria, chiedetevi sempre se l ausiliaria è necessaria, ricordando che è utile quando: (a) servono
DettagliDipartimento di Elettronica, Informazione e Bioingegneria API 2013/4
Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Bilanciamento negli alberi di ricerca @ G. Gini 2013 Dizionari Dizionario Insieme dinamico che implementa le seguenti funzionalità Cerca
DettagliTutoraggio Informatica Generale Inserimento e cancellazione in un ABR Counting Sort
Tutoraggio Informatica Generale Inserimento e cancellazione in un ABR Counting Sort A.Festa festa@mat.uniroma1.it 20-5-2010 1 Inserimento e cancellazione in ABR Quando si inserisce o si rimuove un elemento
Dettagliheap concetti ed applicazioni
heap concetti ed applicazioni ADT coda di priorità operazioni getfirst restituisce l'elemento nella struttura con massima priorità deletefirst cancella l'elemento nella struttura con massima priorità insert
DettagliL albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche.
Lezioni di C L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche. qstruttura del file system qalbero genealogico qorganigramma qalbero di decisione q... s=6*8+((2+42)*(5+12)+987*7*123+15*54)
DettagliEsercizi su ABR. Prof. E. Fachini - Intr. Alg.!1
Esercizi su ABR Confronto proprietà ABR e Max-Heap. Proprietà del cammino radice-foglia individuato da una ricerca. Fusione di due ABR. Il successivo calcolato dalla radice Costruzione di un ABR bilanciato
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto
DettagliAlgoritmi e Strutture Dati
Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto
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
DettagliLaboratorio di Informatica. Lezione 8: Liste e alberi
Laboratorio di rmatica Lezione 8: Liste e alberi Il programma della lezione 7 (parte 1) #include #include typedef struct node char key[20]; int volte; struct node *psnnext; NODE, *PNODE;
Dettagli