Dati e Algoritmi 1: A. Pietracaprina. Priority Queue (I Parte)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Dati e Algoritmi 1: A. Pietracaprina. Priority Queue (I Parte)"

Transcript

1 Dati e Algoritmi 1: A. Pietracaprina Priority Queue (I Parte) 1

2 Nozione di Entry Definizione Una Entry è una coppia (chiave, valore), dove la chiave proviene da un dominio K e il valore da un dominio V. Interfaccia: public interface Entry<K,V> { /** Returns the key of the entry */ K getkey(); /** Returns the value of the entry */ V getvalue(); } 2

3 Priority Queue Definizione Priority Queue: collezione di entry le cui chiavi (non necessariamente distinte) rappresentano priorità e provengono da un universo totalmente ordinato K. Come tipo di dato astratto, la Priority Queue deve permettere di Trovare ed eventualmente rimuovere la entry di massima priorità. Inserire una nuova entry. Osservazioni: Di solito si assume che la entry di massima priorità sia quella con chiave minima. Esistono però dei casi in cui conviene considerare di massima priorità la entry con chiave massima. Come vedremo mantenere le entry ordinate permette di indetificare immediatamente la entry di massima priorità, ma non è la scelta imple,entativa migliore. 3

4 Priority Queue: interfaccia public interface PriorityQueue<K,V> { int size(); boolean isempty(); /** Inserts and returns a new entry (key,value) */ Entry<K,V> insert(k key, V value); /** Returns an entry with min key, without removing it */ Entry<K,V> min(); /** Returns and removes an entry with min key */ Entry<K,V> removemin(); } 4

5 Esempio Partiamo da Priority Queue vuota Operazione Output Priority Queue insert(5,a) (5,A) (5,A) insert(9,c) (9,C) (5,A) (9,C) insert(3,b) (3,B) (5,A) (9,C) (3,B) insert(7,d) (7,D) (5,A) (9,C) (3,B) (7,D) min() (3,B) (5,A) (9,C) (3,B) (7,D) removemin() (3,B) (5,A) (9,C) (7,D) size() 3 (5,A) (9,C) (7,D) isempty() false (5,A) (9,C) (7,D) 5

6 Applicazioni delle priority queue Gestione liste d attesa (ad es. aeroporti) Scheduling di processi in sistema operativo o di richieste di banda nelle reti in base a priorità per garantire QoS Simulazione discreta a eventi Dijkstra: algoritmo per Single Source Shortest Path Top-K pattern discovery (vedi lucidi seguenti) 6

7 Top-K pattern discovery Dato uno stream S[1], S[2],..., S[n] di n entry con chiavi distinte (n grande!) che arrivano in sequenza una dopo l altra, si vogliono determinare le K << n entry con chiave più grande senza salvare tutte le entry ma usando spazio indipendente da n. È una primitva fondamentale per l analisi di dati in molti domini applicativi (ad es., biologia, recommendation systems, astronomy, fraud detection, ecc.) È POSSIBILE USARE UNA CODA CON PRIORITÀ? 7

8 Top-K pattern discovery (continua) Idea: Usare una priority queue Q di appoggio per mantenere il seguente invariante: dopo l arrivo delle prime i entry (S[1],..., S[i]), la priority queue Q contiene le min{i, K} entry con chiave maggiore tra esse. Algoritmo streamtop(s,k) Input: Stream S di n entry, intero K << n Output: K entry di S con chiave più grande Q priority queue vuota; for i 1 to n do if i K then Q.insert(S[i].getKey(),S[i].getValue()); else if S[i].getKey() > Q.min().getKey() then Q.removeMin(); Q.insert(S[i].getKey(),S[i].getValue()); return Q Esercizio Dimostrare la correttezza di streamtop 8

9 Implementazione di Priority Queue tramite Liste Caso 1: Lista doubly linked non ordinata P lista non ordinata di n entry (Position<Entry< K, V >>) Implementazione dei metodi della Priority Queue: Metodo min() Complessità = Θ (n) v P.first(); minentry v.getelement(); while (P.after(v) null) do v P.after(v); if (v.getelement().getkey() < minentry.getkey()) then minentry v.getelement(); return minentry 9

10 Implementazione di Priority Queue tramite Liste Caso 1: Lista doubly linked non ordinata (continua) 10 Metodo insert(k, x) Complessità = Θ (1) e (k, x); P.addLast(e); return e Metodo removemin() Complessità = Θ (n) (esercizio)

11 Implementazione di Priority Queue tramite liste Caso 2: Lista doubly linked ordinata 11 P lista ordinata di n entry (Position<Entry< K, V >>) N.B. Si assume un ordinamento per chiave crescente Metodo min() Complessità = Θ (1) return P.first().getElement() Metodo removemin() Complessità = Θ (1) (esercizio)

