Esercizi per il corso di Algoritmi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercizi per il corso di Algoritmi"

Transcript

1 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 n di peso w 1,w 2,...,w n, e di valore v 1,v 2,...,v n, rispettivamente. Per ogni possibile v = 1,...,nV, dove V = max{v 1,...,v n }, e possibile indice i = 1,...,n, si intende calcolare la quantitá w(i,v) pari al minimo peso di un sottoinsieme di {a 1,...,a i } di profitto esattamente uguale a v (si puó assumere, per convenzione, che se non esiste un sottoinsieme di {a 1,...,a i } di profitto uguale a v, allora w(i,v) = ). Si determini una equazione di ricorrenza per i valori w(i,v), e si presenti un algoritmo di Programmazione Dinamica per il loro calcolo. 2. Esercizio: Siano dati un intero positivo T ed un insieme di interi positivi A = {a 1,...,a k }. Progettare un algoritmo di Programmazione Dinamica che ritorni il valore True se esiste o meno un sottoinsieme B A tale che T = b Bb, il valore False nel caso contrario. 3. Esercizio: Dati interi i, j, con 0 i j, i numeri Z(i, j) sono definiti dalla equazione di ricorrenza ZZ(i,j) = (i+5)z(i,j 1)+(j i+1)z(i 1,j 1), per j > 0 e i 0,j e dalle condizioni iniziali Z(0,j) = 1, per j 0, Z(i,0) = 1 per i 0, Z(j,j) = 0, per ogni j > 0. Si scriva un algoritmo di Programazione Dinamica che, prendendo in input interi A,B, con 0 A B, restituisca in output il corrispondente numero Z(A,B). Si analizzi la complessitá dell algoritmo proposto. 4. Esercizio: Si consideri la seguente variante del problema dello Zaino 0/1. L input é costituito da oggetti di peso w 1,w 2,...,w n, di valore v 1,v 2,...,v n, e da una capacitá di carico totale W. Si chiede di determinare il massimo valore di una collezione di oggetti, di peso totale al piú W, sotto la condizione che di ciascun oggetto ne possiamo prendere anche piú di una copia (nella variante studiata a lezione di ciascun oggetto si poteva prendere al piú una copia). Il seguente esempio illustra la differenza tra i problemi. Abbiamo 4 oggetti, di peso 6,3,4,2 e valore $30,$14,$16,$9, rispettivamente, e capacitá di carico W = 10. Se possiamo prendere di ciascun oggetto piú di una copia, allora una possibile soluzione potrebbe consistere nel prendere una copia del primo oggetto, e due copie del quarto oggetto (valore totale $48). Se possiamo prendere solo una copia di ogni oggetto, allora la migliore soluzione consiste nel prendere il primo oggetto ed il terzo oggetto (valore totale $46).

2 2 5. Esercizio: Siano dati un intero positivo t ed un insieme di interi positivi A = {a 1,...,a k }. Progettare un algoritmo di Programmazione Dinamica che ritorni il valore True se esistono o meno elementi a i1,...,a il (non necessariamente distinti) in A tali che l j=1 a i j = t, ritorni il valore False, nel caso contrario. 6. Esercizio: Dati interi k,n, con 0 k n, i numeri di Stirling del secondo tipo sono denotati con il simbolo { n k}, definiti dalla equazione di ricorrenza { { } { } n n 1 n 1 = k + k} k k 1 e dalle condizioni iniziali { } 0 = 1, 0 { n = 0 per n > 1, e 0} { n = 1, n. n} Si scriva un algoritmo di Programazione Dinamica che, prendendo in input interi k, n, con 0 k n, restituisca in output il corrispondente numero di Stirling { n k}. Si analizzi la complessitá dell algoritmo. 7. Esercizio: Dati interi k,n, con 0 k n, i numeri di Eulero sono denotati con il simbolo n k, definiti dalla equazione di ricorrenza n n 1 = (k +1) k k +(n k) n 1, n > 0 k 1 e dalle condizioni iniziali n n = 1, n 0, = 0, n > 0. 0 n Si scriva un algoritmo di Programazione Dinamica che, prendendo in input interi k,n, con 0 k n, restituisca in output il corrispondente numero di Eulero n k. Si analizzi la complessitá dell algoritmo. 8. Esercizio: Dati due vettori di interi A[1...n] e B[1...m], si vuole determinare il piú grande intero k per cui esistono indici 1 i 1 <... < i k min{n,m} per cui A[i 1 ] B[i 1 ],...,A[i k ] B[i k ]. Scrivere un algoritmo basato sulla Programmazione Dinamica per il calcolo di un tale k. 9. Esercizio: Scrivere un algoritmo basato sull tecnica della memoization per il calcolo della LCS di due sequenze. 10. Esercizio: Date n matrici M 1,...,M n, da moltiplicare nel prodotto M 1 M 2... M n, derivare l algoritmo di Programmazione Dinamica che calcola il minimo numero totale di moltiplicazioni scalari per effettuare il prodotto M 1 M 2... M n. 11. Esercizio: Descrivere il problema del Cambio delle Monete studiato a lezione, e derivare per esso un algoritmo di Programmazione Dinamica.

