Alberi Binari di Ricerca. Vittorio Maniezzo Università di Bologna

Documenti analoghi
Alberi Binari di Ricerca

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

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.

Alberi Binari di Ricerca

Alberi di ricerca binari

Algoritmi e Strutture Dati

Alberi binari di ricerca

Alberi binari di ricerca

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

Lezione 15. Algoritmi su gli alberi binari: visite

Alberi Binari di Ricerca

Algoritmi e strutture dati

Esempi. Albero di interi. Struttura che non è un albero!

Alberi Binari di Ricerca e Alberi Rosso-Neri

Alberi di ricerca. Dizionari. Definizione. Alberi binari di ricerca (BST = binary search tree) Algoritmi e Strutture Dati

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati

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

Strutture dati Alberi binari

Esercizi su ABR. Prof. E. Fachini - Intr. Alg.!1

Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi e Strutture Dati

In questa lezione. Alberi binari: [CLRS09] cap. 12 per la visita inorder. visite e esercizi su alberi binari. Prof. E. Fachini - Intr. Alg.

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

Alberi binari e alberi binari di ricerca

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

Multi-way search trees

Esercizi Capitolo 6 - Alberi binari di ricerca

Alberi binari e alberi binari di ricerca

Albero binario: Ogni nodo ha zero, uno, o due successori (ordinati)

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

Esercizi su alberi binari

Algoritmi e Strutture Dati

Algoritmi e Strutture di Dati

Alberi binari e alberi binari di ricerca

In questa lezione Alberi binari di ricerca: la cancellazione

Problemi di ordinamento

Spesso sono definite anche le seguenti operazioni:

Indici con gli alberi

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

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Visite di alberi binari. Laboratorio di Algoritmi e Strutture Dati

Heap e code di priorità

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

Esercitazione 6. Alberi binari di ricerca

Algoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario

Divide et impera su alberi

Dati e Algoritmi 1: A. Pietracaprina. Alberi Binari

Strutture dati elementari. Vittorio Maniezzo - Università di Bologna

Visite di alberi binari. Laboratorio di Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

ALBERI. Un Albero. Un grafo aciclico che non è un albero: due archi entranti in uno stesso nodo

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.

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Code con priorità. Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna.

Alberi binari di ricerca

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Lezione 7 Alberi binari: visite e alberi di ricerca

Strutture dati elementari

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

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima

ADT Coda con priorità

QuickSort Università degli Studi di Milano

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

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

Algoritmi e Strutture Dati. Alberi di Ricerca Alberi Bilanciati I (Alberi AVL)

heap concetti ed applicazioni

Alberi binari. Alberi Albero binario Heap tree

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

Heap binomiali. Oltre alle precedenti operazioni fondamentali degli heap riunibili, sugli heap binomiali definiremo anche le due ulteriori operazioni:

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Esercizi su ABR. Prof. E. Fachini - Intr. Alg. 1

Ordinamenti. Grafo : definizione. Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Alberi binari. Alberi binari di ricerca

Esercizi per il corso di Algoritmi, anno accademico 2011/12

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

Moltiplicazione veloce di interi

Ordinamenti. Vittorio Maniezzo Università di Bologna

Alberi binari di ricerca

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

Esercizio. 2 i=i*2) j=j*2)

Esercizi BST - AVL. E. Fachini

Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann

alberi binari di ricerca (BST)

Alberi Binari di Ricerca

Alberi due-tre e alberi B

Esercizi di Algoritmi e Strutture Dati

Alberi rosso-neri. Oltre ad essere alberi binari di ricerca, gli alberi rosso-neri soddisfano le seguenti proprietà:

Heap e Code di Priorità

Algoritmi e Strutture Dati. Alberi di Ricerca Alberi Bilanciati I (Alberi AVL)

ALBERI DI RICERCA BINARI (O ALBERI BINARI DI RICERCA)

L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche.

Binari di Ricerca Binary. Alberi. Trees. Search. Damiano Macedonio Università Ca' Foscari di Venezia.

Alberi Binari di Ricerca

Transcript:

Alberi Binari di Ricerca 1 Vittorio Maniezzo Università di Bologna

Look up table, dati ordinati Collezione di dati nella forma di coppie attributo / valore, in cui i campi chiave sono ordinabili. Caso semplice, array A ordinato (solo chiavi, niente valori), con A[1],..., A[n] crescenti. Operazioni: Inserimento Cancellazione Ricerca La ricerca può essere fatta tramite ricerca binaria. Vittorio Maniezzo Università di Bologna 2

Ricerca binaria Ricerca di una chiave k in un array ordinato A[l...r] Algorithm BinarySearch(k,A) if l>r then return k non presente if l r then i = (l+r)/2 compare m=a[i] with k if k<m then BinarySearch(k, A[l... i 1]) if k=m then return k is at i if k>m then BinarySearch(k, A[i+1... r]) Complessità: Equazione ricorsiva: T(n) =O(1) se n=1; T(n/2) + 1 se n>1 BinarySearch è O(log n) Per esempio, la ricerca in un array di 25000 dati richiede 15 passi Vittorio Maniezzo Università di Bologna 3

Alberi di ricerca binari Tutti i nodi nel sottoalbero sinistro di un nodo hanno chiave inferiore a quella del nodo. Tutti i nodi nel sottoalbero destro di un nodo hanno chiave superiore a quella del nodo. 8 5 18 6 15 9 17 16 Vittorio Maniezzo Università di Bologna 4