12 Implementazione di Priority Queue tramite Lista ordinata doubly linked (continua) 12 Metodo insert(k, x) Complessità = Θ (n) e (k, x); v P.first(); while v null do if (v.getelement().getkey() k) then P.addBefore(v,e); return e else v P.after(v) P.insertLast(e); return e

13 Priority Queue tramite Liste: riepilogo 13 1 Lista non ordinata doubly-linked i nodi della lista contengono entry P.insert(k,x): complessità Θ (1) P.min(), P.removeMin(): complessità Θ (n) 2 Lista ordinata doubly-linked i nodi della lista contengono entry ordinate per chiave P.insert(k,x): complessità Θ (n) P.min(), P.removeMin(): complessità Θ (1) È possibile bilanciare il costo delle diverse operazioni?

14 14 Albero Binario Completo T Albero binario di altezza h tale che i, 0 i h 1: il livello i ha 2 i nodi (=max numero di nodi) al livello h 1 tutti i nodi interni sono alla sx delle eventuali foglie e hanno tutti 2 figli tranne, eventualmente, quello più a dx che può avere il solo figlio sx. livello& 0& 1& 2& 3& h=4&

15 15 Proposizione Un albero binario completo con n nodi ha altezza h = log 2 n. Dimostrazione Si ha che h 1 2 h = j n j=0 h 2 j = 2 h+1 1 j=0 h log n < h + 1 (log 2 n) 1 < h log 2 n

16 Heap 16 Definizione Uno heap è un albero binario completo i cui nodi memorizzano entry e soddisfano la seguente heap-order property: <k 1#,x># k 1 min{k 2, k 3 } <k 2#,y># <k 3#,z># Esempio <2 ",A># <5 ",C># <9 ",D># <7 ",H># <6 ",N>#

17 17 Nota Uno heap è caratterizzato da 2 proprietà: albero binario completo altezza Θ (log n) heap-order property min() in O (1) Definizione Nodo Last in uno heap di altezza h: nodo più a dx al livello h. Esempio <2 ",A># <5 ",C># <9 ",D># Last% <7 ",H># <6 ",N>#

18 Proprieta di uno heap 1 La radice contiene una entry con chiave minima. <min%key!,x>% 2 heap = mucchio le chiavi incontrate lungo un cammino dalla radice verso le foglie formano una sequenza non decrescente Definizione Max-heap: uno heap nella cui definizione 18

19 19 Esercizio Sia P uno heap con n entry. Risolvere i seguenti punti. 1 (Chiavi distinte) e i entry con l i-esima chiave più piccola (e 1 min()). Dimostrare che se e i è a profondità p allora p < i. 2 (Chiavi distinte) e max entry con chiave massima ( e n ). Dire dove sta e max. (R-9.10 [GTG14]) 3 Sia e v la entry nel nodo v di P. Dimostrare che u T v : e u.getkey() e v.getkey().

20 Svolgimento 20 1 e i entry con l i-esima chiave più piccola e 1 =r! e i! profondita`%p% %p%entry-con-chiave-piu`-piccola-di%e i% p < i 2 e max sta in una foglia. Se fosse in un nodo interno, tale nodo avrebbe un nodo figlio con chiave maggiore di e max.key(), quindi e max non sarebbe l entry con chiave massima assurdo. (N.B.: Esempio di dimostrazione per assurdo)

21 21 3 nodo v con entry e v (entry)!e v! v!(nodo)* e 1! w 1! ek! wk! e u! u! e v.getkey() e 1.getKey() e k.getkey() e u.getkey()

22 Realizzazione di uno heap tramite array 22 Level Numbering Entry radice P[1] Entry figlie di P[i]: P[2i] P[2i + 1] Entry padre di P[i] = P [ i/2 ] Oss. In [GTG14, Par ] il level numbering inizia da 0

23 Realizzazione di uno Heap tramite array (continua) 23 Osservazione: La realizzazione tramite array riduce lo spazio occupato rappresentando implicitamente i link padre-figlio (struttura dati implicita). Notazione (per pseudocodice) P[i] entry: P[i].getKey() P[i].getValue() P[last] entry più a dx al livello h

24 Proprietà del level numbering 24 Per ogni albero binario completo con n 1 nodi e altezza h mappato su un array P tramite level numbering, valgono le seguenti proprietà: i, 0 i < h: i 2 i nodi del livello i presi da sx a dx sono mappati in P[j] con 2 i j 2 i+1 1 i nodi del livello h presi da sx a dx sono mappati in P[j] con 2 h j n ( last = n)

25 Proprietà del level numbering (continua) 25 Dimostrazione Per induzione su n 1 (altezza h univocamente determinata da n) base: n = 1 OK passo induttivo: fissiamo n 1 e assumiamo (hp. induttiva) che le proprietà indicate sopra valgano per ogni albero binario completo con n nodi mappato su un array con level numbering. Consideriamo un albero binario completo con n + 1 nodi mappato su un array P con level numbering. L albero è può essere visto come un albero binario completo con n nodi a cui è aggiunto un nodo (P[n + 1]).

