Algoritmi e strutture di dati 2

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Algoritmi e strutture di dati 2"

Transcript

1 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 o a soluzione del problema è derivata da quelle di tali sottoproblemi Entrambi i paradigmi vengono applicati a partire da una definizione ricorsiva che correla la soluzione di un problema a quella di un insieme di sotto-problemi. 2 1

2 Differenze tra programmazione dinamica e divide et impera La programmazione dinamica è nata principalmente per risolvere problemi di ottimizzazione, il divide et impera è più mirato alla risoluzione di problemi non necessariamente di ottimizzazione nel divide et impera un qualunque sotto-problema viene considerato una sola volta, nella programmazione dinamica uno stesso sotto-problema può rientrare come componente nella definizione di più problemi 3 Differenze tra programmazione dinamica e divide et impera 4 2

3 Proprietà di decomposizione Risoluzione mediante programmazione dinamica di un problema caratterizzata dalle due proprietà della decomposizione: Ottimalità dei sotto-problemi: o La soluzione ottima di un problema deriva dalle soluzioni ottime dei sotto-problemi in cui esso è stato decomposto (come nel divide et impera). Sovrapposizione dei sotto-problemi: o Uno stesso sotto-problema può venire usato nella soluzione di due (o più) sotto-problemi diversi. 5 Definizione di un algoritmo di programmazione dinamica La definizione di un algoritmo di programmazione dinamica è basata su: 1. caratterizzazione della struttura generale di cui sono istanze sia il problema in questione che tutti i sotto-problemi 2. identificazione dei sotto-problemi elementari e individuazione della relativa modalità di determinazione della soluzione 3. definizione di una regola ricorsiva per la soluzione in termini di composizione delle soluzioni di un insieme di sotto-problemi 4. derivazione di un ordinamento di tutti i sotto-problemi, per il calcolo efficiente e la memorizzazione delle loro soluzioni in una tabella. (memorizzazione dei valori intermedi memoization- in una tabella di programmazione dinamica) Numero di passi dell'algoritmo limitato superiormente dal prodotto tra il numero di sotto-problemi e il costo di ricombinazione delle loro soluzioni ottime 6 3

