alberi completamente sbilanciati

Documenti analoghi
Un albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo

Un esempio di mutua ricorsione

Esercizi su alberi binari

Verificare se un albero binario è bilanciato

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Alberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3

Lezione 12 Tabelle Hash

23/10/2016. gli alberi. alcune definizioni. un esempio. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica.

In questa lezione Alberi binari di ricerca: la cancellazione

Algoritmi e Strutture Dati. HeapSort

Per semplicità eliminiamo le ripetizioni nell'albero.

Note per la Lezione 4 Ugo Vaccaro

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

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

ADT Coda con priorità

Algoritmi e Strutture Dati

Alberi ed Alberi Binari

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

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

Divide et impera su alberi

Esercitazione 6. Alberi binari di ricerca

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

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

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)

Heap e code di priorità

Alberi binari e alberi binari di ricerca

Alberi Binari di Ricerca

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Lezione 9 Alberi binari di ricerca

Appunti Senza Pretese di Programmazione II: Costruzione di un Albero Bilanciato

Indici con gli alberi

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

Algoritmi e strutture dati

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

Alberi. Definizioni principali

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

Implementazione ADT: Alberi

Esercitazione 3. Heapsort

Problemi di ordinamento

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Algoritmi e Strutture Dati

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Algoritmi e strutture dati

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

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

Implementazione dell albero binario in linguaggio C++

Lezione 7 Alberi binari: visite e alberi di ricerca

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

Tipi di dato e Strutture dati elementari

Le precondizioni e postcondizioni aggiunte al prototipo, consentono di fornire una specificazione precisa della funzione

Alberi Binari di Ricerca e Alberi Rosso-Neri

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

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

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

Parallel sorting. Algoritmi Avanzati. Davide Lo Re

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree

Linguaggi e Grammatiche Liberi da Contesto

Espressioni aritmetiche

ricerca di un elemento, verifica dell appartenenza di un elemento

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Laboratorio di Python

Heap, heapsort e code a priorità. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino

ADT ALBERO BINARIO (tree)) ADT ALBERO BINARIO

Indice come albero binario di ricerca!

PROVETTE D ESAME. Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

alberi binari e ricorsione

Algoritmi e strutture dati

Informatica 3. Informatica 3. LEZIONE 17: Alberi generici. Lezione 17 - Modulo 1. Introduzione. ADT dell albero generico.

Strutture di accesso ai dati: B + -tree

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in:

Esercizi di Algoritmi e Strutture Dati

Esercitazione 4 Algoritmi greedy

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

Algoritmi e Strutture Dati

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

Algoritmi e Strutture Dati

Lezione 9 Alberi binari di ricerca

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

liste ogni nodo ha un successore, tranne l ultimo della lista che ne ha zero; alberi binari ogni nodo ha zero, uno oppure due figli

Alberi di ricerca binari

Alberi binari. Alberi binari di ricerca

Struttura di dati che può essere usata sia come dizionario, sia come coda con priorità

Memorizzazione di una relazione

Codice Gray. (versione Marzo 2007)

Laboratorio 8. Programmazione - CdS Matematica. Marco Virgulin 13 Gennaio 2015

Progettazione di algoritmi

Laboratorio di Python

Complessità algoritmi su strutture dati (riassunto)

Laboratorio di Algoritmi e Strutture Dati

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

Alberi Bilanciati di Ricerca

Prossime lezioni e tutorato!

Alberi di ricerca. Alberi binari di ricerca. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Inserimento in una lista ordinata

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

Esercizi di preparazione alla prova scritta

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

Transcript:

alberi completamente sbilanciati Il numero dei nodi al livello i è 1, per 0 i altezza L altezza h di un albero completamente sbilanciato con n nodi è h = n-1 1 Un albero completamente bilanciato o pieno (full) Definizione: Un albero è pieno se tutte le foglie sono sullo stesso livello e ogni nodo non foglia ha due figli. Il numero dei nodi al livello i è 2 i, per 0 i altezza Il numero dei nodi n di un albero pieno di altezza h è n = 2 h+1-1 Per un albero binario qualsiasi di altezza h e numero di nodi n vale log 2 (n)< h+1 n 2 1

log 2 (n)< h+1 n Per ottenere questi limiti per l'altezza di un albero binario in funzione del numero dei nodi osserviamo che: 1. l'albero completamente sbilanciato con n nodi ha altezza massima a parità di nodi. In altre parole è il più alto albero binario con n nodi, infatti ha un solo nodo per ogni livello. L'altezza è n-1. Quindi qualsiasi albero binario con n nodi ha altezza h n-1, da cui h+1 n. 2. l'albero pieno ha il maggior numero di nodi fra gli alberi binari della stessa altezza. Il numero di nodi è 2 h+1-1. Quindi qualsiasi albero binario di altezza h ha un numero di nodi n 2 h+1-1, da cui n < 2 h+1, e passando ai logaritmi si ha log 2 (n)< h+1 3 Un albero binario completo Definizione: un albero binario è completo se tutti i livelli, tranne al più il massimo, hanno il massimo numero di nodi e le foglie sul livello massimo sono più a sinistra possibile. Per ogni n esiste un unico albero binario completo con n nodi 4 2