3 3 Esercizi sulla Tecnica Greedy 1. Esercizio: Si determini il codice di Huffman per il seguente insieme di caratteri e relative frequenze, basate sui primi 8 numeri di Fibonacci: a:1 b:1 c:2 d:3 e:5 f:8 g:13 h:21 Si descriva la forma che puó avere l albero che rappresenta il codice di Huffman, per un insieme generico di n caratteri, le cui frequenze siano i primi n numeri di Fibonacci. Si giustifichi la risposta. 2. Esercizio: Si intende riparare un tubo di gomma che ha n fori su di esso. Si rappresenti l iesimo ciascun foro con il numero x i, dove x i é la distanza, in centimetri, del foro i-esimo dalla estremitá sinistra del tubo. La riparazione avviene attaccando pezzi di nastro adesivo al tubo, dove ciascun pezzo di nastro adesivo é lungo k centimetri, k parametro dato. Il problema é quello di riparare il tubo (ovvero coprire tutti i buchi) utilizzando il minor numero di pezzi di nastro adesivo. Si consideri il seguente algoritmo greedy per il problema appena enunciato: si ordinino i numeri x i in modo tale che x 1 x 2... x n, indi si attacchi un pezzo di nastro adesivo al tubo, partendo dal buco x 1 fino a x 1 +k. Si iteri sui buchi rimasti scoperti, fin a quando tutti i buchi sono stati coperti. Si provi che tale algoritmo copre tutti i buchi utilizzando minor numero di pezzi di nastro adesivo. 3. Esercizio: Si supponga di dover effettuare un viaggio dalla localitá A alla localitá B con un auto che ha un autonomia di k chilometri. Lungo il percorso, a partire da A sono presenti n distributori di benzina, ciascuno distante dal precedente meno di k chilometri e l ultimo dista meno di k chilometri da B. Sia d i la distanza che separa il distributore i dal distributore i+1, per i = 1,2,...,n 1 e sia d n la distanza da B dell ultimo distributore. Descrivere un algoritmo greedy che seleziona un numero minimo di distributori in cui far tappa durante il viaggio. Giustificare le affermazioni fatte. 4. Esercizio: Si costruisca un codice di Huffman per il seguente insieme di caratteri e relative frequenze a:5 b:5 c:12 d:9 e:8 f:13 g:14 h:14 5. Esercizio: Si codifichi il testo abracaddabbrra! usando il codice di Huffman, da calcolarsi in via preliminare sulle relative frequenze dei caratteri cosí come essi appaiono nel testo.

4 4 6. Esercizio: Si applichi l algoritmo Greedy Activity Selector sul seguente insieme di attivitá: A = {A 1,A 2,...,A 11 }, con A 1 = [3,14], A 2 = [6,8], A 3 = [6,10], A 4 = [13,15], A 5 = [2,5], A 6 = [9,12], A 7 = [4,6], A 8 = [9,13], A 9 = [7,11], A 10 = [4,9], A 11 = [1,7], illustrandone il comportamento ad ogni passo. 7. Esercizio: Si descriva in dettaglio l algoritmo Greedy-Zaino frazionario per il problema dello zaino frazionario, e si provi che esso produce una soluzione ottima.