26 Dimostrazione (continua) Caso 1: n pari livello& h"1$ h$ nodo$interno$piu`$ a$dx$a$livello$h(1* P[n]$ Caso 2: n dispari, n 2 h+1 1 livello& h"1$ nodo$piu`$a$dx$ al$livello*h* P[(n"1)/2]$ P[n/2]$ Albero$bin.$completo$ con$n+1$nodi$ha$questo$ nodo$in$piu`,$che$viene$ mappato$in$p[n+1]$ P[(n+1)/2]$ h$ P[n]$ $P[n+1]$ Caso 3: n = 2 h+1 1 Livello h completo. Il prossimo nodo sarà P[n + 1] = P[2 h+1 ] figlio di P[2 h ] (nodo più a sx a livello h) 26

27 Esercizio Sia P un array di n entry P[1]P[2]... P[n] le cui chiavi sono in ordine non decrescente. P rappresenta uno heap? Motivare la risposta. Deve soddisfare due proprietà: Svolgimento albero binario completo OK heap-order property P[i]" k" P[2i]" k " k " P[2i+1]" grazie all ordinamento k k e k k OK 27

28 Esercizio (R-9.15 [GTG14]) Si consideri uno heap P con 7 entry con chiavi distinte. 1 È possibile che la visita in preorder restituisca le entry in ordine crescente? (Far vedere un esempio o dimostrare che non è possibile) 2 Ripetere il punto sopra per la visita inorder e postorder. 1 Si! Svolgimento No: Nella visita inorder P[1] (che ha la chiave minima) appare in posizione 4, e in quella in postorder appare in ultima posizione. 28

29 Implementazione di una Priority Queue tramite heap 29 Dobbiamo implementare i metodi dell interfaccia PriorityQueue size() O (1) (banale) isempty() O (1) (banale) min() O (1) (banale: return P[1]) insert(k, x)?? removemin()??

30 Inserimento: insert Idea inserisci la nuova entry alla destra del nodo last ricostruisci la heap-order property dello heap lungo il cammino da last alla radice Metodo insert(k,x) e (k,x); P[+ + last] e; i last; // Up-heap bubbling while ((i > 1)AND(P[ i/2 ].getkey()> P[i].getKey())) do swap( P[i], P[ i/2 ]); i i/2 ; return e; Oss. In caso di overflow, si devono prima trasferire le entry in un array più capiente (ad es. di taglia doppia) 30

31 Esempio (solo chiavi)

32 Esempio (continua) 32 4 insert(8,*)

33

34 34 4 insert(2,*)

35 35 4 insert(2,*)

36 36 4 insert(2,*)

37 37 2 insert(2,*)

38

39 Correttezza di insert 39 Basata sul seguente invariante per il while Invariante Le uniche coppie (u,v) con u antenato di v tali che chiave(u) > chiave(v), se esistono, sono coppie con v = P[i] u! v"="p[i]! N.B. La struttura di albero binario completo non è mai violata P[last]! Esercizio Dimostrare che l invariante vale all inizio del while, e alla fine di ciascuna sua iterazione.

40 Complessità di insert 40 Consideriamo l esecuzione di insert su uno heap P con n entry, e sia h = log 2 (n + 1) l altezza risultante dopo l inserimento. Complessità proporzionale al numero di iterazioni del while Numero di iterazioni del while h Esiste un istanza che richiede esattamente h iterazioni (si inserisce una entry con chiave minore di tutte quelle presenti) Complessità di insert: Θ (log n) Osservazione Se usiamo un array estendibile, in certi casi l inserimento di un nuovo elemento comporta l estensione dell array. Il costo di questa operazione può però essere ammortizzato dalle precedenti invocazioni di insert.

41 Rimozione: removemin 41 Idea rimuovi la entry presente nella radice dello heap metti la entry del nodo Last nella radice ricostruisci la heap-order property dello heap a partire dalla radice verso le foglie

42 42 Metodo removemin() minentry P[1]; P[1] P[last ]; i 1; if 2i last then j indice del figlio di P[i] con chiave min; // j = 2i o j = 2i + 1 // Down-heap bubbling while (2i last)and(p[i].getkey()>p[j].getkey()) do swap(p[i],p[j]); i j; if 2i last then j indice del figlio di P[i] con chiave min; return minentry

43 Esempio (solo chiavi) 43 4" 5" 6" 15" 9" 7" 20" 16" 25" 14" 12" 11" 13"

44 44 13# removemin()# minentry=#4# 5" 6" 15" 9" 7" 20" 16" 25" 14" 12" 11"

45 45 5" removemin()" minentry="4" 13" 6" 15" 9" 7" 20" 16" 25" 14" 12" 11"

46 46 5" removemin()" minentry="4" 9" 6" 15" 13" 7" 20" 16" 25" 14" 12" 11"

