In questa lezione. Heap binario heapsort. [CLRS10] cap. 6, par Prof. E. Fachini - Intr. Alg.
|
|
- Fiora Lombardi
- 5 anni fa
- Visualizzazioni
Transcript
1 In questa lezione Heap binario heapsort [CLRS10] cap. 6, par !1
2 Heap binari Un heap binario è una struttura dati consistente di un array visto come un albero binario. A= Nel livello 0 mettiamo l elemento di indice 1. Proseguiamo riempiendo i livelli successivi da sinistra verso destra con gli elementi dell array, nell ordine in cui compaiono nell array.!2
3 Heap binari e alberi quasi completi A= Chiamiamo quasi completi gli alberi di questa forma: completi fino al penultimo livello, con le foglie al più su due livelli consecutivi e quelle del livello massimo tutte spostate a sinistra. Nel livello 0 mettiamo l elemento di indice 1. Nel livello i 1 disponiamo nell ordine gli elementi di indice compreso tra 2 i e 2 i+1-1. Se 2 k < n < 2 k+1, l albero ha k+1 livelli, altezza k e le foglie nei livelli k-1 e k, con quelle del livello k tutte di seguito a sinistra. Se n = 2 k+1-1 l albero ha k+1 livelli, ed è un albero completo di altezza k.!3
4 Heap binari A= In un albero è fondamentale poter risalire da figlio a padre o da padre a figlio. Supponiamo che nel livello i abbiamo gli elementi di indice m, m+1,m+2, nel livello successivo avremo gli indici 2m, 2m+1,2m+2,.. In generale A[2i] e A[2i+1] sono i figli di A[i] e A[i/2] è il padre di A[i].!4
5 Alberi binari qualunque in un arrays? Abbiamo detto che un heap binario è una struttura dati consistente di un array visto come un albero binario. Ma è anche vero che un qualsiasi albero può essere memorizzato in un array? Ricordiamo che memorizzare gli elementi di un albero significa poter risalire da padre a figlio e viceversa. A= ? ??? !5
6 Calcolo di figli e padri b a c 11 2 parent (i) return i/ d e f g 2 p i j m q left(i) return 2i right(i) return (2i+1) i/2 = scorrimento di una posizione a destra dei bit di i 2i = scorrimento a sinistra di una posizione e aggiunta di uno 0 a destra di i 2i +1 = scorrimento a sinistra di una posizione e aggiunta di un 1 a destra di i!6
7 A[parent(i)] A[i] Definizione di MaxHeap Diciamo che un heap binario A[1..n] è un max-heap se ogni elemento A[i] soddisfa la proprietà del maxheap, cioè se ogni elemento (tranne la radice) è minore o uguale a suo padre. In altri termini A[1..n] è un max-heap se ogni elemento A[i], diverso dalla radice, soddisfa la proprietà del max-heap: !7
8 Max-Heap A= Due attributi: A.length = 13 A.heapsize = 10 A.heapsize A.length Il massimo è contenuto nella radice Un array ordinato in ordine descrescente è un max-heap?!8
9 Definizione di MinHeap Diciamo che un heap binario A[1..n] è un min-heap se ogni elemento A[i] soddisfa la proprietà del minheap, cioè se ogni elemento (tranne la radice) è maggiore o uguale a suo padre. In altri termini A[1..n] è un min-heap se ogni elemento A[i], diverso dalla radice, soddisfa la proprietà del min-heap: A[parent(i)] A[i] !9
10 heap binario: altezza Sappiamo che l altezza h di un albero binario con n nodi é almeno la parte intera inferiore di lg n. Dimostriamo che h è anche al più la parte intera inferiore di lg n. Prendiamo l albero T, completo e di altezza h-1 e aggiungiamo una foglia: h T = T h-1 numnodi(t) = h-1 Σ i=0 2 i = 2 h - 1 T è l albero quasi completo di altezza h con il minimo numero di nodi e numnodi(t ) = 2 h. Quindi per ogni albero quasi completo con n nodi e di altezza h vale che n 2 h lg n h!10
11 Determinare il massimo in un maxheap è immediato A= Heap-Maximum (A) 16 return A[1] Θ(1) x =!11
12 L operazione di estrazione del massimo A= x = 14?? Dopo l operazione bisogna avere un MaxHeap con un elemento in meno !12
13 estrazione del massimo A= x = 16?? Se mettessi alla radice il più grande tra i figli? Non va perchè non ritrovo un albero della forma voluta! !13
14 A= Estrazione Massimo Proprietà MaxHeap violata alla radice max = A= !14
15 ripristino proprietà del Max-heap !15
16 Max-Heapify Max-Heapify (A,i) Input: A è un array e i è un indice Prec: i figli o il figlio di A[i] sono radici di un max-heap, mentre A[i] può essere più piccolo dei suoi figli o di suo figlio Output: A[i] è radice di un max-heap se A[i] ha due figli prendiamo il figlio con valore massimo se ha un figlio prendiamo quell'unico figlio confrontiamo il valore di A[i] con quello del figlio selezionato se il valore del figlio è maggiore di quello del padre, li scambiamo e proseguiamo nello stesso modo sul figlio fino a quando la proprietà è ristabilita.!16
17 Max-Heapify (A,i) Input: A è un array e i è un indice Prec: A[left(i)] e A[right(i)] sono radici di max-heap mentre A[i] può essere più piccolo dei suoi figli Postc: A[i] è radice di un max-heap max = i while max == i do if (2i +1 A.heap.size) then if (A[2i+1] > A[2i]) then max = 2i+1 else max = 2i (tra i due figli, se ci sono, si prende l indice del massimo) elseif (2i A.heap-size) then max = 2i (max è l indice del figlio sinistro se c è) if (A[max] > A[i]) then scambia A[i] e A[max] i = max else max = i+1 (max i per uscire dal ciclo nel caso che i sia una foglia)!17
18 Max-Heapify: esempio di esecuzione i= i= i= max = i = 2, A[4] = 7 e A[5] = 8 quindi max = 5 A[max] > A[2] quindi si scambiano e i = max = 5, si ripete, ora max = 10, ma A[10] > A[5], si scambiano e i = max = 10, ora però i due if danno falso e A[i] = A[max], perché i=max, e max diventa i+1 per uscire dal ciclo!18
19 Max-Heapify: complessità Max-Heapify (A,i) max = i while max == i do if (2i +1 A.heap.size) then if (A[2i+1] > A[2i]) then max = 2i+1 else max = 2i (tra i due figli, se ci sono, si prende l indice del massimo) else if (2i A.heap-size) then max = 2i (al più c è il figlio sinistro) if (A[max] > A[i]) then scambia A[i] e A[max] i = max else max = i+1 (se A[max] <= A[i] si esce dal ciclo) Ad ogni esecuzione del ciclo si scende di padre in figlio, quindi al più si va dalla radice alla foglia più lontana. Caso peggiore: T(n) = Θ(log n)!19
20 Rimozione del massimo(a) Heap-Extract-Max (A) Input: A è un array Prec: A è un max-heap Postc: dà in output il massimo, che viene rimosso da A rispristinando la proprietà del max-heap if A.heap.size < 1 then error l heap è vuoto max = A[1] A[1] = A[A.heap.size] A.heap.size = A.heap.size - 1 O(lg n), Max-Heapify (A,1) return max n = heap-size(a)!20
21 Esercizio 3 più grande Sia dato un max-heap H di n interi. Dove può trovarsi il terzo intero più grande? Si progetti un algoritmo per trovare il terzo intero più grande in tempo costante. Discutere la correttezza dell'algoritmo proposto.
22 Esercizio 3 più grande Sia dato un max-heap H di n interi. Dove può trovarsi il terzo intero più grande? Si progetti un algoritmo per trovare il terzo intero più grande in tempo costante. Discutere la correttezza dell'algoritmo proposto. Soluzione: il terzo intero più grande può trovarsi nel primo o nel secondo livello. Infatti un elemento del terzo livello ha almeno 3 elementi più grandi, quelli che determinano un cammino dall elemento alla radice
23 Esercizio il minimo Dato un max-heap dove può trovarsi il minimo tra le chiavi memorizzate? Si scriva un algoritmo iterativo per calcolare il minimo in un max-heap.
24 Esercizio il minimo Dato un max-heap dove può trovarsi il minimo tra le chiavi memorizzate? Si scriva un algoritmo iterativo per calcolare il minimo in un max-heap. Soluzione: il minimo può trovarsi solo tra le foglie. Infatti i figli di ogni elemento sono più piccoli di lui
25 Pseudocodice per il minimo Soluzione: il minimo può trovarsi solo tra le foglie. Infatti i figli di ogni elemento sono più piccoli di lui MinimoInMax-Heap (A) input: un max-heap A output: il minimo in A n= A.heapsize minind = n/2+1 for i = n/2+2 to n do if A[minInd] > A[i] then minind = i return minind
26 Esercizio estrazione massimo Dato un MaxHeap di n > 2 elementi diversi, qual è il minimo numero di scambi padre-figlio necessari nella rimozione del massimo, indipendentemente dal valore di n? Si dia un esempio di MaxHeap con n = 7 elementi in cui si realizza tale minimo.
27 Esercizio Heap Soluzione: basterà un solo scambio padre figlio se la foglia più a destra è nel sotto albero destro, la radice del sotto albero sinistro ha un valore maggiore di tutti gli elementi nel sotto albero destro mentre quelli nel sotto albero sinistro diversi dalla sua radice sono minori dell elemento nell ultima foglia. Esempio, estrazione del massimo:
28 Heapsort A n maxheap A n ordinati A n Prof. E. Fachini - Intr.Alg. %28
29 Heapsort: l idea maxheap A n In un maxheap, il massimo si trova nella prima posizione mentre in un array ordinato in ordine crescente dovrebbe stare nell ultima. Se si scambiassero i due elementi avrei sistemato un elemento, e considerando come maxheap gli elementi di A da 1 a n-1, otterrei una situazione che la maxheapify può risolvere: solo il primo elemento in A[1:n-1] viola la proprietà del max-heap. Prof. E. Fachini - Intr.Alg. %29
30 maxheap A n maxheap ordinati A 1... i... n In un passo intermedio gli elementi da 1 a i sono un maxheap, mentre i rimanenti da i+1 a n sono ordinati e sono più grandi di quelli nel maxheap. Come posso espandere la zona degli ordinati? Prof. E. Fachini - Intr.Alg. %30
31 In un passo intermedio gli elementi da 1 a i sono un maxheap, mentre i rimanenti da i+1 a n sono ordinati e sono più grandi di quelli nel maxheap. maxheap ordinati A 1... i... n Per espandere la zona degli ordinati, basta osservare che mettendo il primo elemento nel maxheap nella posizione i, abbiamo esteso di uno la porzione degli ordinati, visto che è il massimo tra i più piccoli di quelli già sistemati. L elemento di indice i va quindi al primo posto. Ma dopo questo scambio, occorre ripristinare la proprietà di essere MaxHeap sui primi i-1 elementi, perché può essere violata nella prima posizione. Prof. E. Fachini - Intr.Alg. %31
32 L algoritmo heapsort 1. trasforma l array dato in un max-heap 2. scambia il primo (è il massimo!) e l ultimo elemento del maxheap 3. riduci la dimensione del maxheap 4. ripristina la proprietà del maxheap sugli elementi iniziali, 5. ripeti i passi 2-4 fino a che tutto l array è ordinato!32
33 Heapsort: più dettaglio Heapsort(A) A.length= n Trasforma A in un MaxHeap for i = A.length downto 2 do In ogni passo gli elementi A[1.. i] costituiscono un maxheap su i elementi di A, gli elementi A[i+1.. n] sono più grandi di quelli in A[1.. i] e sono ordinati in ordine crescente scambia A[1] e A[i] A.heap-size = A.heap-size - 1 Max-Heapify (A,1)!33
34 Heapsort: esempio trasformato in un maxheap scambio Max-Heapify!34
35 Heapsort: esempio Max-Heapify scambio Max-Heapify!35
36 Heapsort: esempio Max-Heapify scambio Max-Heapify!36
37 Heapsort: esempio Max-Heapify !37
38 Heapsort: analisi Heapsort(A) n = A.length trasforma A in un Maxheap for i = n downto 2 do scambia A[1] e A[i] A.heap-size = A.heap-size - 1 Max-Heapify (A,1) n = A.length O(n) Θ(1) Θ(1) O(n log n) O(log n) In tutti i casi, per l Heapsort T(n) = O(n log n) Inoltre l Heapsort ordina in loco, cioè non usa memoria aggiuntiva più che costante. Faremo vedere in seguito come trasformare un array qualunque in un maxheap in tempo lineare.!38
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
DettagliIn 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
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
DettagliIntroduzione 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
DettagliIn 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,
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliHeap, heapsort e code a priorità. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino
Heap, heapsort e code a priorità Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Heap Definizione: albero binario con proprietà strutturale: quasi completo (tutti i livelli completi,
DettagliEsercitazione 3. Heapsort
Esercitazione Heapsort Heapsort Algoritmo di ordinamento che utilizza una struttura dati detta heap per la gestione delle informazioni Tempo di esecuzione O(n lg n) Heap (binario) = struttura dati composta
DettagliAlgoritmi 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,
DettagliEsercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
DettagliAlbero binario: Ogni nodo ha zero, uno, o due successori (ordinati)
Heap 1 Vittorio Maniezzo - Università di Bologna Alberi binari Albero binario: Ogni nodo ha zero, uno, o due successori (ordinati) Albero binario completo: Tutte le foglie hanno la stessa profondità e
DettagliADT 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
DettagliDato 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
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
DettagliEsercizio 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
DettagliAlgoritmi (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
DettagliGli 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
DettagliHeap Ordinamento e code di priorità. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 9
Heap Ordinamento e code di priorità Heap: definizione Definizione. Uno Heap (binario) è un albero binario finito i cui vertici sono etichettati da elementi di un insieme linearmente ordinato (chiavi),
DettagliAlgoritmi 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
DettagliProblemi di ricerca in insiemi ordinati
Problemi di ricerca in insiemi ordinati Abbiamo visto che, per trovare un elemento in un insieme ordinato, con l algoritmo della ricerca binaria restringiamo l intervallo della ricerca alla metà in ogni
DettagliIn 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
DettagliEsercizi 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
DettagliAlgoritmi 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
DettagliIn questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort
In questa lezione Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort [CLRS] par. 2.3. Prof. E. Fachini - Intr. Alg.!1 Progettazione di
DettagliCode 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:
DettagliLaboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L
DettagliEsercizi 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,
DettagliINTRODUZIONE AGLI ALGORITMI 25 Giugno 2018 Prof.ssa Fachini/Prof.ssa Petreschi I PARTE
INTRODUZIONE AGLI ALGORITMI 25 Giugno 2018 Prof.ssa Fachini/Prof.ssa Petreschi I PARTE 1. Definire il concetto di stabilità di un algoritmo di ordinamento e dire se, e sotto quali ipotesi, i seguenti algoritmi
DettagliEsercizi 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,
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 HEAP SORT StudentiDIA Forum
DettagliSi imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione.
parte II - A 2 Si consideri la seguente funzione: analizzami(int n) c = 1 k = n*n while k > 1 do k = k/2 for i = 0 to 3 do if n >1 then analizzami(n/4) Si imposti la relazione di ricorrenza che ne descrive
DettagliAlgoritmi 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
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
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:
DettagliAlgoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc m.franceschet@unich.it Algoritmi e Strutture di Dati I 2 Problema dell ordinamento
DettagliAlgoritmi di ordinamento: Array e ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Insertion Sort Quicksort Heapsort Indice
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
DettagliEsercizi su ABR. Prof. E. Fachini - Intr. Alg. 1
Esercizi su ABR Confronto proprietà ABR e Max-Heap. Verifica stato dell albero a seguito di inserimento e cancellazione di uno stesso elemento e viceversa. Proprietà del cammino radice-foglia individuato
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
DettagliUn 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.
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
DettagliSommario. Un algoritmo di ordinamento di complessità lineare: CountingSort. [CLRS10] cap. 8 par.8.2
Sommario Un algoritmo di ordinamento di complessità lineare: CountingSort [CLRS10] cap. 8 par.8.2!1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento
DettagliIn questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione
In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione Prof E Fachini - Intr Alg 1 MergeSort: correttezza MergeSort (A,p,r) if p < r then
DettagliHeap 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
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).
DettagliEsercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
DettagliComplementi di Algoritmi e Strutture Dati. Soluzioni prova scritta 7 giugno 2017
Complementi di Algoritmi e Strutture Dati (III anno Laurea Triennale - a.a. 2016/17) Soluzioni prova scritta 7 giugno 2017 Esercizio Union find (punti 6) Considerare la foresta union-find sottostante e
DettagliDati 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
DettagliProblem Set 3 docente: Luciano Gualà
Problem Set 3 docente: Luciano Gualà Esercizio (una domanda semplice ma non troppo) Dire se può esistere un algoritmo di ordinamento basato su confronti che ordina un insieme di 8 elementi facendo nel
DettagliIntroduzione agli Algoritmi Appello esame del 2 luglio 2015 Prof. Emanuela Fachini (canale 1) e Prof. Irene Finocchi (canale 2) Parte 1
Parte 1 Le risposte non motivate non saranno prese in considerazione. Negli esercizi di progettazione, prima di passare allo pseudocodice descrivete l'idea algoritmica soggiacente. Per tutti gli algoritmi
DettagliCalcolare lo Span di un array di numeri
Calcolare lo Span di un array di numeri Altro esempio di come usare una pila come struttura dati ausiliaria per un algoritmo: Dato un array X, lo span S[i] di X[i] è il massimo numero di elementi consecutivi
DettagliEsercizio. 2 i=i*2) j=j*2)
Esercizio 1 Esercizio 2 i=i*2) j=j*2) Soluzione Il frammento è composto da due parti quasi identiche. L unica differenza è il modo in cui crescono i contatori. Nella prima parte la crescita è lineare mentre
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
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;
DettagliDipartimento di Elettronica, Informazione e Bioingegneria API 2013/4
Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Heap sort; ordinamento senza confronti @ G. Gini 2013 Ordinamento per confronti: complessita' Esistono altri algoritmi di ordinamento
DettagliDati 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
DettagliLaboratorio 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
DettagliHeap 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
DettagliUniversità degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati
Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati Docente: Maria Rita Di Berardini 19 dicembre 2007 Nome: Cognome: N.Matricola: Note:
DettagliAlberi 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
DettagliOrdinamento 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
DettagliAlgoritmi 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
DettagliDati 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
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
DettagliIl problema delle azioni
Il problema delle azioni Per studiare l andamento del mercato azionario bisogna seguire i prezzi delle azioni in un lasso di tempo abbastanza lungo, diciamo n giorni. Se si dispone dei prezzi di un azione
DettagliDati 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
DettagliAlberi 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
DettagliNote per la Lezione 4 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che
DettagliAlgoritmi 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
DettagliEsercizi vari. Alberto Montresor. 19 Agosto, 2014
Esercizi vari Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive soluzioni
DettagliOrdinamenti. 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}
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
DettagliEsercizi per il corso di Algoritmi
1 Esercizi per il corso di Algoritmi Esercizi sulla Tecnica Programmazione Dinamica 1. Esercizio: Si consideri la seguente variante del problema dello Zaino 0/1. L input é costituito da n oggetti a 1...,a
DettagliAlgoritmo di ordinamento sul posto che ha tempo di esecuzione :
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
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi
DettagliEfficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale
Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente! Qualche problema computazionale " Trova min " Selection sort! Pseudocodice per descrivere algoritmi " Variabili
DettagliTecniche Algoritmiche: tecnica greedy (o golosa)
Tecniche Algoritmiche: tecnica greedy (o golosa) Una breve (ma non troppo) presentazione F. Damiani - Alg. & Lab. 04/05 Problemi di ottimizzazione (1/2) La tecnica greedy è usata per risolvere problemi
DettagliAlgoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità
DettagliAlgoritmi 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
DettagliSommario. Algoritmi di ordinamento lineari: CountingSort. BucketSort. RadixSort
Sommario Algoritmi di ordinamento lineari:! CountingSort! BucketSort! RadixSort 1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, nel
DettagliNozioni 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
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 3 Implementazioni dei dizionari ordinati Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio
DettagliAlgoritmi e Strutture Dati
Algoritmi di Ordinamento Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 13 novembre 2008 Il problema dell ordinamento Il problema dell ordinamento
DettagliUn algoritmo realizza una relazione funzionale tra i valori di input e quelli di output
Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di
DettagliAppunti di informatica. Lezione 10 anno accademico Mario Verdicchio
Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione
DettagliESERCIZI SUGLI HEAP BINOMIALI (CAPITOLO 20) Catalano Pietro 56/100592
ESERCIZI SUGLI HEAP BINOMIALI (CAPITOLO 20) Catalano Pietro 5/100592 20.1-1 Supponiamo che x sia un nodo di un albero binomiale contenuto in uno heap binomiale e che sibling[x] NIL. Se x non è una radice
DettagliProblemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come
Problemi e algoritmi Il che cosa e il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come effettuare un calcolo
DettagliCode 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
DettagliInformatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 13 - Gli algoritmi e la risoluzione di problemi Sommario Passi per la risoluzione di problemi Problemi di ricerca e ordinamento Algoritmi iterativi: la ricerca lineare
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliIntroduzione agli algoritmi Prova di esame del 30/6/2016 Prof.sse E. Fachini - R. Petreschi
B Introduzione agli algoritmi Prova di esame del 30/6/2016 Prof.sse E. Fachini - R. Petreschi Si consideri l operazione di inserimento in un AVL. Si supponga di trovarsi nel caso in cui una rotazione a
DettagliUn ordinamento con tempo di esecuzione in Θ(n lg n)
Un ordinaento con tepo di esecuzione in Θ(n lg n) Fondi (erge) Fondi(L,R,A) Input: L,R ed A sono array di, n e n+ eleenti prec: L e R sono ordinati, cioè L[0]... L[-1] e R[0] R[n-1] postc: A contiene gli
Dettagli