5 Esercizi su Code a Prioritá 1. Esercizio: Sia dato un Max-Heap rappresentato da un array A[1...n]. Si scriva un procedura (in pseudocodice, per favore)che, intempoo(logn), avendoininputaedunindicei,1 i n, cancelli l elemento A[i] dallo heap. L array in output dovrá ancora essere un Max-Heap. Si illustri la esecuzione dell algoritmo sul seguente heap, con i = 2 (L algoritmo puó usare, al suo interno, chiamata a procedure note viste a lezione, purché se ne spieghi chiaramente l utilizzo e la funzione) Esercizio: Si dia la rappresentazione mediante albero del Min-Heap: A = [1,4,5,9,8,7,6,10,11,15,12,13]. Si ridisegni sia l albero che il vettore corrispondente dopo l esecuzione delle seguenti operazioni: (a) Heap-Extract-Min(A), seguita da (b) Heap-Insert(A, 0) 3. Esercizio: Si assuma che n numeri diversi tra di loro siano memorizzati in un Min-Heap. Si dia un algoritmo che in tempo O(1) trovi il terzo elemento piú piccolo di A. Sotto l ipotesi che i sia costante, si dica come l i-esimo elemento piú grande di A possa essere trovato in tempo O(1). 4. Esercizio: Dato un array di n numeri A[1...n], si presenti un algoritmo che, avendo in input l array A, ritorni True se A rappresenta un Min-Heap, ritorni il piú piccolo indice i su cui la proprietá dello heap é violata, altrimenti. Si valuti la complessitá dell algoritmo proposto. 5. Esercizio: Si consideri la struttura dati Max-Heap e le seguenti affermazioni. Si indichino con un Si le affermazioni che sono vere, e con un No quelle false (qui n denota il numero di nodi dell albero). (a) La costruzione di un Max-Heap con n nodi richiede Ω(nlogn) nel caso peggiore; (b) (c) É possibile determinare l elemento di valore massimo in un Max-Heap in tempo Θ(1); É possibile determinare l elemento di valore minimo in un Max-Heap in tempo O(logn); (d) L altezza di un Max-Heap é Θ(n) nel caso peggiore; (e) L altezza di un Max-Heap é Θ(log n) nel caso peggiore; 5

6 6 (f) É possibile determinare il successore di un elemento in un Max-Heap in tempo Θ(logn) nel caso peggiore; (g) L inserimento di un nuovo elemento in un Max-Heap richiede tempo Ω(log n) nel caso peggiore; (h) La cancellazione di un elemento in un Max-Heap richiede tempo Θ(log n) nel caso peggiore. (i) Dato un Max-Heap, é possibile ordinare gli elementi che lo costituiscono in accordo ai loro valori chiavi in tempo O(n). (j) La ricerca di un elemento in un Max-Heap richiede tempo O(h), dove h é l altezza del Max-Heap. 6. Esercizio: Descrivere, con sufficiente precisione, una struttura dati che permetta la cancellazione e l inserimento di un elemento in tempo O(logn), e la restituzione sia del minimo che del massimo, e sia del secondo minimo e del secondo massimo, in tempo O(1). La struttura dati deve usare O(n) locazioni di memoria per memorizzare n numeri. 7. Esercizio: Scopo di quest esercizio é di studiare Heap ternari. Si consideri quindi un albero ternario completo di altezza h definito con le seguenti proprietá: (1) per 0 i < h ci sono 3 i nodi al livello i; (2) tutti i nodi interni al livello h 1 sono alla sinistra delle eventuali foglie che stanno a quel livello e hanno tutti 3 figli tranne, eventualmente quello più a destra. (Dati due nodi v e u sullo stesso livello, diciamo che v è alla sinistra di u se lo precede nella visita preorder.) Sia n il numero di nodi dell albero. a). Descrivere un implementazione efficiente dell albero ternario completo tramite un vettore. b). Si supponga di memorizzare n entry distinte nei nodi dellalbero (una entry per nodo) con la proprietà che un nodo ha chiave minore di quelle dei suoi figli. Si ottiene cosí uno heap ternario. Descrivere e analizzare un implementazione efficiente delle operazioni di inserimento di un nodo con chiave k in un tale heap, e di estrazione del minimo da tale heap. 8. Esercizio: Si argomenti su come sia possibile usare un Min-Heap per risolvere il problema di trovare l elemento di rango i in un array A[1...n]. Si valuti la complessitá dell algoritmo proposto in funzione sia di i che di n, si determinino i valori di i per cui l algoritmo abbia una complessitá simile a quella dell algoritmo Select(A,i) visto al corso, ed i valori di i per cui l algoritmo proposto abbia una complessitá peggiore di quella dell algoritmo Select(A, i).