Alt = h-1 Numero nodi n = 2 h -1 Alt = h Numero nodi n = 2 h posso aggiungere altri 2 h - 1 nodi, senza aumentare l altezza. 2 h n 2 h+1-1, da cui h = log 2 (n), n 1. 5 alberi n-bilanciati 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 del sottoalbero sinistro di t meno il numero dei nodi del sottoalbero destro di t è in valore assoluto al più 1. Anche per gli alberi n-bilanciati h = log 2 (n), n 1. 6 3

n = 2 2-1 nodi n = 2 3-1 nodi n = 2 2 nodi... n = 2 2 +1 nodi... n = 2 2 +2 nodi 7 Se t è un albero n-bilanciato con numero dei nodi n e altezza h,vale 2 h n 2 h+1-1, per ogni n 1. Dimostriamolo per induzione sul numero dei nodi. Per n = 1 è banalmente vero (l altezza è 0). Sia vero per tutti gli alberi con meno di n nodi e sia t un albero con n nodi. t = h h1 t1 t2 h2 n = n1 + n2 + 1 h = max(h1,h2) +1 Per ipotesi induttiva 2 h1 n1 2 h1+1-1 e 2 h2 n2 2 h2+1-1, graficamente: n1 2 h1+1 n2 2 h2+1 2h1 2 h1+1-1 2h2 2 h2+1-1 Ma n1-n2 1!! 8 4

Poichè n1-n2 1, possiamo avere i seguenti casi, assumendo, senza ledere la generalita, che n2 n1: aso 1: n1 = n2, per cui h1 = h2 n1=n2 2 h1+1 2 h1 2h1+1-1 aso 2: n2 = n1+1 e entrambi cadono nello stesso intervallo, per cui h1 = h2 n1 n1+1 2 h1+1 2 h1 2h1+1-1 aso 3: n2 = n1+1 e cadono in intervalli diversi ma successivi, per cui h2 = h1 +1 n2 = 2 h2 = 2 h1+1 2 h2+1 n1 = 2 h1+1-1 2 h2+1-1 9 aso 1: n1 = n2, per cui h1 = h2 n = n1 + n2 + 1 h = max(h1,h2) +1 Per ipotesi induttiva 2 h1 n1=n2 2 h1+1-1, quindi 2*2 h1 2*n1 2*2 h1+1-2 da cui 2 h1+1 2*n1+1 2 h1+2-1 da cui la tesi essendo n = 2*n1+1 e h = h1+1 aso 2: n2 = n1+1 e entrambi cadono nello stesso intervallo, per cui h1 = h2 Per ipotesi induttiva 2 h1 n1 2 h1+1-1, e 2 h1 n2 2 h1+1-1 quindi 2*2 h1 n1+n2 2*2 h1+1-2 da cui 2 h1+1 n1+n2+1 2 h1+2-1 da cui la tesi essendo n = n1+n2+1 e h = h1+1 aso 3: n2 = n1+1 e cadono in intervalli diversi ma successivi, per cui h=h2 = h1 +1 Per ipotesi induttiva 2 h1 n1 2 h1+1-1, e 2 h2 n2 2 h2+1-1, ma allora deve essere n1 = 2 h2-1 e n2 = 2 h2 da cui n1+n2 = 2 h2-1 + 2 h2 da cui n1+n2+1 = 2 h2 + 2 h2 = 2 h2+1 10 5

Analogamente si dimostra che in un albero n-bilanciato le altezze dei sottoalberi sinistro e destro dell albero radicato in ogni nodo differiscono in valore assoluto al più di uno. Definizione: Un albero è bilanciato in altezza, brevemente h-bilanciato, quando, per ogni sottoalbero t radicato in un suo nodo, l altezza del sottoalbero sinistro di t meno l altezza del sottoalbero destro di t è in valore assoluto al più 1. Quindi possiamo dire che ogni albero bilanciato nel numero dei nodi è anche bilanciato in altezza. he rapporto c'è tra le classi di albero introdotte fino ad ora? esempio di albero bilanciato in altezza e non bilanciato nel numero dei nodi 11 Questo e' un esempio di albero completo non bilanciato nel numero dei nodi alberi h-bilanciati alberi completi alberi pieni alberi n-bilanciati 12 6

A partire da un vettore di interi possiamo costruire ricorsivamente un albero bilanciato nel numero di nodi selezionando a ogni chiamata una radice alla metà del vettore su cui si effettua la chiamata. A B D E F A B 0 1 D E F 3 4 5 13 TreePtr AlbBinBil(int * vett, int i, int j) /*costruisce un albero n-bilanciato a partire da un vettore di indici i e j * prec: vett!=null && i 0 && j 0 *postc: t punta alla radice di un albero n-bilanciato che contiene vett[i],,vett[j]*/ {int m; TreePtr t; if (i <= j) {m = (i+j)/2; t = malloc(sizeof(node)); if (t) t -> elem = vett[m]; else /* malloc ha restituito un puntatore nullo */ fprintf(stderr,"%d non inserito, memoria non disponibile per AlbBibBil.\n",vett[m]); t->lptr = AlbBinBil(vett,i,m-1); t->rptr = AlbBinBil(vett,m+1,j); return t; } return NULL; } 14 7

A B D E F i =0,j=5 i =0,j=1 A B D E F A i =0,j=5 A B D E F - A - B - 15 A B D E F - A E - B - A B D E F - A E - B - - D - - F - 16 8

Esercizio 1: si definisca una funzione che dovrà restituire vero se l albero è bilanciato nel numero dei nodi, falso altrimenti. Esercizio 2: si definisca una funzione che dovrà restituire vero se l albero è bilanciato in altezza, falso altrimenti. 17 9