47 47 5" removemin()" minentry="4" 9" 6" 15" 12" 7" 20" 16" 25" 14" 13" 11"

48 Correttezza di removemin 48 Basata sul seguente invariante per il while Invariante P[j] figlio di P[i] con chiave minima (se P[i] è interno) uniche coppie (u,v) con u antenato di v tali che chiave(u) > chiave(v), se estistono, sono coppie con u = P[i]. Esercizio Dimostrare che l invariante vale all inizio del while, e alla fine di ciascuna sua iterazione.

49 Complessità di removemin 49 Consideriamo l esecuzione di removemin su uno heap P con n entry, e sia h = log 2 (n 1) l altezza risultante dopo la rimozione. Complessità proporzionale al numero di iterazioni del while Numero di iterazioni del while h Esiste un istanza che richiede esattamente h iterazioni (la entry in P[last] ha chiave maggiore di tutte quelle presenti) Complessità di removemin: Θ (log n)

50 Esempio 2" 4" 5" 15" 9" 7" 6" 16" 25" 14" 12" 11" 8" 20" removemin()+ 4" 9" 5" 15" 12" 7" 6" 16" 25" 14" 20" 11" 8" 50

51 Esempio (2) 4" 9" 5" 15" 12" 7" 6" 16" 25" 14" 20" 11" 8" removemin()+ 5" 9" 6" 15" 12" 7" 8" 16" 25" 14" 20" 11" 51

52 Esempio (3) 5" 9" 6" 15" 12" 7" 8" 16" 25" 14" 20" 11" insert(3,*), 3" 9" 5" 15" 12" 6" 8" 16" 25" 14" 20" 11" 7" 52

53 Esempio (4) 3" 9" 5" 15" 12" 6" 8" 16" 25" 14" 20" 11" 7" insert(4,*), 3" 9" 4" 15" 12" 6" 5" 16" 25" 14" 20" 11" 7" 8" 53

54 Riepilogo: Priority Queue tramite heap 54 Heap albero binario completo altezza log 2 n heap-order property Mapping efficiente su array P[1 n] (level numbering) I collegamenti padre-figlio sono rappresentati implicitamente (struttura dati implicita). Complessità dei metodi: min(): Θ (1) insert(k,v): Θ (log n) (up-heap bubbling) removemin(): Θ (log n) (down-heap bubbling) N.B. Chiavi duplicate sono ammesse

55 55 Caso di studio 3: Simulazione Discreta a Eventi Esempio: ufficio postale 3 categorie di utenti: A, B, C 5 sportelli multifunzione Sportelli # #A 3 #A 2 #A 1# S 1# S 2# #B 3 #B 2 #B 1# S 3# uscita # #C 3 #C 2 #C 1# S 4# S 5# X A, X B, X C : tempi di interarrivo (variabili aleatorie) O A, O B, O C : tempi operativi (variabili aleatorie) ogni utente sceglie lo sportello con meno persone

56 56 A 1# B 1# S 1# S 2# Caso di studio 3: Simulazione Discreta S 3# a Eventi uscita (continua) # Eventi simulati: #C ingressi (A i, B i, C i S) e uscite (Āi, B 3 #C 2 #C 1# 4# i, Ci ), mantenuti in una priority queue Q S 5# A 1# B 1# B 2# C 1# A 2# C 1# B 1# B 3# A 1# C 2# B 3# B 4# A 3# A 2# C 3# B 2# C 3# C 2# asse$temporale$ t# Al tempo t in Q (in ordine di priorità) ho: B 3 Ā 1 C 2 A 3 Ā 2 B 2 che sono stati generati nel seguente ordine: Ā 1 B 3 B 2 C 2 A 3 Ā 2 Simulazione = ciclo di estrazioni e inserzioni da/in Q La rimozione di A i dalla coda fa inserire A i+1 e Āi e incrementare il tempo di attesa allo sportello scelto. Invece, la rimozione di Ā i fa decrementare il tempo di attesa allo sportello. Idem per B i e C i

57 57 Esercizio Progettare e analizzare un algoritmo per rimuovere da uno heap P con n entry la entry P[j] (1 j n), ripristinando poi le proprietà dello heap. Idea: Svolgimento P[j] P[last ] ripristina le proprietà dell heap P[j]! P[last]!

