Note per la Lezione 7 Ugo Vaccaro
|
|
- Vittoria Quaranta
- 6 anni fa
- Visualizzazioni
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
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
DettagliProgrammazione 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
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
DettagliCorso 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
DettagliSommario 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
DettagliIntroduzione 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:
DettagliAlgoritmi 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à
DettagliRiassumiamo 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
DettagliAlgoritmi 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
DettagliUn 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
DettagliAlgoritmi 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
DettagliLa 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
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
DettagliPROGRAMMAZIONE 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
DettagliAlgoritmi 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
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
DettagliTecniche 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
Dettagli5. 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
DettagliNell 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
DettagliLezione 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
DettagliAlgoritmi 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
DettagliMetodi 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
DettagliSistemi 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)
DettagliTempo 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
Dettagli1 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
DettagliValutazione 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
DettagliIl 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
DettagliDue 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
DettagliTempo 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
DettagliCammini 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)
DettagliLEZIONE 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.
DettagliNOTE 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
DettagliStudio 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
Dettagli2. 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
DettagliAlgoritmi 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
DettagliPROGRAMMAZIONE 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
DettagliProgrammazione 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
DettagliApplicazioni 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
DettagliA 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
DettagliVISITA 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
DettagliCorso 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
Dettagli3/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
DettagliCOME 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
DettagliRicerca 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)
DettagliAlgoritmi 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
DettagliCOMPLESSITÀ 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,
DettagliPossibile 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
Dettagli4 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
Dettagli3.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
Dettagli1 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
DettagliAnno 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
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
DettagliAlgoritmi 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
Dettagli2.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
DettagliTecniche 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
DettagliNote 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
DettagliRISOLUZIONE 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
DettagliSui 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
DettagliCapitolo 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!
DettagliGiovanna 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
DettagliEsercizi 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;
DettagliFondamenti 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
DettagliMetodi 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
DettagliEquivalentemente, 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
Dettagliax 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
Dettagli1 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
Dettagli11.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)
DettagliZeri 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
DettagliSOLUZIONI 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;
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
DettagliCorso 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
DettagliMatematica 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
DettagliSistemi 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
DettagliCorso 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
Dettaglia + 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,
DettagliDivide 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
DettagliLaboratorio 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
DettagliEsercitazione 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
DettagliMonomi 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
DettagliEsercizi 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
DettagliProblemi, 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
DettagliLezione 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
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
DettagliAnno 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
DettagliDistanza 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
Dettagli1 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
DettagliESERCIZI 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
Dettaglim = 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,
DettagliSISTEMI 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
DettagliEquazioni 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
DettagliA.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)
DettagliEquazioni esponenziali e logaritmi
Copyright c 2008 Pasquale Terrecuso Tutti i diritti sono riservati. Equazioni esponenziali e logaritmi 2 equazioni esponenziali..................................................... 3 casi particolari............................................................
DettagliGeometria 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
DettagliAlgebra 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
DettagliCorso 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
DettagliProgettazione 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
DettagliLinguaggi 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
DettagliUniversita 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
DettagliElementi 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
DettagliASD 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