7 7 9. Esercizio: Si esegua l algoritmo Costruisci-Min-Heap(A) sul vettore A = [15, 18, 16, 17, 3, 10, 9, 5, 11, 12], disegnando ad ogni passo l albero corrispondente. 10. Esercizio: Si esegua l algoritmo HeapSort(A) sullo heap descrivendo esplicitamente tutti i passi dell algoritmo. 11. Esercizio: Sia A un MinHeap, usato come una coda con prioritá. Si scriva una procedura che calcoli il massimo incremento tra la priorità di un elemento e la priorità dell elemento immediatamente successivo. Ad esempio se A = [4,5,5,9,10,12,12] gli incrementi sono 1,0,4,1,2,0 e il massimo tra gli incrementi è 4. La procedura può utilizzare solamente le funzioni ExtractMax()(estrae l elemento di priorità massima dalla coda), e CodaVuota() (restituisce 1 se la coda è vuota, 0 altrimenti) e deve segnalare errore se la coda A è vuota o contiene solamente un elemento. 12. Esercizio: Dato un array A di n elementi, tutti distinti tra di loro, rappresentante un Max- Heap. (a) In che posizione di A compare l elemento massimo? (b) In quali posizioni di A puó comparire il secondo massimo? (c) Per k = 3,4, in che posizioni di A puó comparire il k-esmo elemento piú grande di A? (d) In che posizioni di A puó comparire l elemento minimo di A? Giustificare le risposte.

Esercizi per il corso di Algoritmi, anno accademico 2014/15

Esercizi per il corso di Algoritmi, anno accademico 2014/15 1 Esercizi per il corso di Algoritmi, anno accademico 2014/15 Esercizi sulla Tecnica Programmazione Dinamica Per la risoluzione degli esercizi di Programmazione Dinamica si richiede che venga innanzitutto

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

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15 ANNO ACCADEMICO 2014/15 1 a prova in itinere 13 gennaio 2015 ESERCIZIO 1 Si risolva l equazione di ricorrenza al variare del parametro reale a>1. T (n) = 27 n a T + n 2 log n a ESERCIZIO 2 Si ordinino

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

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

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 [email protected] Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso

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

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati 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 algoritmi

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] 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

Dettagli

Note per la Lezione 6 Ugo Vaccaro

Note per la Lezione 6 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note 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

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

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

Dettagli

Algoritmi e strutture di dati 2

Algoritmi e strutture di dati 2 Paola Vocca Lezione 4: Programmazione dinamica 1 Caratteristiche Programmazione dinamica: paradigma basato sullo stesso principio utilizzato per il divide et impera o il problema viene decomposto in sotto-problemi

Dettagli

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD Macchine RAM API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD 2 Macchina RAM 3 Esercizio Si consideri il linguaggio definito da: L = wcw R w a, b } 1. Codificare un programma RAM per il riconoscimento

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

Programmazione dinamica

Programmazione dinamica Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione

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

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

Esercitazione 3. Heapsort

Esercitazione 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

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 8 Code con priorità: Heap binomiali Riepilogo Array non ord. Array ordinato Lista non ordinata Lista ordinata Find Min Insert Delete DelMin Incr. Key Decr. Key merge

Dettagli

Esercizi su alberi binari

Esercizi 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

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

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

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

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I)

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi greedy Gli algoritmi per problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

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

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

Il 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

Dettagli

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Camil Demetrescu Irene Finocchi Giuseppe F. Italiano Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Indice 1 Un introduzione informale agli algoritmi 1 2 Modelli di calcolo e metodologie di

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Algoritmi di Ricerca

Algoritmi di Ricerca Algoritmi di Ricerca Contenuto Algoritmi non informati Nessuna conoscenza sul problema in esame Algoritmi euristici Sfruttano conoscenze specifiche sul problema Giochi Quando la ricerca è ostacolata da

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

Programmazione Greedy I codici di Huffman

Programmazione Greedy I codici di Huffman Programmazione Greedy I codici di Huffman Codifica dell informazione La rappresentazione ordinaria dell informazione prevede l impiego di un numero costante di bit; per esempio ad ogni carattere del codice

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

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Cammini minimi Definizioni Sia G = (V,E) un grafo orientato pesato sugli archi. Il costo di un cammino π = è dato da: Un cammino minimo tra una coppia di

Dettagli

PROVETTE D ESAME. Algoritmi e Strutture Dati

PROVETTE D ESAME. Algoritmi e Strutture Dati PROVETTE D ESAME Algoritmi e Strutture Dati ESERCIZIO 1 Si ottengano limiti superiori e inferiori per la seguente ricorrenza ESERCIZIO 1 ESERCIZIO 2 Dato un albero binario T, il grado di sbilanciamento

Dettagli

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Dettagli

Esercizi svolti. delle matrici

Esercizi svolti. delle matrici Esercizi svolti. astratti. Si dica se l insieme delle coppie reali (x, y) soddisfacenti alla relazione x + y è un sottospazio vettoriale di R La risposta è sì, perchè l unica coppia reale che soddisfa