4 Esempio: Numeri di Fibonacci Esempio: successione di Fibonacci (0, 1, 1, 2, 3, 5, 8, 13,...) o 0 = 0 o 1 = 1 o = Ricorsione Fib( n ) { // n >= 0 if (n <= 1) RETURN n; else RETURN Fib(n-1) + Fib(n-2); } 7 Ricorsione inefficiente: analisi + =* + + = + + = ( + +)+= + ++= =. + + > = = φ! ",. Fib(n) richiede O(F n+3 ) = O(φ n+3 ) passi, dove φ = (+ ")/,'()... è il rapporto aureo 8 4

5 Fibonacci con programmazione dinamica Fib( n ) { // n >= 0 F[0] = 0; F[1] = 1; for (k = 2; k <= n; k = k + 1) F[k] = F[k-1] + F[k-2]; RETURN F[n]; } [alvie] L array F è la tabella di programmazione dinamica e richiede O(n) tempo per essere riempita F n può essere anche calcolato in tempo O(log n), basandosi sulla forma chiusa di Binet. 9 Problema del resto Dati: un insieme - = {,..,/ } di tipi di monete, di valore 1,,1 / un numero illimitato di monete di tipo 2 per un intero 4 si vuole determinare un vettore,, /, dove è il numero di monete dell'2 esimo tipo, in modo da ottenere il resto 4 con il minor numero possibile di monete. Vogliamo quindi minimizzare / con il vincolo 5 / 5 1 =4 10 5

6 Soluzione ricorsiva 6(4): minimo numero di monete necessario per ottenere il resto 4 o 4= è il caso base. Non occorre restituire alcuna moneta, per cui 6 = o 4>: è il caso ricorsivo. Se si utilizza una moneta di tipo i per il resto 4, allora il problema diventa creare il resto di 4 1 col minor numero possibile di monete Definizione di 6 4 conseguente: CD 4= 6 4 =: + + min 6(4 1 CD 1 >6 ED6 FG / ) AB +HI6/DI 11 Algoritmo per il problema del resto Basato sul riempimenti di una tabella resto di dimensione 4+. Problema più generale: o resto[c] indica il minimo numero di monete necessarie per ottenere il resto c o Se c=r, abbiamo la soluzione o riempimento della tabella da sinistra verso destra Caso base: resto[c]=0 Caso ricorsivo, calcola resto[c] prendendo il minimo tra tutti i valori resto[k 1 ]

7 Algoritmo per il problema del resto 13 Algoritmo per il problema del resto: esempio 14 7

8 Algoritmo per il problema del resto: esempio 15 Algoritmo goloso per il problema del resto Più semplice: si effettuano iterativamente le operazioni seguenti, fino ad ottenere 4. o si sceglie la moneta di valore più alto a disposizione o se ne usa la massima quantità possibile Caratteristica tipica degli algoritmi golosi (greedy): le scelte si basano principalmente sulla configurazione attuale, senza cercare di valutarne le conseguenze sulle configurazioni successive. Può essere interpretato come un caso speciale di programmazione dinamica. 16 8

9 Coin Changing: Greedy Algorithm 17 Coin Changing: Greedy Algorithm 18 9

10 Algoritmo goloso per il problema del resto 19 Non ottimalitàdell'algoritmo goloso per il problema del resto Esempio: M=9,3=3,P Q =6, P S =4 P U =1. Algoritmo goloso: una moneta da 6e tre monete da 1, in totale 4 Soluzione ottima: due monete da 4 e una 1, in totale

11 Greedy Algorithm: Special cases

12 Sequenza ottima di moltiplicazioni Vogliamo usare la programmazione dinamica per calcolare il prodotto di n matrici V 2 di taglia W 2 X W2 + 1 Hp. semplificativa: il costo di moltiplicazione di due matrici di taglia Ze Z [ è pari a Z [ Esempio: W 0 =100,W 1 =20,W 2 =1000,W 3 =2,W 4 =50 23 Sequenza ottima di moltiplicazioni Il costo varia a seconda di come associamo il prodotto utilizzando la moltiplicazione tra due matrici: in generale, qual è il costo minimo? input: sequenza di interi positivi W 0,W 1,,W (dove W 2 W > S è la taglia della matrice V 2) output: minimo numero di operazioni per calcolare (detto costo minimo per V ) con l ipotesi che la moltiplicazione di due matrici di taglia Z e Z [ richieda Z [ operazioni

13 Approccio di forza bruta Esiste un numero esponenziale (in ) di modi per calcolare il costo minimo per V usando l associatività con le parentesi: inefficiente! [Tale numero è quello di Catalan C n-1 = n.ro di alberi binari distinti con n-1 nodi interni, aventi ciascuno due figli] Metodo più efficiente: per 0 2 ^ 1, sia -(,_) = costo minimo per ` ` + L `_ (la cui taglia risultante è W 2 W a S ) Il costo minimo per V è quindi dato da b(0, 1) 25 Calcolo ricorsivo di M(i,j) Caso base: -(,) = per (per ottenere V 2 non dobbiamo moltiplicare) Caso induttivo: per ogni 2 < ^, vale ` ` L `_ = (` ` L `6) (`6 `6 L `_) dim.: W 2 W a S W 2 W d S Wf S W a S costo: c c 6 c _ b(2,^) b(2,) + b(+1,^) + W > W d S W a S 26 13

14 Calcolo ricorsivo di M(i,j) b(2,^ b$2, b$1,^ W > YW d S YW a S 27 Ricorsione costosa (come con Fibonacci) Numero esponenziale di chiamate ricorsive, ciascuna invocata molte volte con gli stessi parametri d ingresso 28 14

15 Tabella di programmazione dinamica Riempita per diagonali a partire dalla principale min b 0,0 b 1,2 W QYW S YW i b 0,1 b 2,2 W Q YW U YW i tabella: ghz[2[2][^] = b(2, ^ 29 Programmazione dinamica è iterativa Sostituiscono le chiamate ricorsive Serve a ricostruire la soluzione ottima 30 15

16 Analisi di complessità La tabella costi ha taglia e il calcolo di ciascuno dei suoi elementi richiede j() tempo (ciclo for più interno) CostoMinimoIterativo richiede k( ) tempo (laddove la versione ricorsiva è esponenziale in ) Lo spazio occupato è k( ) celle Esercizio: utilizzando la tabella indice, ricavare la sequenza ottima di moltiplicazioni per il calcolo di ` 31 Sotto-sequenza comune più lunga Definizione del problema: due stringhe di caratteri l, m, di lunghezze 3, stringa n sotto-sequenza comune più lunga (longest common subsequence, LCS) se non ne esistono sottosequenze di lunghezza maggiore che siano comuni ad l e m opq(+,): lunghezza delle sotto-sequenze comuni più lunghe di l e m numero esponenziale in 3 e di possibili sotto-sequenze comuni di l e m non è efficiente generarle tutte per poi scegliere quella di lunghezza massima 32 16

17 Sotto-sequenza comune più lunga Definizione: o(,_): lunghezza della sotto-sequenza più lunga comune alle due sequenze formate dai primi2 elementi di l e dai primi ^ elementi dim. o,_ = opq `,,r,_ o s(3, ) fornisce la soluzione opq +, al problema o s(2,0) = s(0,^) = 0 per ogni 2,^ 33 Sotto-sequenza comune più lunga Definizione: o,_ =: o,_ + max{o,_,o,_ } CD = F _= CD,_> D + =[_ ] CD,_> D + [_ ] se una delle due sequenza è vuota, allora la sotto-sequenza comune più lunga è vuota 34 17

18 Sotto-sequenza comune più lunga Definizione: o,_ : o,_ max.o,_,o,_ 0 CD F _ CD,_, D + J_L CD,_, D + vj_l se l ultimo carattere c in ciascuna sequenza è uguale, esiste una sotto-sequenza comune più lunga che lo contiene ed è ottenibile da quella in cui l ultimo carattere è rimosso. c c 35 Sotto-sequenza comune più lunga Definizione: o,_ : o,_ max.o,_,o,_ 0 CD F _ CD,_, D + J_L CD,_, D + vj_l se invece l ultimo carattere differisce, la sotto-sequenza comune più lunga è quella ottenuta rimuovendo l ultimo carattere in una sola delle due sequenze 36 18

19 37 Sotto-sequenza comune più lunga Definizione: o,_ =: o,_ + max{o,_,o,_ } CD = F _= CD,_> D + =[_ ] CD,_> D + [_ ] Tabella lunghezza di dimensione (/ + ) ( + ): l'algoritmo pone HwGxDyy+[][_] = s(2, ^) j(3) elementi da determinare, corrispondenti a k(/) sottoproblemi L'elemento HwGxDyy+[][_] è calcolabile in tempo costante, dati tutti gli elementi HwGxDyy+[6][C] con C < _ o con C = _,6 < L'algoritmo richiede tempo k(/) 38 19

20 Partizione di insiemi di interi Insieme di interi positivi `={+,+,,+ } di somma totale (pari) + = C. Si vuole determinare se esiste `z= +,+,,+ { ` { tale che + =C. Risolubile generando esplicitamente tutti i sottoinsiemi di `. sottoinsiemi: tempo esponenziale in 39 Programmazione dinamica Definiamo per 0 2 e 0 ^ Z ~(2,^) = [ sse esiste {l 0,l 1,..,l >S } t.c. = j Nota: ~(, Z) = [ sse la partizione è possibile [convenzione: {+,+,,+ } = ] 40 20

21 Programmazione dinamica per partizione Regola ricorsiva se l insieme è vuoto allora la somma ^=0 è l unica possibile 41 Programmazione dinamica per partizione Regola ricorsiva la somma pari ^ era già possibile con un sottoinsieme di.+,+,..,+ 0 che non include l >S 42 21

22 Programmazione dinamica per partizione Regola ricorsiva la somma pari ^ èpossibile con un sottoinsieme che include l > : eliminando l >S deve esistere un sottoinsime la cui somma è pari a jl >S (ovviamente se jl >S ) 43 Partizione di un insieme di interi: tabella di programmazione dinamica Tabella di programmazione dinamica di taglia 1 Z+1 parti[i][j] = ~(2,^) Ordine riempimento per righe 44 22

23 Partizione di insiemi di interi: esempi 45 Programmazione dinamica e partizione di insiemi di interi 46 23

24 Analisi di complessità per partizione Tempo k(c) Spazio k(c) k(c) usando solo le ultime due righe compilate iterativamente Nota: in generale è possibile ottenere delle prestazioni simili a quelle della programmazione dinamica usando ricorsione + memoization [memoization = prender nota] Convenzione: Φ denota un valore indefinito 47 Ricorsione + memoization 48 24

25 Pseudo-polinomialità e programmazione dinamica Quando gli interi coinvolti nel problema diventano molto grandi dobbiamo usare un differente modello di computazione Esempio: complessità dell algoritmo di partizione è k(c) ma la dimensione dell input è circa + celle, per memorizzare la sequenza C, +,+,,+ : algoritmo pseudo-polinomiale Al crescere di C rispetto ad n, non possiamo più pensare di memorizzare C in una singola cella, ma piuttosto in { = k(logc ) celle (la sua rappresentazione binaria): la dimensione dell input diventa di circa + { celle di memoria La complessità k( C) = k( { ) diventa quindi esponenziale. In tal caso va confrontata con quella k( ) che genera tutti i sottoinsiemi. In altre parole, k(c) è una complessità polinomiale soltanto se C = k( ) per una costante >

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

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

Esempio : i numeri di Fibonacci

Esempio : i numeri di Fibonacci Esempio : i numeri di Fibonacci La successione di Fibonacci F 1, F 2,... F n,... è definita come: F 1 =1 F 2 =1 F n =F n 1 F n 2,n 2 Leonardo Fibonacci (Pisa, 1170 Pisa, 1250) http://it.wikipedia.org/wiki/leonardo_fibonacci

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

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

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

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

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

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

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

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

Esercizi per il corso di Algoritmi

Esercizi per il corso di Algoritmi 1 Esercizi per il corso di Algoritmi Esercizi sulla Tecnica Programmazione Dinamica 1. Esercizio: Si consideri la seguente variante del problema dello Zaino 0/1. L input é costituito da n oggetti a 1...,a

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

Note per la Lezione 7 Ugo Vaccaro

Note per la Lezione 7 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 7 Ugo Vaccaro Sempre sulla tecnica Programmazione Dinamica Ricordiamo che lo sviluppo di algoritmi basati sulla Programmazione Dinamica

Dettagli

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare

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

Il problema dello zaino

Il problema dello zaino Il problema dello zaino (knapsack problem) Damiano Macedonio mace@unive.it Copyright 2010 2012 Moreno Marzolla, Università di Bologna (http://www.moreno.marzolla.name/teaching/asd2011b/) This work is licensed

Dettagli

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

Heap e code di priorità

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

Dettagli

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

Costo di esecuzione. Quanto costa? Spazio. Spazio e tempo. Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche

Costo di esecuzione. Quanto costa? Spazio. Spazio e tempo. Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche Quanto costa? Prof. Stefano Guerrini guerrini@di.uniroma1.it Programmazione II (can. P-Z) A.A. 2005-06 Cosa contribuisce

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

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:

Dettagli

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione

Dettagli

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 07/02/07 Nota Questi lucidi sono tratti

Dettagli

I numeri rossi sulla Mole Antonelliana a Natale. Algoritmi e Laboratorio a.a Lezioni. Le regole della riproduzione dei conigli.

I numeri rossi sulla Mole Antonelliana a Natale. Algoritmi e Laboratorio a.a Lezioni. Le regole della riproduzione dei conigli. I numeri rossi sulla Mole Antonelliana a Natale Università di Torino acoltà di Scienze MN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 29- Lezioni prof. Elio

Dettagli

Programmazione Lineare

Programmazione Lineare Programmazione Lineare Andrea Scozzari a.a. 2012-2013 March 14, 2013 Andrea Scozzari (a.a. 2012-2013) Programmazione Lineare March 14, 2013 1 / 18 Metodo del Simplesso Dato un problema di PL in forma standard

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

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

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

Dettagli

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1 Parte 2 Ricorsione - AA. 2012/13 [M.C.Escher Drawing hands, 1948] 2.1 Funzioni ricorsive Una funzione si dice ricorsiva se richiama se stessa, direttamente o indirettamente La ricorsione si dice diretta

Dettagli

Introduzione alla programmazione Esercizi risolti

Introduzione alla programmazione Esercizi risolti Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Sviluppo di programmi

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

Dettagli

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27 Lunghezza media Teorema Codice D-ario prefisso per v.c. X soddisfa L H D (X). Uguaglianza vale sse D l i = p i.. p.1/27 Lunghezza media Teorema Codice D-ario prefisso per v.c. X soddisfa L H D (X). Uguaglianza

Dettagli

Albero di Riscorsione

Albero di Riscorsione Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della

Dettagli

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen Esercitazione Ricorsione May 31, 2016 Esercizi presi dal libro di Rosen Problema 2 a) sezione 5.3 Data la seguente funzione definita ricorsivamente come: f(n+1) = 2f(n) f(0) = 3 Determinare il valore di

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Geometria BIAR Esercizi 2

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

Dettagli

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

Dall algoritmo al programma

Dall algoritmo al programma Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione

Dettagli

Grafi pesati Minimo albero ricoprente

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

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento

Dettagli

Corso di Fondamenti di Informatica. La ricorsione

Corso di Fondamenti di Informatica. La ricorsione Corso di Fondamenti di Informatica La ricorsione La ricorsione Si dice che un oggetto (una struttura dati, una funzione matematica, un concetto ) è ricorsivo se è possibile darne una definizione in termini

Dettagli

Progettazione di Algoritmi: Approccio Top-Down e Bottom Up

Progettazione di Algoritmi: Approccio Top-Down e Bottom Up Progettazione di Algoritmi: Approccio Top-Down e Bottom Up Ci sono due approcci fondamentali per progettare algoritmi Servono ambedue ad aiutarci ad affrontare il problema Si chiamano "top-down" e "bottom-up"

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

Matrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili

Matrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo del determinante Difficili Soluzione di sistemi lineari È veramente difficile? 1 Matrici.h

Dettagli

La principale modalità di calcolo è l applicazione di funzioni

La principale modalità di calcolo è l applicazione di funzioni 1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un

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 Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno

Algoritmi e Strutture Dati Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno Algoritmi e Strutture Dati Esercizi Svolti Giuseppe Persiano Dipartimento di Informatica ed Appl Renato M Capocelli Università di Salerno Indice Esercizio 12-3 5 Esercizio 23-4 6 Esercizio 63-3 7 Esercizio

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Dettagli

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento

Dettagli

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli. ESERCIZIO 1 Sia dato il grafo orientato in Figura 1. Si consideri il problema di flusso a 1 2 4 Figura 1: costo minimo su tale grafo con b 1 = 4 b 2 = 2 b = b 4 = e c 12 = 2 c 1 = 4 c 14 = 1 c 2 = 1 c

Dettagli

Secondo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Secondo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale Secondo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini luca@chiodini.org - l.chiodini@campus.unimib.it 15 marzo 2016 Programma 1. Lettura di un problema tratto dalle

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

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

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Dettagli

Progettazione di algoritmi

Progettazione di algoritmi Progettazione di algoritmi Discussione dell'esercizio [labirinto] Nel testo dell'esercizio abbiamo considerato come lunghezza del percorso il numero di bivi ma possiamo stimare meglio la lunghezza reale

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

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII. Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned

Dettagli

Informatica Teorica. Macchine a registri

Informatica Teorica. Macchine a registri Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire

Dettagli

Definizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy

Definizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy Il paradigma greedy Paolo Camurati, Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino Definizioni Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente:

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

Studio delle successioni con il software

Studio delle successioni con il software Studio delle successioni con il software Abbiamo visto due possibili definizioni per alcune successioni: diretta e per ricorrenza (o ricorsiva). Ricordiamo che la successione delle somme dei primi n numeri

Dettagli

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

Alberi binari di ricerca

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

Dettagli

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari Lezione 4 L artimetica binaria: I numeri relativi e frazionari Sommario I numeri relativi I numeri frazionari I numeri in virgola fissa I numeri in virgola mobile 1 Cosa sono inumeri relativi? I numeri

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Permutazioni. 1 Introduzione

Permutazioni. 1 Introduzione Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,

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

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione INFORMATICA B Ingegneria Elettrica La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che

Dettagli

Programmazione dinamica

Programmazione dinamica Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)

Dettagli

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 . Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,

Dettagli

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

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

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

Cosa è l Informatica?

Cosa è l Informatica? Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore

Dettagli

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort Due algoritmi di ordinamento basati sulla tecnica Divide et Impera: Mergesort e Quicksort (13 ottobre 2009, 2 novembre 2010) Ordinamento INPUT: un insieme di n oggetti a 1, a 2,, a n presi da un dominio

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

Calcolatori: Sistemi di Numerazione

Calcolatori: Sistemi di Numerazione Calcolatori: Sistemi di Numerazione Sistemi di Numerazione: introduzione In un Calcolatore, i Dati e le Istruzioni di un Programma sono codificate in forma inaria, ossia in una sequenza finita di e. Un

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultima Modifica: 7 ottobre 202 Copyright Portions of this work are Copyright 202, Moreno Marzolla. This work is licensed

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

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi: FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi

Dettagli

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010 Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1

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

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

Esempio: rappresentare gli insiemi

Esempio: rappresentare gli insiemi Esempio: rappresentare gli insiemi Problema: rappresentare gli insiemi Vedremo che la scelta della rappresentazione per implementarli non è così ovvia come era stato per i numeri razionali In realtà ci

Dettagli

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale Lezione 6 Notazione posizionale Ci sono solo 10 tipi di persone al mondo: quelle che conoscono la rappresentazione dei numeri in base 2, e quelle che non la conoscono... Programmazione I Paolo Valente

Dettagli

La ricorsione. Ver Claudio Fornaro - Corso di programmazione in C

La ricorsione. Ver Claudio Fornaro - Corso di programmazione in C La ricorsione Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C 2 Divide et impera Metodo di approccio ai problemi che consiste nel dividere il problema dato in problemi più semplici I risultati

Dettagli

Metodo di Quine- McCluskey

Metodo di Quine- McCluskey Metodo di Quine- McCluskey Maurizio Palesi Maurizio Palesi Definizioni Date due funzioni f(x,x 2,,x n ) e g(x,x 2,,x n ) si dice che f copre g (oppure g implica f) e si scrive f g se f(x,x 2,,x n )= quando

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

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I)

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I) Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I) Luigi De Giovanni Giacomo Zambelli 1 Problemi di programmazione lineare Un problema

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Definizione informale di algoritmo Insieme di istruzioni, definite passo per passo, in modo da poter essere eseguite meccanicamente

Dettagli

L ALGORITMO DEL SIMPLESSO REVISIONATO

L ALGORITMO DEL SIMPLESSO REVISIONATO L ALGORITMO DEL SIMPLESSO REVISIONATO L'algoritmo del simplesso revisionato costituisce una diversa implementazione dell algoritmo standard tesa a ridurre, sotto certe condizioni, il tempo di calcolo e

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente Grafi (non orientati e connessi): minimo albero ricoprente Una breve presentazione Definizioni Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è

Dettagli

Alberi ed Alberi Binari

Alberi ed Alberi Binari Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,

Dettagli

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