58 58 P[(!j/2"(]=(e 0( =(<k 0(,v 0 > ( P[j]( (e=p[last]( e=<k,v>( Tre casi: P[2j]=e 1( 1. k 0 k min{k 1, k 2 } OK P[2j+1]=e 2( 2. k < k 0 ( k < min{k 1, k 2 }) up-heap bubbling a partire da P[j] e i =<k i(,v i( >(,(i=1,2( N.B. Siamo nella condizione in cui uniche coppie discendente-antenato che violano heap-order property sono P[j],P[l] con P[l] antenato di P[j] 3. k > min{k 1, k 2 } ( k > k 0 ) down-heap bubbling a partire da P[j] N.B. Siamo nella condizione in cui uniche coppie discendente-antenato che violano heap-order prop. sono P[j],P[l] con P[l] discendente di P[j]

59 59 Algoritmo removeentry(p,j) Input: Heap P con n= last entry, j : 1 j n Output: Heap P con n 1 entry ottenuto rimuovendo P[j] P[j] P[last ]; /* Caso2: up-heap bubbling a partire da P[j] */ while j > 1 and P[j].getKey()< P[ j/2 ].getkey() do swap (P[j], P[ j/2 ] ); j j/2 ; if 2j last then i indice figlio di P[j] con chiave minima; /* Caso 3: down-heap bubbling a partire da P[j] */ while 2j last and P[j].getKey()> P[i].getKey() do swap (P[j], P[i] ); j i; if 2j last then i indice figlio di P[j] con chiave minima; Osservazione: il Caso 1 si ha quando nessuno dei due cicli while viene eseguito

60 60 Complessità: Ripetendo l analisi dei metodi insert e removemin si vede che ciascun ciclo while esegue O (log n) iterazioni. Esiste un istanza per la quale il secondo ciclo while esegue Ω (log n) iterazioni (j = 1 e P[last] che contiene la entry con chiave massima) Complessità:Θ (log n)

61 Esempio (solo chiavi) 61 3" 7" 4" 20" 9" 8" 13" 22" 23" 10" 11" 21" Rimuovi"P[2]%

62 62 3" 7" 4" 20" 9" 8" 13" 22" 23" 10" 11" 21" Rimuovi"P[2]%

63 63 Caso"3# 3" 21# 4" 20" 9" 8" 13" 22" 23" 10" 11"

64 64 3" 9" 4" 20" 10" 8" 13" 22" 23" 21" 11"

65 65 3" 9" 4" 20" 10" 8" 13" 22" 23" 21" 11" Rimuovi"P[8]%

66 66 Caso"2" 3" 9" 4" 20" 10" 8" 13" 11" 23" 21"

67 67 3" 9" 4" 11" 10" 8" 13" 20" 23" 21"

68 68 Esercizio (C-9.34 [GTG14]) Progettare un algoritmo che dato uno heap T con n entry e una chiave k stampi tutte le entry in T con chiave k. La complessità deve essere proporzionale al numero di entry stampate (+1 nel caso siano 0). Svolgimento Soluzione Banale Invocare removemin() sino a quando T [1].getKey() k. Se m è il numero di entry stampate, la complessità è O (m log n). Non è difficile trovare un istanza per cui la complessità di questa strategia sia Θ (m log n). Possiamo fare meglio?

69 69 Soluzione migliore Idea: Le entry con chiave k formano un sottoalbero T (eventualmente vuoto) radicato nella radice e senza buchi Le foglie di T sono i nodi che hanno entry con chiave k ma i cui figli hanno entri con chiave > k. visita in preorder di T T T

70 70 Soluzione migliore (continua) Algoritmo Print(T,i,k): Input: Heap T, indice i [1, last], chiave k Output: stampa le entry con chiave k nel sottoalbero con radice T [i] if T [i].getkey() k then stampa T [i]; if 2i last and T [2i].getKey() k then Print(T,2i,k); if 2i + 1 last and T [2i + 1].getKey() k then Print(T,2i + 1,k); Prima invocazione: i = 1 Complessità: come la visita in preorder di T Θ (m + 1)

71 Esercizio (C-9.36 [GTG14]) Siano T 1 e T 2 due alberi binari (non necessariamente completi e implementati tramite struttura linkata) i cui nodi memorizzano delle entry in modo da soddisfare la heap-order property. Descrivere un algoritmo per combinare T 1 e T 2 in un unico albero binario T i cui nodi contengano tutte le entry di T 1 e T 2, mantenendo la heap-order property. La complessità dell algoritmo deve essere O (h 1 + h 2 ), dove h 1 e h 2 rappresentano le altezze di T 1 e T 2, rispettivamente. Idea: 1 si rimuove una foglia v da T 1 ; Svolgimento 2 si crea un nuovo radice r contenente la entry e precedentemente contenuta in v, assegnandole T 1 e T 2 come figli sx e dx, rispettivamente; 3 si esegue il down-heap bubbling a partire da r. La scrittura dello pseudocodice e l analisi sono lasciati come esercizio. 71

72 Esempio domande prima parte 72 Dare la definizione di heap. Definire il level numbering indicandone la principale proprietà. Descrivere l implementazione del metodo removemin per uno heap P realizzato tramite array, e analizzarne la complessià.

73 Errata 73 Cambiamenti rispetto alla prima versione dei lucidi: Lucido 19: Modificato il punto finale Lucidi 22 e 23: invertito l ordine dei due lucidi.

Dati e Algoritmi 1: A. Pietracaprina. Alberi Binari

Dati 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

Dettagli

Nozioni di base (II Parte)

Nozioni di base (II Parte) Nozioni di base (II Parte) 1 Ricorsione [GTG14, Par. 5.1-5.4 and 13.1] Algoritmo Ricorsivo: algoritmo che invoca se stesso (su istanze sempre più piccole) sfruttando la nozione di induzione. La soluzione

Dettagli

Problemi di ordinamento

Problemi 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Alberi

Dati e Algoritmi 1: A. Pietracaprina. Alberi Dati e Algoritmi 1: A. Pietracaprina Alberi 1 Cos è un albero? root$ Albero Informalmente: collezione di nodi; collegamenti: minimali (che garantiscano la connessione); di tipo padre-figlio struttura gerarchica

Dettagli

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

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca Interval Tree un albero binario di ricerca le

Dettagli

Esercizio. Strutture Dati

Esercizio. Strutture Dati Esercizio Si scriva un metodo public Position sibling(position v) che preso in input un nodo v restituisca il fratello di v. Il metodo dovrà lanciare una BoundaryViolationException nel caso in cui

Dettagli

ADT albero binario completo

ADT albero binario completo ADT albero binario completo Un albero binario completo è un albero binario in cui ogni livello, fino al penultimo, è completamente riempito. L'ultimo livello è riempito da sinistra a destra a 1 nodo b

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 6 novembre 2008 Heap binari: definizione Un heap binario è una albero binario quasi completo

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Code di priorità (Heap e heap_sort) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi,

Dettagli

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa: Come nella Mappa: un Dizionario è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore. ogni elemento (k,v) viene detto entrata (entry) del Dizionario. chiavi

Dettagli

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

Code con priorità. Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna. Code con priorità Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna marzolla@cs.unibo.it http://www.moreno.marzolla.name/ Copyright 2009 2012 Moreno Marzolla, Università di Bologna

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi

Dettagli

Un heap binario è un albero binario con le seguenti caratteristiche:

Un heap binario è un albero binario con le seguenti caratteristiche: Heap Un heap binario è un albero binario con le seguenti caratteristiche: È quasi completo: tutti i livelli, tranna al più l ultimo sono completi e le foglie dell ultimo livello sono tutte adossate a sinistra.

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Text Processing

Dati e Algoritmi 1: A. Pietracaprina. Text Processing Dati e Algoritmi 1: A. Pietracaprina Text Processing 1 Campi Applicativi text editing web searching computational biology (e.g., DNA analysis) vision... 2 Definizioni Stringa P P P[0]P[1]... P[m 1] (lunghezza

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Alberi Generali

Dati e Algoritmi 1: A. Pietracaprina. Alberi Generali Dati e Algoritmi 1: A. Pietracaprina Alberi Generali 1 Alexander Calder, Arc of Petals, 1941. Peggy Guggenheim Collection, Venice. 2 Nozione (informale) di Albero Collezione di nodi caratterizzata una

Dettagli

Heap e code di priorità

Heap e code di priorità Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Dimostrare che un albero non vuoto con n nodi interni, dove ogni nodo interno ha almeno

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Esercitazione 7 Domenico Fabio Savo 1 Esercitazione: heap Abbiamo visto come utilizzare i MAX-HEAP nell'algoritmo di ordinamento heapsort che permette di ordinare un array di

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi 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

Dettagli

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

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi Parte prima 1) Si dimostri il teorema sulla limitazione inferiore per il tempo asintotico di esecuzione nel caso

Dettagli

Alberi Binari Alberi Binari

Alberi Binari Alberi Binari Alberi Binari Alberi Binari Un albero binario è una collezione di elementi organizzati in modo non sequenziale secondo un grafo aciclico caratterizzato da Radice Due sotto-alberi (il sotto-albero destro

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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]

Dettagli

Alberi binari e alberi binari di ricerca

Alberi 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

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 27 marzo 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Alberi binari e alberi binari di ricerca

Alberi 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

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE 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

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare alfabeticamente lista di nomi, o insieme

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

In questa lezione. Costruire un max-heap. [CLRS01] cap. 6 par Prof. E. Fachini - Intr. Alg.

In questa lezione. Costruire un max-heap. [CLRS01] cap. 6 par Prof. E. Fachini - Intr. Alg. In questa lezione Costruire un max-heap [CLRS01] cap. 6 par. 6.3!1 Heapsort: analisi Heapsort(A) Build-Max-Heap(A) for i = A.length downto 2 do scambia A[1] e A[i] A.heap-size = A.heap-size - 1 Max-Heapify

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Algoritmi e Strutture Dati. Capitolo 6 Il problema del dizionario

Algoritmi 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

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Dettagli

Alberi ed Alberi Binari

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

Dettagli

Alberi binari e alberi binari di ricerca

Alberi 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

Dettagli

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

Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:

Dettagli

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

ALBERI : 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

Dettagli

Spesso sono definite anche le seguenti operazioni:

Spesso sono definite anche le seguenti operazioni: Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:

Dettagli

Dizionari Liste invertite e Trie

Dizionari Liste invertite e Trie Dizionari Liste invertite e Trie Lucidi tratti da Crescenzi Gambosi Grossi, Strutture di dati e algoritmi Progettazione, analisi e visualizzazione Addison-Wesley, 2006 Dizionari Universo U delle chiavi

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Alberi Generali

Dati e Algoritmi 1: A. Pietracaprina. Alberi Generali Dati e Algoritmi 1: A. Pietracaprina Alberi Generali 1 Alexander Calder, Arc of Petals, 1941. Peggy Guggenheim Collection, Venice. 2 Cos è un albero? root$ Albero Informalmente: collezione di nodi; collegamenti:

Dettagli

Problem Set 2 docente: Luciano Gualà

Problem Set 2 docente: Luciano Gualà Problem Set 2 docente: Luciano Gualà Esercizio 1 (equazioni di ricorrenza) Si risolvano le seguenti equazioni di ricorrenza. Si assuma sempre T (costante) = O(1). (a) T (n) = T (n 10) + 10. (b) T (n) =

Dettagli

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: 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

Dettagli

In questa lezione. Code di priorità. [CLRS01] cap. 6 da pag. 114 a pag Prof. E. Fachini - Intr. Alg. lunedì 17 settembre 2012

In questa lezione. Code di priorità. [CLRS01] cap. 6 da pag. 114 a pag Prof. E. Fachini - Intr. Alg. lunedì 17 settembre 2012 In questa lezione Code di priorità [CLRS01] cap. 6 da pag. 114 a pag. 117 1 Coda di priorità: cos è? Una coda di priorità è una struttura dati dinamica che permette di gestire dei dati con chiave numerica,

Dettagli

Moltiplicazione veloce di interi

Moltiplicazione veloce di interi Moltiplicazione veloce di interi Ogni numero intero w di n cifre può essere scritto come 10 n/2 w s + w d w s indica il numero formato dalle n/2 cifre più significative di w w d denota il numero formato

Dettagli

Algoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola

Algoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola Algoritmi e strutture dati 16 Dicembre 04 Canali A L e M Z Cognome Nome Matricola Problema 1 (6 punti) Determinare la funzione calcolata dal metodo mistero e la sua complessità computazionale in funzione

Dettagli

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

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 Ordinamenti 1 Vittorio Maniezzo Università di Bologna Grafo : definizione Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici Un arco a= {u,v}

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non

Dettagli

heap concetti ed applicazioni

heap 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

Dettagli

Alberi binari: definizione e alcune proprietà

Alberi binari: definizione e alcune proprietà Alberi binari: definizione e alcune proprietà Alberi binari Un albero binario è un albero con radice in cui ogni nodo ha al più due figli. In maniera più formale: Definizione. (Alberi binari) Un albero

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte)

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte) Dati e Algoritmi 1: A. Pietracaprina Grafi (II parte) 1 Breath-First Search (algoritmo iterativo) Si assume una rappresentazione tramite liste di adiacenza. L ordine con cui si visitano i vicini di un