Dettagli

Geometria BIAR Esercizi 2

Geometria BIAR Esercizi 2 Geometria BIAR 0- Esercizi Esercizio. a Si consideri il generico vettore v b R c (a) Si trovi un vettore riga x (x, y, z) tale che x v a (b) Si trovi un vettore riga x (x, y, z) tale che x v kb (c) Si

Dettagli

MODULO 07. La soluzione dei problemi mediante gli algoritmi

MODULO 07. La soluzione dei problemi mediante gli algoritmi MODULO 07 La soluzione dei problemi mediante gli algoritmi MODULO 07 Unità didattica 02 Impariamo a fare i diagrammi a blocchi In questa lezione impareremo: come descrivere l algoritmo risolutivo utilizzando

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

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai

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

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Dettagli

In questa lezione Alberi binari di ricerca: la cancellazione

In 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

Dettagli

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli

Dettagli

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash Funzioni Hash Sommario Tabelle ad indirizzamento diretto e hash Funzioni Hash Requisiti Metodo della divisione Metodo della moltiplicazione Funzione Hash Universale La ricerca Talvolta si richiede che

Dettagli

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Gli algoritmi greedy sono algoritmi basati sull idea

Dettagli

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

Esercizi 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e Strutture Dati Capitolo 2 Minimo albero ricoprente: Algoritmo di Prim Il problema del calcolo di un Minimum

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione informale di algoritmo Insieme di istruzioni, definite

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

Laboratorio di Programmazione Laurea in Bioinformatica

Laboratorio di Programmazione Laurea in Bioinformatica Laboratorio di Programmazione Laurea in Bioinformatica 15 dicembre 2008 1 Programmazione strutturata 1.1 Esercizio 1 Si scriva lo pseudocodice di un programma che calcola la media di due numeri reali.

Dettagli

Funzione esponenziale Equazioni esponenziali RIPASSO SULLE POTENZE

Funzione esponenziale Equazioni esponenziali RIPASSO SULLE POTENZE RIPASSO SULLE POTENZE Proprietà delle potenze La formula a n indica l operazione chiamata potenza, ( a è la base ed n l esponente) che consiste nel moltiplicare la base a per se stessa n volte. Per le

Dettagli

Esercizi su strutture dati

Esercizi su strutture dati Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Prof. G. M. Farinella [email protected] www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli

Dettagli

Università del Piemonte Orientale

Università del Piemonte Orientale Compito di Algebra del 13 Gennaio 2009 1) Trovare l ordine di [11] 112 in Z 112. Si dica poi per quali valori di k si ha [11] k 112 [34] 112 = [31] 112. Soluzione. L ordine di [11] 112 è 12. k 12 8. 2)

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array Lab06 1 Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 06 Array" Lab06 1 Esercizio 1" n Creare un programma che legga da input un numero non noto a priori di interi

Dettagli

Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Modulo 1: Perchè studiare algoritmi e strutture dati Modulo 2: Definizioni di base Informatica 3 Lezione 10 - Modulo 1 Perchè

Dettagli

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

Alberi e alberi binari I Un albero è un caso particolare di grafo Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: [email protected] Web: http://www.dis.uniroma1.it/~savo

Dettagli

Grafi pesati Minimo albero ricoprente

Grafi pesati Minimo albero ricoprente Algoritmi e Strutture Dati Definizioni Grafi pesati Minimo albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un albero; T contiene

Dettagli

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute.

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute. I due esercizi seguenti su un esempio semplice (trovare il massimo tra due o tra tre numeri) introducono la descrizione di algoritmi con diagrammi a blocchi, le strutture di controllo sequenza e condizione,

Dettagli

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities L. De Giovanni M. Di Summa In questa lezione introdurremo una classe di disuguaglianze, dette cover inequalities, che permettono di

Dettagli

Esercizi di Programmazione Lineare - Dualità

Esercizi di Programmazione Lineare - Dualità Esercizi di Programmazione Lineare - Dualità Esercizio n1 Dato il seguente problema 3 + 3 2 2 + a scriverne il duale; b risolvere il duale (anche geometricamente indicando cosa da esso si può dedurre sul

Dettagli

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII LABORATORIO DI INFORMATICA ESERCITAZIONE VIII Cercate di eseguire gli esercizi da soli. Se non ci riuscite, cercate di capire i messaggi di errore. Se non ci riuscite, provateci di nuovo. Poi chiamate

Dettagli