Note per la Lezione 7 Ugo Vaccaro

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Note per la Lezione 7 Ugo Vaccaro"

Transcript

1 Progettazione di Algoritmi Anno Accademico Note per la Lezione 7 Ugo Vaccaro Sempre sulla tecnica Programmazione Dinamica Ricordiamo che lo sviluppo di algoritmi basati sulla Programmazione Dinamica prevede generalmente due passi separati: Formulare il problema in termini ricorsivi: ovvero scrivere una espressione per la soluzione all intero problema che sia una combinazione di soluzioni a sottoproblemi di taglia minore Calcolare la soluzione globale al problema in modo ricorsivo, facendo precedere ciascuna chiamata ricorsiva con un controllo per verificare se la soluzione al relativo sottoproblema è stata già calcolata. Gli algoritmi di Programmazione Dinamica hanno bisogno di memorizzare le soluzioni ai sottoproblemi intermedi. Spesso (ma non sempre) ciò viene effettuato memorizzandole in tabelle. Il secondo passo prima descritto può essere sostituito in algoritmi iterativi con il seguente: Calcolare le soluzioni ai sottoproblemi in maniera bottom-up : scrivere un algoritmo che parta con i casi base della ricorrenza e proceda via via considerando (e risolvendo) problemi di taglia sempre maggiore, considerandoli nell ordine corretto Applichiamo la tecnica di Programmazione Dinamica al seguente problema. Cambio delle monete. Input: Un valore monetario V, un insieme di monete che denoteremo con l insieme {1,...,n, i cui valori (ad es., in Euro)) sono contenuti nel vettore v = v[1]...v[n], con v[1] > v[2] >... > v[n] = 1. In altri termini, la moneta generica i vale v[i] Euro. Output: Il minimo numero di monete il cui valore totale sia esattamente pari a V. (Assumiamo di avere a disposizione un numero illimitato di monete di valore v[i], per ogni i) In altri termini, indicato con a i 0 il numero di monete di valore v[i] che usiamo (che può anche essere pari a zero, nel senso che la moneta i-esima non viene utilizzata), vogliamo minimizzare il numero totale di monete usate, pari a a 1 +a a n sotto la condizione che Vediamo un esempio. n a i v[i] = V i=1 1