Alberi di ricerca binari 8 5 18 6 15 9 17 Vittorio Maniezzo Università di Bologna 5 16

BST : definizione formale Sia x un nodo dell albero: Se y è un nodo nel sottoalbero sinistro di x allora key[y] key[x] Se y è un nodo nel sottoalbero destro di x allora key[y]>key[x] Nota che un BST può essere molto sbilanciato!!! bilanciato sbilanciato Cfr. heap: anche gli alberi binari possono essere rappresentati con un vettore, con la convenzione sugli indici dei figli. Alberi binari non sono quasi completi ci sono celle vuote all interno dell array Vittorio Maniezzo Università di Bologna 6

Esercizi Domande Presentare una min-heapche non è un BST Presentare un BST che non è una min-heap Elencare tutti ibst per le chiavi 1, 2,3 Quanti BST con n nodi esistono? Numeri di Catalan. 1 2 1 Primi numeri di Catalan: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452,... Vittorio Maniezzo Università di Bologna 7

Ordinamento 8 Inorder-tree-walk(x) if x nil then Inorder-tree-walk(left[x]) print key[x] Inorder-tree-walk(right[x]) 5 18 6 7 15 9 17 N.B: possibili anche: Preorder-tree-walk Postorder-tree-walk 16 Vittorio Maniezzo Università di Bologna 8

Traversal: complessità Si visitano tutti i nodi Ω(n) Equazione ricorsiva, k num nodi nel sottoalbero sinistro T(0) = c T(n) = T(k) +T(n k 1) + d Si ricava: T(n) (c+d) n+c Quindi: T(n) in O(n) Complessivamente: T(n) Θ(n) Vittorio Maniezzo Università di Bologna 9

Ricerca ricerchiamo il 16 8 5 18 7 15 6 9 17 16 Θ(h) confronti h=altezza albero Vittorio Maniezzo Università di Bologna 10

Ricerca Tree-search(x,k) if x=nil or k=key[x] then return x if k<key[x] then return Tree-search(left[x],k) else return Tree-search(right[x],k) Esercizio: dimostrare che il costo computazionale di Tree-searchè Θ(h) Vittorio Maniezzo Università di Bologna 11

Successore 15 6 18 3 7 17 20 2 4 13 x hail figlio destro. 9 successore(x)= minimo nel sottoalbero di destra Dimostrazione: Esercizio. Vittorio Maniezzo Università di Bologna 12

Successore 15 6 18 3 7 17 20 2 4 13 xnonhail figlio destro. 9 successore(x)= il più basso avo di x il cui figlio sinistro è avo di x Dimostrazione: Esercizio. Vittorio Maniezzo Università di Bologna 13

Minimo e massimo algorithm treemimimum(x) while left(x) nil do x = left(x) return x algorithm treemaximum(x) while right(x) nil do x = right(x) return x Vittorio Maniezzo Università di Bologna 14

Operazioni su BST Ricerca Minimo Massimo Predecessore Successore Θ(h) confronti Vittorio Maniezzo Università di Bologna 15

Inserimento 15 5 99 6 18 3 7 17 20 2 4 13 99 5 9 Sempre in una foglia! Vittorio Maniezzo Università di Bologna 16

Cancellazione 3 casi: xnon ha figli: eliminax x ha un figlio: xha 2figli: Lemma: ilsuccessoredi xstanelsottoalberodestroe ha al massimo 1 figlio. Dimostrazione: esercizio. Vittorio Maniezzo Università di Bologna 17

cancellazione eliminiamo 15 6 18 3 7 17 20 2 4 13 9 successore di 15 Vittorio Maniezzo Università di Bologna 18

Cancellazione 17 6 18 3 7 20 2 4 13 9 17 ha preso il posto di 15 Vittorio Maniezzo Università di Bologna 19

Cancellazione Cancellazione di un nodo xcon 2figli: 1. sia y = successore di x. // y ha al Massimo un solo figlio 2. sostituisci x con y. 3. rimuovi y. Vittorio Maniezzo Università di Bologna 20

Cancellazione Algorithm treedelete(t,z) if (left(z) = nil) then transplant(t,z,right(z)) else if (right(z) = nil) then transplant(t,z,left(z)) else y = treeminimum(z.right(z)) if (p(y) z) then transplant(t,y,right(y)) right(y) = right(z) p(right(y)) = y transplant(t,z,y) left(y) = left(z) p(left(y)) = y Cortocircuita u Algorithm transplant(t,u,v) if p(u) = nil then root(t) = v else if (u = left(p(u)) ) then left(p(u)) = v else right(p(u)) = v if v nil then p(v) = p(u) Vittorio Maniezzo Università di Bologna 21

Problema Tutte le operazioni su BST hanno un costo lineare nell altezza dell albero. Purtroppo, quando l albero è sbilanciato, h = n-1 Le operazioni hanno un costo lineare invece che logaritmico come speravamo!!! Soluzione??? Vittorio Maniezzo Università di Bologna 22

Soluzione Introduciamo alcune proprietà addizionali sui BST per mantenerli bilanciati. Paghiamo in termini di una maggiore complessità delle operazioni dinamiche sull albero. Tali operazioni devono infatti preservare le proprietà introdotte per mantenere il bilanciamento. Strutture dati di questo tipo sono gli alberi rossoneri (red-blacktrees), gli alberi / heapbinomiali, le heapdi Fibonacci, ecc. (non coperte dal corso) e i B-tree Vittorio Maniezzo Università di Bologna 23