Dettagli

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

In questa lezione. Alberi binari: [CLRS09] cap. 12 per la visita inorder. visite e esercizi su alberi binari. Prof. E. Fachini - Intr. Alg. In questa lezione Alberi binari: visite e esercizi su alberi binari [CLRS09] cap. 12 per la visita inorder!1 Visita inordine di un albero binario visita inordine(x) se l albero x non è nullo allora visita

Dettagli

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

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

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi

Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 (Esercizio C-14.34 del testo [GTG14]) Sia G = (V, E) un grafo non diretto con n =

Dettagli

Multi-way search trees

Multi-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(

Dettagli

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE

Prova 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).

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing

Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T un testo di n caratteri e P un pattern di m n caratteri e si supponga che

Dettagli

Dato un insieme S di n elementi totalmente ordinato, l'algoritmo di ordinamento detto HeapSort ha le seguenti caratteristiche:

Dato un insieme S di n elementi totalmente ordinato, l'algoritmo di ordinamento detto HeapSort ha le seguenti caratteristiche: Heapsort Dato un insieme S di n elementi totalmente ordinato, l'algoritmo di ordinamento detto HeapSort ha le seguenti caratteristiche: T(n) = O(n log(n)) Alg. Ordinamento ottimale Ordina in loco (niente

Dettagli

Ordinamenti. Vittorio Maniezzo Università di Bologna

Ordinamenti. Vittorio Maniezzo Università di Bologna Ordinamenti 1 Vittorio Maniezzo Università di Bologna Grafo : definizione Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici Un arco a= {u,v}

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi svolti sull Ordinamento

Dati e Algoritmi I (Pietracaprina) Esercizi svolti sull Ordinamento Dati e Algoritmi I (Pietracaprina) Esercizi svolti sull Ordinamento Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si consideri l esecuzione di MergeSort su un istanza di taglia n, con 2 d

Dettagli

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

ADT 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:

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso

Dettagli

Strutture Merge-Find

Strutture Merge-Find Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria Università di Bologna moreno.marzolla@unibo.it http://www.moreno.marzolla.name/ Struttura dati per insiemi disgiunti Operazioni fondamentali:

Dettagli

ADT Coda con priorità

ADT Coda con priorità Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni

Dettagli

Divide et impera su alberi

Divide et impera su alberi Divide et impera su alberi Caso base: peru = null o una foglia Decomposizione: riformula il problema per i sottoalberi radicati nei figli di u. Ricombinazione: ottieniilrisultatoconricombina 1 Decomponibile(u):

Dettagli

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

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114 In questa lezione Heapsort ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 11 1 Paternità L heapsort è stato pubblicato da J. W. J. Williams nel 106. Pochi mesi

Dettagli

Tipi di dato e Strutture dati elementari

Tipi di dato e Strutture dati elementari Tipi di dato e Strutture dati elementari Ing. Paolo Craca Anno accademico 2007/2008 Tipi di dato e Strutture dati elementari 1 / 40 Cosa vedremo in questo seminario 1 Introduzione 2 Pile 3 Code 4 5 Bibliografia

Dettagli

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

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 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 Alberi binari Giovanna Melideo melideo@di.univaq.it 1 Alberi

Dettagli

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

23/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:

Dettagli

Tutoraggio Informatica Generale Inserimento e cancellazione in un ABR Counting Sort

Tutoraggio 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

Dettagli

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

Esercizi 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati. HeapSort Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene

Dettagli

In questa lezione. Heap binario heapsort. [CLRS10] cap. 6, par Prof. E. Fachini - Intr. Alg.

In questa lezione. Heap binario heapsort. [CLRS10] cap. 6, par Prof. E. Fachini - Intr. Alg. In questa lezione Heap binario heapsort [CLRS10] cap. 6, par. 6.1-6.4!1 Heap binari Un heap binario è una struttura dati consistente di un array visto come un albero binario. A= 5 60 65 30 50 18 40 25

Dettagli

Gli heap. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

Gli heap. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Gli heap Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino 1 a.a. 2001/2002 Sommario Gli heap L algoritmo Heapsort Le code con priorità. 2 a.a. 2001/2002 Politecnico

Dettagli

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni

Dettagli

Ordinamento per inserzione e per fusione

Ordinamento per inserzione e per fusione Ordinamento per inserzione e per fusione Alessio Orlandi 15 marzo 2010 Fusione: problema Problema Siano A e B due array di n A e n B interi rispettivamente. Si supponga che A e B siano ordinati in modo

Dettagli

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.

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. 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 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel

Dettagli

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

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

Dettagli

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

Albero 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

Dettagli

Strutture dati per insiemi disgiunti

Strutture dati per insiemi disgiunti Strutture dati per insiemi disgiunti Servono a mantenere una collezione S = {S 1, S 2,..., S k } di insiemi disgiunti. Ogni insieme S i è individuato da un rappresentante che è un particolare elemento

Dettagli

Algoritmi e strutture dati

Algoritmi 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)