2 Sia V = 26 (Euro), l insieme delle monete pari a {1,2,3,4 ed il vettore dei valori delle monete dato da v[1] = 10,v[2] = 5,v[3] = 2,v[4] = 1 In altri termini, abbiamo a disposizione monete di valore pari a 10 Euro, monete di 5 Euro, monete di 2 Euro e monete del valore di 1 Euro. Vogliamo cambiare un assegno di 26 Euro, usando il minor numero di monete possibili. Vi sono diverse possibili soluzioni per esprimere 26 Euro con le monete a disposizione: 1. a 1 = a 2 = a 3 = 0, a 4 = 26 il numero totale di monete usato è a 1 +a 2 +a 3 +a 4 = 26, di valore totale 4 i=1 a iv[i] = a 1 = 2, a 2 = 0 a 3 = 3, a 4 = 0 il numero totale di monete usato è a 1 +a 2 +a 3 +a 4 = 5 di valore totale 4 i=1 a iv[i] = = a 1 = 2 a 2 = 1 a 3 = 0, a 4 = 1 il numero totale di monete usato è a 1 +a 2 +a 3 +a 4 = 4 di valore totale 4 i=1 a iv[i] = = 26 Passo 1 di PD: Formulare il problema ricorsivamente: Ovvero: scrivere una formula per la soluzione all intero problema che sia una combinazione di soluzioni a sottoproblemi di taglia minore Domanda: E quali sono i sottoproblemi del problema di partenza (che chiede di esprimere il valore V usando il minor numero di monete, ognuna delle quali di un possibile valore v[1] > v[2] >... > v[n] = 1)? Risposta: Sono tutti i sottoproblemi che si ottengono qualora si voglia esprimere un qualsiasi valore 0 j V usandoilminornumerodimonete, ognunadellequalidiunpossibilevalorev[i] > v[i+1] >... > v[n] = 1, i 1 In altri termini, un generico sottoproblema è individuato dal generico valore j, per j = 0,...,V e dal sottoinsieme di monete {i,...,n, ovvero dal sottovettore dei loro valori v[i]...v[n]. Denotiamo con C(i,j) il minimo numero di monete necessario per esprimere la somma j V, usando monete di valore v[i] > v[i+1] >... > v[n], (noi siamo interessati a C(1,V)) Consideriamo un esempio con V = 12, e monete di valore v[1] = 10, v[2] = 6, v[3] = 1. Nella matrice di seguito riportata l indice di riga i specifica che sono disponibili le monete di valore v[i],...,v[3]. L indice di colonna j specifica il valore monetario totale che si deve esprimere. La generica entrata nella riga i e colonna j della matrice indica il minor numero di monete necessario per poter esprimere il valore monetario j, 0 j 12 con le monete di valore v[i],...,v[3], con 1 i 3. j i Ad esempio, C(2,8) = 3, dovendo necessariamente usare una moneta di valore 6 e due monete di valore 1. 2

3 Vediamo ora come esprimere in maniera ricorsiva i valori C(i, j). Ricordiamo che C(i,j) è il minimo numero di monete necessario per esprimere la somma j V, usando monete di valore v[i] > v[i+1] >... > v[n]. Possono accadere due casi: Nella soluzione che ci fornisce il minimo numero di monete C(i,j) per esprimere la somma j V, usando monete di valore v[i] > v[i+1] >... > v[n], di fatto non compare la moneta i-esima di valore v[i]. Ne segue che C(i,j) può essere calcolata tenendo in cosniderazione solo le monete di valore v[i + 1] >... > v[n]. Detto in altri termini, in questo caso vale che C(i,j) = C(i+1,j). Può invece accadere che nella soluzione che ci dà il minimo numero di monete C(i,j) per esprimere la somma j V, usando monete di valore v[i] > v[i + 1] >... > v[n], la moneta i-esima di valore v[i] appare. In questo caso, vuol dire che C(i,j) = 1 + k, dove l 1 conta l apparenza della moneta di valore v[i], e il k conta le monete restanti usate, siamo esse i 1,...,i k (ricordiamo che alcune di queste possono anche essere uguali). I valori di tali k monete restanti devono necessariamente sommare a j v[i] (visto che poi sommando la moneta di valore v[i], che sappiamo esserci, arriviamo al valore totale j). L osservazione chiave è che che k non è un numero sconosciuto, ma k è proprio uguale a C(i,j v[i]). Detto in altre parole, k è il minimo numero di monete per esprimere la somma j v[i] V, usando monete di valore v[i] > v[i+1] >... > v[n]. Infatti, se k fosse > C(i,j v[i]), allora potremmo sostituire le monete i 1,...,i k con le C(i,j v[i]) monete che sò, per definizione di C(, ), avere come somma di valori uguale a j v[i], ed ottenere, usando poi la moneta di valore v[i], un valore totale pari a (j v[i])+v[i] = j, avendo impiegato un numero di monete pari a 1 + C(i,j v[i]) < 1 + k = C(i,j), contro l ipotesi che C(i,j) è il minimo numero di monete per esprimere la somma j V, usando monete di valore v[i] > v[i + 1] >... > v[n]. Se invece k fosse < C(i,j v[i]), l assurdo sarebbe ancora più immediato. Infatti, avremmo che con le monete i 1,...,i k (che sono in numero inferiore a C(i,j v[i])) riusciremmo ad esprimere il valore j v[i], contro l ipotesi che C(i,j v[i]) è il minimo numero di monete per esprimere la somma j v[i] V, usando monete di valore v[i] > v[i + 1] >... > v[n]. Riassumendo, abbiamo dimostrato che nel caso in cui nella soluzione che ci dà il minimo numero di monete per esprimere la somma j V, usando monete di valore v[i] > v[i+1] >... > v[n], la moneta i-esima di valore v[i] appare, allora vale che C(i,j) = 1+C(i,j v[i]). Poichè noi a priori non sappiamo se nella soluzione che ci dà il minimo numero di monete C(i,j) per esprimere la somma j V, usando monete di valore v[i] > v[i+1] >... > v[n], la moneta i-esima di valore v[i] appare o non appare, ci calcoliamo le sottosoluzioni C(i+1,j) e 1+C(i,j v[i]) ad entrambi i sottoproblemi e ci prendiamo la migliore (ovvero la migliore soluzione tra quella che contiene la moneta di valore v[i] e quella che non contiene v[i]). Detto in altri termini, vale che { C(i+1,j) se v[i] > j, C(i,j) = min{c(i+1,j),1+c(i,j v[i]) se v[i] j con i casi base della ricorrenza pari a: C(n,j) = j, j = 0,...,V. Il secondo passo nella applicazione della tecnica Programmazione Dinamica consisterà in: Passo 2 di PD: Introduci una tabella dove memorizzare il computo delle sottosoluzioni al problema di partenza: Ovvero: calcola la soluzione ai distinti sottoproblemi una volta soltanto, memorizza ciascuna sottosoluzione nella entrata opportuna di una tabella T[i,j], in modo tale che esse possano essere usate nel seguito, se occorre. 3

4 Abbiamo quindi il seguente algoritmo ricorsivo per il calcolo di C(1, V): Rec CambioMonete(v[i]...v[n],j) % fà uso di una tabella T(i,j) 1. IF (i==n) { 2. RETURN j 3. ELSE { 4. IF (T(i,j) non è definito) { 5. IF (v[i] j){ 6. T(i,j) = min(rec CambioMonete(v[i+1...n],j),1+Rec CambioMonete(v[i...n],j v[i])) ELSE { 7. T(i,j) = Rec CambioMonete(v[i+1...n],j) 8. RETURN(T(i, j)) Per l analisi della complessità di tempo di Rec CambioMonete(v[1...n],V), osserviamo che ciascuna delle nv entrate della matrice T[, ] viene calcolata una ed una sola volta, ed il tempo necessario per il calcolo di una arbitraria entrata è O(1). Per cui l algoritmo Rec CambioMonete(v[1...n], V) ha complessità O(nV). Sull esempio con V = 12, e monete di valore v[1] = 10, v[2] = 6, v[3] = 1 l algoritmo costruirebbe la matrice seguente, e produrrebbe in output il valore C(1,12) = 2 j i Il problema del Cambio di Monete è il primo esempio di Problema di Ottmizzazione che abbiamo visto. Informalmente, un Problema di Ottimizzazione è caratterizzato dal fatto che ad ogni possibile istanza di input (ad es., il valore V ed i valori v[1],...,v[n] delle monete nel problema precedente), è possibile associare piú soluzioni (ad es., i diversi modi di esprimere il valore V con le monete di valore v[1],...,v[n]). A ciascuna possibile soluzione è associato un costo (ad es., il numero di monete per esprimere V). Ciò che noi cerchiamo è una soluzione di minimo costo (o di massimo costo, se esso rappresenta un guadagno per noi). I problemi di ottimizzazione sono quindi caratterizzati dal fatto che ogni istanza di input può avere diverse possibili soluzioni, e noi cerchiamo quella che ottimizza il costo (ovvero, lo minimizza o lo massimizza, a seconda dello specifico problema in questione). Applichiamo ora la tecnica di Programmazione Dinamica al seguente problema. Input del problema: Supponiamo di avere un insieme A = {A 1,A 2,...,A n di attività, dove ciascuna attività A i ha un tempo di inizio s i, un tempo di fine f i, con s i < f i (in altre parole, l attività A i deve essere svolta nell intervallo temporale [s i,f i ]), ed un certo valore v(a i ) = v i. Le attività in A devono essere eseguite da un server, sotto la condizione che A i ed A j possono essere entrambe eseguite se e solo se [s i,f i ] [s j,f j ] = (in tal caso, diremo che l attivitá A i ed A j sono compatibili). In altri termini, possono essere eseguite dal server solo attività il cui svolgimento temporale non si sovrappone (si pensi, ad esempio, alle attività come dei job che un sistema operativo deve far eseguire da una CPU che può eseguire una sola attività alla volta ed una volta iniziata un attività questa non può essere interrotta ma bensì eseguita fino alla sua terminazione). Output del problema: Calcolare un sottoinsieme di S A di attività a due a due compatibili, di valore totale 4

5 A S v(a) massimo. Ovvero, vogliamo calcolare max S A:S è composto da attività mutualmente compatibili v(a). Per semplicità, indichiamo l insieme delle attività {A 1,A 2,...,A n semplicemente con l insieme {1,2,...,n. Vediamo un esempio. A S v = 4 v = 2 v = 3 v = 5 v = 3 v = 5 v = 5 v = tempo Si vede che la prima e l ultima attivita (di colore blu) sono compatibili, di valore totale 11. Però, anche la seconda, quinta (di colore rosso) e l ultima attività sono compatibili, di valore totale 12. Al fine di progettare un algoritmo per il problema dello Scheduling di Attività, rinomiano innanzitutto le attività in ordine di terminazione (oovero ordiniamole in base ai numeri f i ) per cui varrà: f 1 f 2... f n. Inoltre, per ogni attività j, sia p(j) = il più grande indice i < j tale che attività i è compatibile con l attività j (p(j) = 0 se tale indice non esiste) Nell esempio precedente, avremmo che dopo aver ordinato la situazione è quella riportata nella figura di sotto. Inoltre, avremmo che p(8) = 5, p(7) = 3, p(2) = tempo 7 8 5

6 Sia O una soluzione di valore ottimo al problema in questione, ovvero sia O un sottoinsieme delle attività A = {A 1,...,A n composta da attività a due a due compatibili, di valore totale A Ov(A) massimo possibile. Sicuramente, o vale che n (l ultima attività) O, oppure vale che n / O Se n O allora tutte le attività p(n)+1,p(n)+2,...,n 1 intersecano n, quindi esse non possono essere in O. Inoltre, se n O allora O {n è una soluzione ottima per le attività {1,2,...,p(n) (che non intersecano l attività n). Perchè? Perchè se O {n non fosse ottima relativamente all insieme delle attività {1,2,...,p(n), allora si potrebbe trovare una soluzione in {1,2,...,p(n) migliore di O {n. Tale soluzione, unita all attività n sarebbe una soluzione relativamente all insieme delle attività {1, 2,..., n globalmente migliore di O stessa! Ciò è contro l ipotesi di partenza che O è un sottoinsieme di A composta da attività a due a due compatibili, di valore totale A Ov(A) massimo possibile. Se invece l ultima attività non è presente nella soluzione ottima O, allora O è chiaramente anche una soluzione ottima per l insieme delle attività {1,2,...,n 1 Applichiamo ora il primo passo per la risoluzione del problema in questione, utilizzando la tecnica Programmazione Dinamica, ovvero formuliamo la soluzione del prooblema in termini ricorsivi, cioè scriviamo una formula per la soluzione all intero problema che sia una combinazione di soluzioni a sottoproblemi di taglia minore. 1 j n, sia O j una soluzione ottima per il sottoproblema costituito dalle attività {1,...,j, e sia OPT(j) il valore di O j (noi cerchiamo OPT(n)). Da quanto detto prima, o vale che j O j (ed in tal caso O j non può contenere le attività p(j)+1,...,j 1). Inoltre O j {j è una soluzione ottima (ovvero di valore OPT(j)) per le attivitá {1,2,...,p(j) In simboli Oppure vale che j / O j, ed in tal caso vale che Tutto ciò vuol dire che OPT(j) = v j +OPT(p(j)). OPT(j) = OPT(j 1). OPT(j) = max{v j +OPT(p(j)),OPT(j 1). In sintesi OPT(j) = { 0 se j = 0, max{v j +OPT(p(j)),OPT(j 1) se j > 1 Il che ci suggerisce il seguente algoritmo Input: n,s 1,...,s n,f 1,...,f n,v 1,...,v n 1. Ordina le attività in modo che f 1... f n 2. Calcola p(1),...,p(n) 3. Calcola-OPT(j) 4. IF(j == 0) { 5. RETURN 0 6. ELSE { 7. RETURN max{v j +Calcola-OPT(p(j)),Calcola-OPT(j 1) 8. 6

7 Noi siamo interessati alla esecuzione di Calcola-OPT(n). Purtroppo, l algoritmo Calcola-OPT(n) ha complessità esponenziale nel caso peggiore. Supponiamo infatti che i tempi di inizio e fine di ogni attività siano tali che ogni attività A j inizia prima che l attività A j 1 sia terminata, ma dopo la terminazione di A j 2, per j = 2,...,n. Ciò comporta che p(j) = j 2, per j = 2,...,n. Ma se questo è il caso, si vede dalla linea 7. dell algoritmo prima riportato, che Calcola-OPT(n) effettua due chiamate ricorsive a se stesso, ovvero a Calcola-OPT(n 2) e Calcola-OPT(n 1). Per cui, detta T(n) la complessità di Calcola-OPT(n), ciò comporta che T(n) = T(n 2)+ T(n 1). Già sappiamo che questa equazione di ricorrenza ha soluzione esponenziale, purtroppo! Perchè l algoritmo di D&I Calcola-OPT(n) è esponenziale? Perchè risolve stessi problemi più volte, come si può vedere, as esempio, guardando l albero delle chiamate ricorsive di Calcola-OPT(5). 1 OPT(5) 2 OPT(4) OPT(3) 3 OPT(3) OPT(2) OPT(2) OPT(1) 4 5 OPT(2) OPT(1) p(1) = 0,p(j) = j 2 OPT(j)=max{v j+opt(p(j)), OPT(j-1) OPT(1) OPT(0) OPT(1) OPT(0) OPT(1) OPT(0) É il momento, quindi, di usare la Programmazione Dinamica. Ricordiamo che esistono due approcci per trasformare un inefficiente algoritmo di Divide et Impera in un efficiente algoritmo. La prima, basata sulla tecnica della Memoization, che aggiunge all algoritmo una tabella in cui vengano memorizzate le soluzioni ai sottoproblemi giá risolti. Viene altresí addottata l addizionale accortezza che prima di ogni chiamata ricorsiva dell algoritmo su di un particolare sottoproblema, debba essere effettuato un controllo sulla tabella per verificare se la soluzione a quel sottoproblema è stata già calcolata in precedenza. La seconda tecnica risolve semplicemente tutti i sottoproblemi del problema di partenza, in maniera iterativa ed in modo bottom-up, ovvero risolvendo prima i sottoproblemi di taglia piccola e poi via via quelli di taglia maggiore fino a risolvere l intero problema di partenza Quale approccio è migliore? Dipende... Entrambi hanno i loro meriti. L approccio basato sulla memorizzazione preserva la struttura ricorsiva tipica degli algoritmi basati su Divide et Impera (che sono in generale semplici ed eleganti). Per contro, vi è un aggiunta di lavoro, tipo gestione stack, etc., che in certe situazioni può diventare significativo. L approccio iterativo bottom-up è in generale efficiente. Tuttavia, gli algoritmi basati su questo approccio tendono a calcolare la soluzione a tutti i sottoproblemi del problema originale, anche quelli che potrebbero non concorrere alla soluzione ottima del problema di partenza. Ciò non accade per gli algoritmi basati sul primo approccio, che risolvono solo i sottoproblemi strettamente necessari. Vediamo in dettaglio l applicazione della tecnica Programmazione Dinamica mediante il primo approccio, ovvero usando la Memoization. Ovvero, memorizziamo le soluzioni di ciascun sottoproblema, e le ri-leggiamo all occorrenza. 7

8 Input: n,s 1,...,s n,f 1,...,f n,v 1,...,v n % fà uso di un array M 1. Ordina le attività in modo che f 1... f n 2. Calcola p(1),...,p(n) 4. M Calcola OPT(n) 5. IF(M[j] non è definito) { 6. M[j] = max{v j +M Calcola OPT(p(j)),M Calcola OPT(j 1) 7. RETURN M[n] L istruzione 1. richiede tempo O(n log n) per ordinare. L istruzione 2. richiede tempo O(n) (una volta aver ordinato). Il FOR in 3. richiede tempo O(n). L istruzione 4. richiede tempo O(1). M Calcola OPT(n) effettua chiamate al suo interno a M Calcola OPT(j), j < n. Ogni chiamata richiede tempo O(1) e o ritorna un valore M[j] già calcolato, oppure calcola un nuovo valore M[j] facendo due chiamate a valori già calcolati. Il numero totale di chiamate sarà quindi al più pari a 2n, da cui segue che il tempo impiegato da M Calcola OPT(n) è O(n). Sommando tutto otteniamo che l algoritmo ha complessità O(n log n). E se vogliamo trovare la soluzione ottima? (e non solo il suo valore). Il seguente algoritmo lo fà. 1. M Calcola OPT(n) 2. Trova Soluzione(n) dove Trova Soluzione(j) 1. IF(j==0) { 2. RETURN nulla 3. ELSE { 4. IF(v j +M[p(j)] > M[j 1]) { 5. stampa j 6. Trova Soluzione(p(j)) 7. ELSE {Trova Soluzione(j 1) Il numero di chiamate ricorsive è n. Di conseguenza, la complessità dell algoritmo è O(n). 8

Sommario della lezione

Sommario della lezione Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/36 Sommario della lezione Ulteriori esempi di applicazione della Programmazione Dinamica Esempio di applicazione

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

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

Corso di Perfezionamento

Corso di Perfezionamento Programmazione Dinamica 1 1 Dipartimento di Matematica e Informatica Università di Camerino 15 febbraio 2009 Tecniche di Programmazione Tecniche di progettazione di algoritmi: 1 Divide et Impera 2 Programmazione

Dettagli

Sommario della lezione

Sommario della lezione Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/27 Sommario della lezione Ancora altri esempi di applicazione della Programmazione Dinamica: Il Problema della

Dettagli

Introduzione alla tecnica di Programmazione Dinamica

Introduzione alla tecnica di Programmazione Dinamica Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/37 Sommario della lezione Introduzione alla tecnica di Programmazione Dinamica Esempio di applicazione n. 1:

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Golosi (Greedy) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino un algoritmo goloso correttezza Problema della selezione di attività

Dettagli

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria. Capitolo 2 Campi 2.1 Introduzione Studiamo ora i campi. Essi sono una generalizzazione dell insieme R dei numeri reali con le operazioni di addizione e di moltiplicazione. Nel secondo paragrafo ricordiamo

Dettagli

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 5

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 5 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Docente: Ugo Vaccaro Lezione 5 In questa lezione inizieremo a studiare gli algoritmi di approssimazione per problemi di ottimizzazione NP-hard

Dettagli

Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:

Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente: Pag 29 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione

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

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino La ricorsione Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario! Definizione di ricorsione e strategie divide et impera! Semplici algoritmi ricorsivi! Merge

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 DINAMICA

PROGRAMMAZIONE DINAMICA PROGRAMMAZIONE DINAMICA 6.1 PROGRAMMAZIONE DINAMICA Sebbene elementi del metodo fossero già presenti in tecniche di ottimizzazione note in precedenza, si deve a Bellman lo studio sistematico (iniziato

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

Esercizi di Algoritmi e Strutture Dati

Esercizi 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

Dettagli

Tecniche Algoritmiche: divide et impera

Tecniche Algoritmiche: divide et impera Tecniche Algoritmiche: divide et impera Una breve presentazione F. Damiani - Alg. & Lab. 04/05 Divide et impera (o Divide and conquer) Per regnare occorre tenere divisi i nemici e trarne vantaggio F. Damiani

Dettagli

5. DIVIDE AND CONQUER I

5. DIVIDE AND CONQUER I Divide-et-Impera (Divide and conquer) 5. DIVIDE AND CONQUER I Mergesort e Relazioni di ricorrenza Esempi di progettazione D&I Moltiplicazione di interi Contare inversioni Divide-et-Impera. Definizione

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare

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

Metodi per la risoluzione di sistemi lineari

Metodi per la risoluzione di sistemi lineari Metodi per la risoluzione di sistemi lineari Sistemi di equazioni lineari. Rango di matrici Come è noto (vedi [] sez.0.8), ad ogni matrice quadrata A è associato un numero reale det(a) detto determinante

Dettagli

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara Sistemi lineari Lorenzo Pareschi Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara http://utenti.unife.it/lorenzo.pareschi/ lorenzo.pareschi@unife.it Lorenzo Pareschi (Univ. Ferrara)

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

1 Definizione di sistema lineare omogeneo.

1 Definizione di sistema lineare omogeneo. Geometria Lingotto. LeLing1: Sistemi lineari omogenei. Ārgomenti svolti: Definizione di sistema lineare omogeneo. La matrice associata. Concetto di soluzione. Sistemi equivalenti. Operazioni elementari

Dettagli

Valutazione di progressioni geometriche

Valutazione di progressioni geometriche Universitá degli Studi di Salerno Corso di Introduzione agli Algoritmi e Strutture Dati Prof. Ugo Vaccaro Anno Acc. 2015/16 p. 1/22 Valutazione di progressioni geometriche Somme finite: Sia S n = n i=0

Dettagli

Il problema dello zaino

Il problema dello zaino Il problema dello zaino Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 25 gennaio 2010 Il problema dello zaino 0-1

Dettagli

Due numeri naturali non nulli a, b tali che MCD(a,b) = 1 si dicono coprimi o relativamente primi.

Due numeri naturali non nulli a, b tali che MCD(a,b) = 1 si dicono coprimi o relativamente primi. MASSIMO COMUNE DIVISORE E ALGORITMO DI EUCLIDE L algoritmo di Euclide permette di calcolare il massimo comun divisore tra due numeri, anche se questi sono molto grandi, senza aver bisogno di fattorizzarli

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

Cammini minimi fra tutte le coppie

Cammini minimi fra tutte le coppie Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)

Dettagli

LEZIONE 4. { x + y + z = 1 x y + 2z = 3

LEZIONE 4. { x + y + z = 1 x y + 2z = 3 LEZIONE 4 4.. Operazioni elementari di riga. Abbiamo visto, nella precedente lezione, quanto sia semplice risolvere sistemi di equazioni lineari aventi matrice incompleta fortemente ridotta per righe.

Dettagli

NOTE DI ALGEBRA LINEARE v = a 1 v a n v n, w = b 1 v b n v n

NOTE DI ALGEBRA LINEARE v = a 1 v a n v n, w = b 1 v b n v n NOTE DI ALGEBRA LINEARE 2- MM 9 NOVEMBRE 2 Combinazioni lineari e generatori Sia K un campo e V uno spazio vettoriale su K Siano v,, v n vettori in V Definizione Un vettore v V si dice combinazione lineare

Dettagli

Studio degli algoritmi

Studio degli algoritmi COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi

Dettagli

2. ALGORITMO DEL SIMPLESSO

2. ALGORITMO DEL SIMPLESSO . ALGORITMO DEL SIMPLESSO R. Tadei Una piccola introduzione R. Tadei SIMPLESSO L obiettivo del capitolo è quello di fornire un algoritmo, l algoritmo del simplesso, che risolve qualsiasi problema di programmazione

Dettagli

Algoritmi e strutture di dati 2

Algoritmi e strutture di dati 2 Algoritmi e strutture di dati 2 Paola Vocca Lezione 1: Divide et Impera 1 Paradigma del divide et impera Strutturato in tre fasi. Sia Π() istanza di dimensione di un problema computazionale Π (dove è immediato

Dettagli

PROGRAMMAZIONE DINAMICA. Prof. Reho Gabriella Olimpiadi di Informatica

PROGRAMMAZIONE DINAMICA. Prof. Reho Gabriella Olimpiadi di Informatica PROGRAMMAZIONE DINAMICA Quando si usa P.D.? La programmazione dinamica si usa nei casi in cui esista una definizione ricorsiva del problema, ma la trasformazione diretta di tale definizione in un algoritmo

Dettagli

Programmazione dinamica

Programmazione dinamica Programmazione dinamica Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 29/21 I. Castelli Programmazione dinamica, A.A. 29/21 1/35

Dettagli

Applicazioni eliminazione di Gauss

Applicazioni eliminazione di Gauss Applicazioni eliminazione di Gauss. Premessa Nel seguito supporremo sempre di applicare il metodo di eliminazione di Gauss allo scopo di trasformare la matrice del sistema Ax = b in una matrice triangolare

Dettagli

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli

VISITA IL SITO PER ALTRO MATERIALE E GUIDE

VISITA IL SITO  PER ALTRO MATERIALE E GUIDE COPYRIGHT SEGO LICENSE Questo documento viene fornito così come è: se pensate che faccia schifo problemi vostri, nessuno vi obbliga a leggerlo. Se pensate che sia qualcosa di positivo e/o avete suggerimenti

Dettagli

Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi

Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Problem Solving Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/30 Tipi di Problemi Primitivi Risolubili

Dettagli

3/10/ Divisibilità e massimo comun divisore

3/10/ Divisibilità e massimo comun divisore MCD in N e Polinomi 3/10/2013 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore di due numeri naturali

Dettagli

COME CALCOLARE LA COMBINAZIONE DI MINIMO COSTO DEI FATTORI

COME CALCOLARE LA COMBINAZIONE DI MINIMO COSTO DEI FATTORI COME CALCOLARE LA COMBINAZIONE DI MINIMO COSTO DEI FATTORI In questa Appendice, mostreremo come un impresa possa individuare la sua combinazione di minimo costo dei fattori produttivi attraverso il calcolo

Dettagli

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015 1 Lunedí 20 Aprile 2015 1 Istituto di Analisi dei Sistemi ed Informatica IASI - CNR Rilassamento di un problema Rilassare un problema di Programmazione Matematica vuol dire trascurare alcuni (tutti i)

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

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,

Dettagli

Possibile applicazione

Possibile applicazione p. 1/4 Assegnamento Siano dati due insiemi A e B entrambi di cardinalità n. Ad ogni coppia (a i,b j ) A B è associato un valore d ij 0 che misura la "incompatibilità" tra a i e b j, anche interpretabile

Dettagli

4 0 = 4 2 = 4 4 = 4 6 = 0.

4 0 = 4 2 = 4 4 = 4 6 = 0. Elementi di Algebra e Logica 2008. Esercizi 4. Gruppi, anelli e campi. 1. Determinare la tabella additiva e la tabella moltiplicativa di Z 6. (a) Verificare dalla tabella moltiplicativa di Z 6 che esistono

Dettagli

3.4 Metodo di Branch and Bound

3.4 Metodo di Branch and Bound 3.4 Metodo di Branch and Bound Consideriamo un generico problema di Ottimizzazione Discreta dove X è la regione ammissibile. (P ) z = max{c(x) : x X} Metodologia generale di enumerazione implicita (Land

Dettagli

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi. Esercizi di Matlab L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi. Esempio Consideriamo la matrice A formata da n = righe e m = colonne M = 5 6 7 8. 9 0

Dettagli

Anno Scolastico 2014/15 - Classe 1D Verifica di matematica dell 11 Maggio Soluzioni degli esercizi. 2(x 2) 2(x 1) + 2 = 3x

Anno Scolastico 2014/15 - Classe 1D Verifica di matematica dell 11 Maggio Soluzioni degli esercizi. 2(x 2) 2(x 1) + 2 = 3x Anno Scolastico 2014/15 - Classe 1D Verifica di matematica dell 11 Maggio 2015 - Soluzioni degli esercizi Risolvere le seguenti equazioni. Dove è necessario, scrivere le condizioni di accettabilità e usarle

Dettagli

= elemento che compare nella seconda riga e quinta colonna = -4 In generale una matrice A di m righe e n colonne si denota con

= elemento che compare nella seconda riga e quinta colonna = -4 In generale una matrice A di m righe e n colonne si denota con Definizione di matrice Una matrice (di numeri reali) è una tabella di m x n numeri disposti su m righe e n colonne. I numeri che compaiono nella tabella si dicono elementi della matrice. La loro individuazione

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min

Dettagli

2.6 Calcolo degli equilibri di Nash

2.6 Calcolo degli equilibri di Nash 92 2 Giochi non Cooperativi Per queste estensioni di giochi non finiti si possono provare risultati analoghi a quelli visti per i giochi finiti. Rimandiamo alla bibliografia per uno studio più approfondito

Dettagli

Tecniche avanzate di sintesi di algoritmi: Programmazione dinamica Algoritmi greedy

Tecniche avanzate di sintesi di algoritmi: Programmazione dinamica Algoritmi greedy Tecniche avanzate di sintesi di algoritmi: Programmazione dinamica Algoritmi greedy Dr Maria Federico Programmazione dinamica Solitamente usata per risolvere problemi di ottimizzazione il problema ammette

Dettagli

Note sull implementazione in virgola fissa di filtri numerici

Note sull implementazione in virgola fissa di filtri numerici Note sull implementazione in virgola fissa di filtri numerici 4 settembre 2006 1 Introduction Nonostante al giorno d oggi i processori con aritmetica in virgola mobili siano molto comuni, esistono contesti

Dettagli

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine RISOLUZIONE IN LOGICA PROPOSIZIONALE Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine 1. Risoluzione Definitione 1.1. Un letterale l è una variabile proposizionale (letterale

Dettagli

Sui determinanti e l indipendenza lineare di vettori

Sui determinanti e l indipendenza lineare di vettori Sui determinanti e l indipendenza lineare di vettori 1 Si dice che m vettori v 1, v 2,,v m di R n sono linearmente indipendenti, se una loro combinazione lineare può dare il vettore nullo solo se i coefficienti

Dettagli

Capitolo 19. Ricorsione

Capitolo 19. Ricorsione Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!

Dettagli

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore MCD in N e Polinomi Giovanna Carnovale October 18, 2011 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore

Dettagli

Esercizi sulla complessità di frammenti di pseudo-codice

Esercizi sulla complessità di frammenti di pseudo-codice Esercizi sulla complessità di frammenti di pseudo-codice Esercizio 1 Si determini la complessità temporale del seguente frammento di pseudo-codice in funzione di n. Il ciclo contiene solo istruzioni elementari;

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura

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

Equivalentemente, le colonne di A sono linearmente indipendenti se e solo se

Equivalentemente, le colonne di A sono linearmente indipendenti se e solo se Lezioni di Algebra Lineare. Versione novembre 2008 VI. Il determinante Il determinante det A di una matrice A, reale e quadrata, è un numero reale associato ad A. Dunque det è una funzione dall insieme

Dettagli

ax 1 + bx 2 + c = 0, r : 2x 1 3x 2 + 1 = 0.

ax 1 + bx 2 + c = 0, r : 2x 1 3x 2 + 1 = 0. . Rette in R ; circonferenze. In questo paragrafo studiamo le rette e le circonferenze in R. Ci sono due modi per descrivere una retta in R : mediante una equazione cartesiana oppure mediante una equazione

Dettagli

1 IL LINGUAGGIO MATEMATICO

1 IL LINGUAGGIO MATEMATICO 1 IL LINGUAGGIO MATEMATICO Il linguaggio matematico moderno è basato su due concetti fondamentali: la teoria degli insiemi e la logica delle proposizioni. La teoria degli insiemi ci assicura che gli oggetti

Dettagli

11.4 Chiusura transitiva

11.4 Chiusura transitiva 6 11.4 Chiusura transitiva Il problema che consideriamo in questa sezione riguarda il calcolo della chiusura transitiva di un grafo. Dato un grafo orientato G = hv,ei, si vuole determinare il grafo orientato)

Dettagli

Zeri di funzioni e teorema di Sturm

Zeri di funzioni e teorema di Sturm Zeri di funzioni e teorema di Sturm Enrico Bertolazzi Dipartimento di Ingegneria Meccanica e Strutturale Università degli Studi di Trento via Mesiano 77, I 38050 Trento, Italia EnricoBertolazzi@ingunitnit

Dettagli

SOLUZIONI DEL 1 0 TEST DI PREPARAZIONE ALLA 1 a PROVA INTERMEDIA

SOLUZIONI DEL 1 0 TEST DI PREPARAZIONE ALLA 1 a PROVA INTERMEDIA SOLUZIONI DEL 1 0 TEST DI PREPARAZIONE ALLA 1 a PROVA INTERMEDIA 1 Esercizio 0.1 Dato P (A) = 0.5 e P (A B) = 0.6, determinare P (B) nei casi in cui: a] A e B sono incompatibili; b] A e B sono indipendenti;

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

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Laurea in Ingegneria Gestionale Sede di Fermo Corso di 3 - CALCOLO NUMERICO DELLE DERIVATE Introduzione Idea di base Introduzione Idea di base L idea di base per generare un approssimazione alla

Dettagli

Matematica per Analisi dei Dati,

Matematica per Analisi dei Dati, Matematica per Analisi dei Dati, 230209 1 Spazio vettoriale R n Sia n un intero positivo fissato Lo spazio vettoriale R n e l insieme delle n ple ordinate di numeri reali, che rappresenteremo sempre come

Dettagli

Sistemi di 1 grado in due incognite

Sistemi di 1 grado in due incognite Sistemi di 1 grado in due incognite Problema In un cortile ci sono polli e conigli: in totale le teste sono 7 e zampe 18. Quanti polli e quanti conigli ci sono nel cortile? Soluzione Indichiamo con e con

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

a + 2b + c 3d = 0, a + c d = 0 c d

a + 2b + c 3d = 0, a + c d = 0 c d SPAZI VETTORIALI 1. Esercizi Esercizio 1. Stabilire quali dei seguenti sottoinsiemi sono sottospazi: V 1 = {(x, y, z) R 3 /x = y = z} V = {(x, y, z) R 3 /x = 4} V 3 = {(x, y, z) R 3 /z = x } V 4 = {(x,

Dettagli

Divide et impera. Divide et impera. Divide et impera. Divide et impera

Divide et impera. Divide et impera. Divide et impera. Divide et impera Divide et impera Divide et impera La tecnica detta divide et impera è una strategia generale per impostare algoritmi (par. 9.4). Consideriamo un problema P e sia n la dimensione dei dati, la strategia

Dettagli

Laboratorio di Python

Laboratorio di Python Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di

Dettagli

Esercitazione 6 - Soluzione

Esercitazione 6 - Soluzione Anno Accademico 28-29 Corso di Algebra Lineare e Calcolo Numerico per Ingegneria Meccanica Esercitazione 6 - Soluzione Immagine, nucleo. Teorema di Rouché-Capelli. Esercizio Sia L : R 3 R 3 l applicazione

Dettagli

Monomi L insieme dei monomi

Monomi L insieme dei monomi Monomi 10 10.1 L insieme dei monomi Definizione 10.1. Un espressione letterale in cui numeri e lettere sono legati dalla sola moltiplicazione si chiama monomio. Esempio 10.1. L espressione nelle due variabili

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

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

Lezione 4 Ugo Vaccaro

Lezione 4 Ugo Vaccaro Teoria dell Informazione II Anno Accademico 205 206 Lezione 4 Ugo Vaccaro Il risultato principale che abbiamo scoperto nella lezione scorsa è il seguente: data una sorgente DSSM X, X 2,..., X i,... con

Dettagli

Il problema delle azioni

Il 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

Dettagli

Anno 5 Regole di derivazione

Anno 5 Regole di derivazione Anno 5 Regole di derivazione 1 Introduzione In questa lezione mostreremo quali sono le regole da seguire per effettuare la derivata di una generica funzione. Seguendo queste regole e conoscendo le derivate

Dettagli

Distanza di Edit. Speaker: Antinisca Di Marco Data:

Distanza di Edit. Speaker: Antinisca Di Marco Data: Distanza di Edit Speaker: Antinisca Di Marco Data: 14-04-2016 Confronto di sequenze Il confronto tra sequenze in biologia computazionale è la base per: misurare la similarità tra le sequenze allineamento

Dettagli

1 Cambiamenti di riferimento nel piano

1 Cambiamenti di riferimento nel piano 1 Cambiamenti di riferimento nel piano Siano date due basi ortonormali ordinate di V : B = ( i, j) e B = ( i, j ) e supponiamo che i = a i + b j j = c i + d j allora per un generico vettore v V abbiamo

Dettagli

ESERCIZI SULLE MATRICI

ESERCIZI SULLE MATRICI ESERCIZI SULLE MATRICI Consideriamo il sistema lineare a, x + a, x + + a,n x n = b a, x + a, x + + a,n x n = b a m, x + a m, x + + a m,n x n = b m di m equazioni in n incognite che ha a, a,n A = a m, a

Dettagli

m = a k n k + + a 1 n + a 0 Tale scrittura si chiama rappresentazione del numero m in base n e si indica

m = a k n k + + a 1 n + a 0 Tale scrittura si chiama rappresentazione del numero m in base n e si indica G. Pareschi COMPLEMENTI ED ESEMPI SUI NUMERI INTERI. 1. Divisione con resto di numeri interi 1.1. Divisione con resto. Per evitare fraintendimenti nel caso in cui il numero a del Teorema 0.4 sia negativo,

Dettagli

SISTEMI LINEARI. x y + 2t = 0 2x + y + z t = 0 x z t = 0 ; S 3 : ; S 5x 2y z = 1 4x 7y = 3

SISTEMI LINEARI. x y + 2t = 0 2x + y + z t = 0 x z t = 0 ; S 3 : ; S 5x 2y z = 1 4x 7y = 3 SISTEMI LINEARI. Esercizi Esercizio. Verificare se (,, ) è soluzione del sistema x y + z = x + y z = 3. Trovare poi tutte le soluzioni del sistema. Esercizio. Scrivere un sistema lineare di 3 equazioni

Dettagli

Equazioni di primo grado

Equazioni di primo grado Equazioni di primo grado 15 15.1 Identità ed equazioni Analizziamo le seguenti proposizioni: a ) cinque è uguale alla differenza tra sette e due ; b ) la somma di quattro e due è uguale a otto ; c ) il

Dettagli

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5.

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. A.A. 2015-2016. CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. Esercizio 5.1. Determinare le ultime tre cifre di n = 13 1625. (Suggerimento. Sfruttare il Teorema di Eulero-Fermat)

Dettagli

Equazioni esponenziali e logaritmi

Equazioni esponenziali e logaritmi Copyright c 2008 Pasquale Terrecuso Tutti i diritti sono riservati. Equazioni esponenziali e logaritmi 2 equazioni esponenziali..................................................... 3 casi particolari............................................................

Dettagli

Geometria e Topologia I (U1-4) 2006-mag-10 61

Geometria e Topologia I (U1-4) 2006-mag-10 61 Geometria e Topologia I (U1-4) 2006-mag-10 61 (15.9) Teorema. Consideriamo il piano affine. Se A A 2 (K) è un punto e r una retta che non passa per A, allora esiste unica la retta per A che non interseca

Dettagli

Algebra Lineare e Geometria. Il teorema fondamentale dell algebra. 1 Non c è un ordine totale sull insieme dei complessi

Algebra Lineare e Geometria. Il teorema fondamentale dell algebra. 1 Non c è un ordine totale sull insieme dei complessi Università di Bergamo Anno accademico 2008 2009 Primo anno di Ingegneria Algebra Lineare e Geometria Il teorema fondamentale dell algebra 1 Non c è un ordine totale sull insieme dei complessi Vogliamo

Dettagli

Corso di Analisi Numerica

Corso di Analisi Numerica Corso di Laurea in Ingegneria Informatica Corso di 4 - DERIVAZIONE NUMERICA Lucio Demeio Dipartimento di Scienze Matematiche 1 Calcolo numerico delle derivate 2 3 Introduzione Idea di base L idea di base

Dettagli

Progettazione di Algoritmi

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

Dettagli

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare

Dettagli

Universita degli Studi di Siena

Universita degli Studi di Siena Universita degli Studi di Siena Facolta di Ingegneria Dispense del corso di Sistemi di Supporto alle Decisioni I L algoritmo per la risoluzione di problemi di programmazione dinamica Chiara Mocenni Corso

Dettagli

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Cristina Turrini UNIMI - 2016/2017 Cristina Turrini (UNIMI - 2016/2017) Elementi di Algebra e di Matematica

Dettagli

ASD Laboratorio 08. Cristian Consonni/Alessio Guerrieri 02/12/2016. Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/ / 14

ASD Laboratorio 08. Cristian Consonni/Alessio Guerrieri 02/12/2016. Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/ / 14 ASD Laboratorio 08 Cristian Consonni/Alessio Guerrieri 02/12/2016 Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/2016 1 / 14 CALENDARIO (UPDATE) 25/11 Dinamica 1 02/12 Dinamica 2 09/12 No

Dettagli