Dettagli

lezione 9 min-heap binario Heap e Alberi posizionali generali

lezione 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

Dettagli

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

Heap binomiali. Oltre alle precedenti operazioni fondamentali degli heap riunibili, sugli heap binomiali definiremo anche le due ulteriori operazioni: Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea un heap vuoto. Insert(H, ) : aggiunge il nodo allo heap. Minimum(H) : ritorna

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Visite di alberi m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

Dettagli

Alberi Binari di Ricerca

Alberi 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

Dettagli

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

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Algoritmi (9 CFU) (A.A. 2009-10) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Overview Definiamo la struttura dati heap Operazioni di costruzione e gestione di un heap Algoritmo Heapsort Code

Dettagli

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

Dati e Algoritmi 1: A. Pietracaprina. Mappa/Dizionario (I parte) Dati e Algoritmi 1: A. Pietracaprina Mappa/Dizionario (I parte) 1 Mappa/Dizionario Definizione generale Collezione di entry che supporta, come metodi principali: ricerca, inserimento, rimozione Vari ADT:

Dettagli

Heap e Code di Priorità

Heap 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

Dettagli

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

GLI 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

Dettagli

Esercizi BST - AVL. E. Fachini

Esercizi BST - AVL. E. Fachini Esercizi BST - AVL. Verifica che un ABR è un AVL 2. verifica bilanciamento in altezza di un ABR 3. Costruzione alberi di Fibonacci 4. Calcolo altezza albero AVL in O(lg n) 5. split di una ABR intorno a

Dettagli

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

Struttura 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

Dettagli