7.1 Il problema del cammino minimo e alcuni esempi di applicazioni. p(u, v). Il problema del cammino minimo può essere enunciato nel modo seguente:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "7.1 Il problema del cammino minimo e alcuni esempi di applicazioni. p(u, v). Il problema del cammino minimo può essere enunciato nel modo seguente:"

Transcript

1 Capitolo 7 Cammini minimi Come abbiamo accennato nel capitolo precedente, il linguaggio dei grafi permette di rappresentare in modo semplice la struttura di molti problemi applicativi, consentendo, in molti casi di grande importanza, di costruire metodi razionali di soluzione dei problemi stessi. Fra i problemi più importanti, più semplici e più antichi, per la cui soluzione sono utilizzate rappresentazioni basate su grafi, vi sono i problemi di ricerca di cammini minimi, di cui ci occupiamo in questo capitolo. I grafi considerati in questo capitolo sono, salvo diversa specificazione, grafi orientati. Nel caso della ricerca di cammini infatti è sempre possibile ricondursi con poca fatica a questo caso. Per fare questo è sufficiente sostituire ogni arco non orientato (e quindi percorribile in entrambi i versi) con due archi diretti in direzione opposta. Se esiste un cammino con le caratteristiche richieste nel grafo originario, allora esiste anche nel grafo trasformato e viceversa. Per brevità, infine, trattando solo di grafi orientati, indichiamo con grafo aciclico un grafo che non contenga cicli orientati. 7.1 Il problema del cammino minimo e alcuni esempi di applicazioni Dato un grafo orientato G =(V,E), associamo a ciascun arco e =(u, v) E un peso p(u, v) IR. Per ogni cammino orientato P = {v 1,e 1,..., e p 1,v p }, definiamo peso p(p ) del cammino P la somma dei pesi degli archi che appartengono a P,ecioè: p(p )= (u,v) P p(u, v). Il problema del cammino minimo può essere enunciato nel modo seguente: dati due nodi s V e t V, trovare un cammino orientato P in G da s a t cheabbiapesominimo. Notiamo che: - Se non esiste un cammino orientato che vada da s a t in G, il problema non ha soluzioni ammissibili. - Se esiste un ciclo orientato C in G, talechep(c) < 0 (peso negativo), il problema è illimitato inferiormente. In genere, dato un nodo s gli algoritmi per il calcolo di cammini minimi determinano non il (o uno dei) cammini minimi da s a un fissato nodo t, mailcosidettoalbero dei cammini minimi, cioè un sottografo di G che è un albero i cui nodi includono s e tutti i nodi da esso raggiungibili con un cammino orientato e tale che l unico (vedi teorema 6.1.1) cammino da s a ogni altro nodo t dell albero sia un cammino minimo da s a t. A prima vista questa può sembrare una complicazione non necessaria, ma in effetti, per come 107

2 sono organizzati gli algoritmi, vedremo che non è così. Quindi, in pratica, gli algoritmi che studieremo risolvono il seguente problema: dato un nodo s V, trovare un albero dei cammini minimi da s a ogni nodo in V raggiungibile da s. Nella letteratura esistono moltissimi algoritmi per il calcolo dei cammini minimi. Ognuno di essi ha le sue peculiarità e le sue limitazioni. Per esempio alcuni algoritmi funzionano solo su determinate classi di grafi (grafi aciclici, grafi con pesi non negativi, etc.), inoltre ci possono essere notevoli differenze nella efficienza degli algoritmi. In generale un algoritmo che funziona su una classe ampia di grafi sarà più complesso di un algoritmo studiato per una classe ristretta di grafi, tenendo conto delle peculiarità di quella classe. In questo capitolo consideremo due algoritmi: il primo calcola i cammini minimi su grafi aciclici, il secondo calcola i cammini minimi su grafi con pesi non negativi. Nella parte rimanente di questa sezione illustriamo alcuni semplici esempi di calcolo dei cammini minimi. Alla fine del capitolo considereremo due casi più complessi e interessanti Percorso di tempo minimo su una rete stradale Dato un grafo pesato che rappresenta la rete stradale italiana in cui i pesi degli archi indicano il (valore atteso del) tempo di percorrenza dell arco, il problema è quello di trovare il cammino che congiunge due particolari nodi del grafo (nodo di partenza e nodo di arrivo) con tempo di percorrenza minimo. Si noti che possono esistere piu cammini con la caratteristica di essere minimi. Questo esempio, apparentemente semplice, solleva complessi problemi di modellistica. Un primo problema è relativo al livello di dettaglio necessario nella rappresentazione. Se, per esempio, il percorso da effettuare parte da Milano e arriva a Brindisi, il grafo dovrà contenere solo le autostrade e le principali strade di collegamento fra città diverse e un intera città potrà essere rappresentata con un nodo del grafo. Un eccesso di dettaglio appesantirebbe inutilmente la rappresentazione, rendendo ogni algoritmo di soluzione lento e inefficace. Se, d altra parte, il percorso da effettuare parte da piazza San Pietro a Roma e arriva a un indirizzo di Frascati (a circa 0 km. da Roma), la rappresentazione davrà essere completamente diversa, non solo perché il grafo sarà diverso, ma anche perché il peso degli archi, per essere significativo, dovrà prendere in considerazione i problemi del traffico urbano e quindi essere funzione dell ora ed eventualmente del giorno. Infatti, effettuare tale percorso alle 10 di mattina di un giorno feriale non sarà ovviamente la stessa cosa che effettuarlo alle del mattino (magari di un giorno festivo). Un secondo problema è relativo al tipo di obiettivi che ci si propone. Infatti, una rappresentazione può essere o può non essere adeguata, a seconda del motivo per cui si vuole conoscere il cammino di tempo minimo. Per esempio, per alcune applicazioni critiche (autombulanze, vigili del fuoco, polizia), non basta l informazione sul valore atteso del tempo di transito, ma serve anche valutare la varianza di tale tempo, ossia le possibili variazioni rispetto alla media. È meglio infatti utilizzare un percorso un po più lungo ma con un tempo di percorrenza prevedibile con relativa certezza, piuttosto che un percorso mediamente piu breve ma per cui vi sia il rischio di restare imbottigliati nel traffico. Un terzo problema è relativo alla quantità di informazioni che è necessario inserire nell elaboratore per affrontare il problema. Per calcolare il cammino da Milano a Brindisi è necessario inserire l intera carta stradale italiana, o basta una porzione? Da un lato, più informazioni vengono inserite maggiore èil tempo necessario per inserirle e il costo dell operazione; d altro canto se vengono calcolati spesso percorsi di tempo minimo sulla rete stradale italiana forse conviene memorizzare tutto in modo organico una volta per tutte Costruzione di una autostrada Il problema considerato è quello di costruire al costo minimo una autostrada fra le citta A e B. Nel grafo riportato in figura 7.1 i nodi rappresentano i punti per cui l autostrada puo passare e gli archi i 108

3 possibili collegamenti fra punti. Il peso degli archi rappresenta il costo di costruzione della relativa tratta di autostrada. A 8 Q 10 Z E 9 R T 18 Y 8 6 U 10 B Figura 7.1: Cammino minimo tra A e B Si noti che in questo caso il grafo è non orientato in quanto ogni arco puo essere percorso in entrambi i sensi; per ricondursi al caso orientato basta sostituire ogni arco con due archi orientati in senso opposto, a ognuno dei quali viene attribuito un peso pari al peso dell arco eliminato. La scelta di una autostrada tra A e B con costo complessivo di costruzione minimo, corrisponde alla scelta del cammino di minimo costo dal nodo A al nodo B sul grafo. Nella figura 7.1 tale cammino è indicato in grassetto e il costo complessivo è pari a. 7. Cammini minimi e massimi su grafi aciclici Una classe di grafi orientati di particolare interesse in campo applicativo (vedi gli esempi alla fine del capitolo) è la classe di grafi aciclici. La ricerca di cammini minimi o massimi su tali grafi è uno strumento di progetto di notevole importanza. Come si vedrà nel seguito, i due problemi di minimo e di massimo sono, in questo caso particolare, risolti da due algoritmi identici eccetto che per la sostituzione di un massimo a un minimo nella formula ricorsiva alla base del procedimento. Nel seguito verrà prima considerato il caso di un problema di cammino minimo. Per poter procedere con la descrizione dell algoritmo, è necessario studiare prima una particolare tecnica di numerazione dei nodi di un grafo aciclico Numerazione topologica dei nodi di un grafo Una caratteristica peculiare dei grafi aciclici (sia G =(V,E) ilgrafo,con V = n e E = m) consiste nella possibilità di numerare i nodi del grafo con i numeri 1,,,...,n-1,n in modo tale che: se esiste un arco dal nodo i al nodo j allora j>i Tale numerazione viene detta numerazione topologica dei nodi del grafo e non è in generale unica. Non tutti i grafi possono essere numerati topologicamente. In effetti l esistenza di una numerazione topologica dei nodi di un grafo caratterizza esattamente la classe dei grafi aciclici. Vale infatti il seguente teorema. Teorema 7..1 Un grafo è aciclico se e solo se esiste una numerazione topologica dei suoi nodi. 109

4 Dimostrazione. Sufficienza. Supponiamo che esista una numerazione topologica dei nodi e facciamo vedere che l esistenza di un ciclo porterebbe ad una contraddizione. Possiamo assumere che i nodi siano numerati topologicamente, indicheremo l i-esimo nodo di questa particolare numerazione, come v i. Se esiste un ciclo (orientato) vuol dire che esiste una successione di nodi (v i,v j,v k,...,v r,v s )taliche - esistono gli archi (v i,v j ), (v j,v k ),...,(v r,v s ); - v i = v s. Ma allora, da una parte, siccome la numerazione è topologica abbiamo i < j < k <... < r < s,cioè i<s, mentre dall altra, poiché v i = v s abbiamo i = s. Questaè una contraddizione e così ilgrafodeve essere aciclico. Necessità. Supponiamo che il grafo sia aciclico e mostriamo che deve esistere almeno una numerazione topologica. La dimostrazione è costruttiva, faremo cioè vedere che esiste una numerazione topologica costruendone una. Come primo passo osserviamo che se il grafo è aciclico, deve esistere almeno un nodo che non abbia archi entranti. Infatti, se ciò non fosse vero, potremmo ragionare nel modo seguente. Prendiamo un nodo qualunque, chiamiamolo v 1. Siccome tutti i nodi hanno archi entranti esiste un nodo predecessore di v 1, indichiamolo con v ; notiamo che per come abbiamo scelto v esiste l arco (v,v 1 ) (attenzione, questa è una numerazione non topologica). Possiamo ripetere il ragionamento con v e trovare un nodo v tale che esista l arco (v,v ). Siccome stiamo supponendo, per assurdo, che tutti gli archi abbiano degli archi entranti, possiamo ripetere il ragionamento quante volte vogliamo. Notiamo che ogni nodo generato deve essere diverso dai precedenti, altrimenti avremmo trovato un ciclo, contraddicendo l aciclicità del grafo. D altra parte, arrivati a v n i nodi del grafo sono finiti e quindi il predecessore di v n che stiamo supponendo esitente per assurdo, deve per forza essere uno dei nodi già esaminati. Cosìsivieneaformare un ciclo. Quindi dato un grafo aciclico deve per forza esistere almeno un nodo che non ha archi entranti. Prendiamo uno di questi nodi e numeriamolo con il numero 1. Eliminiamo dal grafo il nodo 1 e tutti gli archi uscenti da esso. Il nuovo grafo che otteniamo è ovviamente ancora un grafo aciclico. Quindi per lo stesso ragionamento fatto prima deve esistere almeno un nodo che non ha archi entranti. Prendiamo uno di questi nodi e numeriamolo con il numero. Notiamo che ovviamete se consideriamo il grafo originario il nodo può avere archi entranti, ma solo provenienti dal nodo 1 e quindi la condizione i<j è rispettata. Possiamo ora ripetere il procedimento n volte (quanti sono i nodi) ed ottenere così una numerazione topologica del grafo. Il precedente teorema è importante, anche perché nella dimostrazione della necessitàè sostanzialmente dato un algoritmo per numerare topologicamente i nodi di un grafo. Riesponiamo qui l algoritmo per chiarezza. - Siccome il grafo è aciclico, deve esistere almeno un nodo con solo archi uscenti; - individuiamo uno di questi nodi e attribuiamogli il numero 1; - cancelliamo il nodo numerato e tutti gli archi adiacenti, nel nuovo grafo ridotto individuiamo un nodo con soli archi uscenti e attribuiamogli il numero, e così via fino ad aver numerato tutti i nodi La correttezza e validità di questa procedura è stata provata nella dimostrazione della necessità del Teorema Notiamo che se ad un certo punto dell applicazione della procedura non possiamo procedere, se succede cioè che ad un determinato passo non riusciamo a trovare un nodo senza archi entranti, questo vuol dire che il grafo considerato contiene un ciclo. Quindi la procedura per la numerazione topologica di un grafo può anche essere utilizzata per determinare se un grafo è aciclico o meno. Come esempio consideriamo il grafo di figura

5 B A D C Figura 7.: Numerazione dei nodi di un grafo Si tratta di decidere se il grafo è aciclico e, in caso, numerare i nodi topologicamente. I vari passi dell algoritmo sono riportati qui di seguito Passo Nodo senza Nodi non ancora Numerazione archi entranti numerati 1 A B,C,D A=1 B C,D B= C D C= D D= Il procedimento è terminato con la numerazione di tutti i nodi. Il grafo è dunque aciclico e la numerazione trovata è topologica. Supponiamo ora che nel precedente grafo l arco (B,D) sia orientato da D a B. Ovviamente si verrebbe a creare un ciclo. Se proviamo ad applicare la procedura per la determinazione di una numerazione topologica possiamo iniziare numerando il nodo A come nodo 1. Ma dopo non possiamo più procedere perché eliminato il nodo A e gli archi da esso uscenti ((A,B) e (A,C)) non èpiù possibile individuare un nodo che non abbia archi entranti. 7.. Un algoritmo per il cammino minimo su grafi aciclici La numerazione dei nodi di un grafo aciclico descritta nella sezione precedente consente di costruire un algoritmo di soluzione per il problema di cammino minimo particolarmente semplice. Infatti, nella ricerca di un cammino tra una qualsiasi coppia di nodi i e j del grafo, a causa della numerazione attribuita ai nodi, si può affermareche: se j<iallora non esistono cammini da i a j; se j>iallora gli unici nodi che è necessario considerare nella ricerca del cammino da i a j sono i nodi con indice k tale che i<k<j. Infatti, se il cammino passasse per un nodo h>j, allora non potrebbe tornare su j, a causa della mancanza di archi che collegano nodi con indice maggiore a nodi con indice minore; se passasse per un nodo h<i, allora dovrebbe esistere un cammino da h a i, il che comporterebbe l esistenza di archi che collegano nodi con indice maggiore a nodi con indice minore. 111

6 Sulla base di queste considerazioni, è possibile impostare un algoritmo per il calcolo dell albero dei cammini minimi tra un nodo del grafo (per esempio il nodo 1) e tutti i nodi con indice superiore (per quelli con indice inferiore non esiste sicuramente un cammino; ovviamente, se il nodo di partenza è quello contrassegnato con l indice 1, allora si tratta di calcolare l albero dei cammini minimi tra il nodo 1 e tutti gli altri). L algoritmo per il calcolo dell albero dei cammini minimi dal nodo 1 a tutti gli altri nodi si basa sul calcolo in sequenza dei cammini minimi dal nodo 1 al nodo, dal nodo 1 al nodo, dal nodo 1 al nodo, e cosí via. Indichiamo con: - p(i, j) il peso dell arco (i, j) che parte dal nodo i e arriva al nodo j; - f(i) il valore del cammino minimo dal nodo 1 al nodo i; - J(i) il nodo che precede i su tale cammino (nel caso il cammino minimo non sia unico, allora se ne sceglie uno qualsiasi fra quelli minimi). Si noti che dai valori J(i) è possibile ricostruire in modo immediato l albero (o uno dei possibili alberi) dei cammini minimi. Possiamo allora illustrare l algoritmo per il calcolo dei percorsi minimi. - f(1) := 0; J(1) := 1; - per j =,,,...,n 1,n ripeti la seguente serie di operazioni f(j) :=min (i,j) ω (j){f(i)+p(i, j)}; J(j) := valore di i per cui si è verificato il minimo; Si noti che una volta assegnato un peso f(i) a un nodo (cioè un valore del cammino minimo dal nodo 1 al nodo considerato), tale peso non viene più modificato nel corso dell algoritmo, ma indica in modo definitivo il valore del cammino. Questo è dovuto al fatto, già citato, che tutti i nodi successivi non devono essere considerati per il calcolo del percorso dal nodo 1 al nodo i. Come esempio consideriamo il grafo di figura Figura 7.: Percorso minimo su grafi aciclici Si tratta di determinare l albero dei cammini minimi tra il nodo 1 e tutti gli altri nodi. I vari passi dell algoritmo (corrispondenti alla successione di nodi visitati, si osservi che in questo caso particolare l indice del passo coincide con l indice del nodo visitato) portano alla seguente successione di valori f(i) e J(i) 11

7 Passo Valore di f(i) Valore di J(i) 1 f(1) = 0 J(1) = 1 f() = 1 J() = 1 f() = min{, 1+1} = J() = f() = min{1+, +1} = J() = Il corrispondente albero dei cammini minimi è riportato in figura Figura 7.: Albero dei cammini minimi Esempio 7.. Sia dato il grafo di Figura 7.. Determinare l albero dei cammini minimi, utilizzando B 1 E A C 10 F D G Figura 7.: Grafo Esercizio 7.. l algoritmo per grafi aciclici. Soluzione. Si deve prima numerare topologicamente il grafo. I passi sono riportati nella seguente tabella ed il grafo risultante in Figura

8 Passo Nodo senza Nodi non ancora Numerazione archi entranti numerati 1 A B,C,D,E,F,G A=1 B o D B,C,E,F,G D = B C,E,F,G B= C E,F,G C= E o G F,G E= 6 G F G=6 7 F F=7 Osserviamo che la numerazione topologica in questo esempio non é unica; infatti ai passi e potevamo scegliere tra due nodi. Apllichiamo ora l algortimo. I passi sono riportati nella seguente tabella Figura 7.6: Numerazione topologica del grafo di Figura 7. Passo Valore di f(i) Valore di J(i) 1 f(1) = 0 J(1) = 1 f() = J() = 1 f() = J() = 1 f() = min{0+, +, +} = J() = 1 f() = min{+1, +} = J() = f(6) = min{+, +} = J(6) = f(7) = min{+10, +, +} =8 J(7) = 6 Il corrispondente albero dei cammini minimi è riportato in figura Un algoritmo per il cammino massimo su grafi aciclici Se il problema di ottimo è quello della determinazione del cammino di peso massimo sul grafo, allora è facile convincersi che basta sostituire nella formula ricorsiva al min un max e tutte le considerazioni fatta continuano, in questo caso particolare di grafi aciclici, a essere valide. Oltre che da considerazioni dirette questo risultato può essere dedotto coniderando che il problema di trovare un cammino di peso massimo su un grafo aciclico è equivalente a quello di trovare un cammino di peso minimo sullo stesso grafo dove ipesi,però, sono stati cambiati di segno. L algoritmo per il calcolo dei cammini massimi su grafici aciclici è allora il seguente 11

9 Figura 7.7: Albero dei cammini minimi - f(1) := 0; J(1) := 1; - per j =,,,...,n 1,n ripeti la seguente serie di operazioni f(j) :=max (i,j) ω (j){f(i)+p(i, j)}; J(i) := valore di i per cui si è verificato il massimo; Come esempio consideriamo sempre il grafo di figura 7. Si tratta di determinare l albero dei cammini massimi tra il nodo 1 e tutti gli altri nodi. I vari passi dell algoritmo portano alla seguente successione di valori f(i) ej(i) Passo Valore di f(i) Valore di J(i) 1 f(1) = 0 J(1) = 1 f() = 1 J() = 1 f() = max{, 1+1} = J() = 1 f() = max{1+, +1} = J() = (oppure J() = ) 7. Cammini minimi su grafi con pesi positivi: algoritmo di Dijkstra L algoritmo di Dijkstra permette di risolvere il problema del cammino minimo fra due nodi qualora tutti i pesi degli archi siano non negativi. Più precisamente, l algoritmo calcola il peso del cammino minimo da un nodo s a tutti gli altri nodi del grafo, costruendo conteporaneamente l albero dei cammini minimi. Siccome in questo caso la numerazione non gioca nessun ruolo, in questo paragrafo supponiamo, senza perdita di generalità, che s sia sempre uguale a 1. Notiamo la differenza con il caso esaminato nel paragrafo precedente: nel caso precedente non c era nessuna restrizione sui pesi, ma c era una restrizione sulla topologia del grafo, che non doveva contenere cicli orientati. Nel caso esaminato in questo paragrafo, non c è nessuna restrizione sulla topologia del grafo (che può essere qualunque e contenere, dunque, cicli orientati), ma c è una restrizione sui pesi, che devono essere non negativi. 11

10 È evidente che il caso analizzato in questo paragrafo è di interesse in quanto, per esempio, in tutti i casi in cui la ricerca di cammini minimi corrisponde alla ricerca di un reale percorso in, per esempio, una città, esisteranno cicli, ma i pesi, che corrispondono a distanze fisiche, sono ovviamente positivi. Un altra differenza che vogliamo segnalare subito è che in questo caso, non è possibile dare una semplice variante dell algoritmo che calcoli i cammini di peso massimo in quanto, se facciamo diventare il problema di minimo un problema di massimo cambiando i segni dei pesi, il grafo che otteniamo ha i pesi tutti non positivi, e quindi l algoritmo non è più utilizzabile. L algoritmo per il calcolo dei cammini minimi su grafi aciclici si basa fortemente sul fatto che i nodi del grafo siano numerati topologicamente. Tenendo conto del fatto che il cammini minimo tra il nodo i eilnodoj (con j>i), se esiste, può passare solo per i nodi k, conk compreso tra i e j, abbiamo sviluppato una semplice procedure iterativa. Nel caso di grafi con pesi non negativi vogliamo, in qualche modo, ancora cercare di sviluppare un algoritmo che abbia le stesse caratteristiche. Ovviamente, non disponendo più di una numerazione topologica dobbiamo ragionare in maniera diversa. Vediamo su un esempio come possiamo ragionare. Consideriamo il grafo in figura 7.8 e proponiamoci di trovare i cammini minimi dal nodo 1 a tutti i nodi da esso raggiungibili. Analogamente al caso dei grafi aciclici, poniamo f(1) = 0 e J(1) = 1. Vogliamo anche in questo caso arrivare ad associare ad ogni nodo i del grafo due etichette, f(i) ej(i) che diano rispettivamente, la distanza dal nodo 1 e il predecessore di i su un cammino minimo che va da 1ai Figura 7.8: Grafo con pesi non negativi Consideriamo ora i nodi raggiungibili da 1 con un solo arco: sono e. Notiamo che il peso dell arco (1, ), che è uguale a 1, è minore del peso dell arco (1, ), che è uguale a 7. Possiamo allora porre f() = 1 e J() = 1. Infatti, supponiamo per assurdo che esista un cammino minimo per andare da 1 a diverso da quello fornito dall arco (1,) e con un peso più piccolo. Questo cammino dovrebbe prima uscire da 1, passando quindi per un arco di peso 1 o uno di peso 7, quindi dovrebbe tornare a. Ma siccome gli archi hanno tutti pesi non negativi, il peso di questa seconda parte di cammino si va ad aggiungere a quello dell arco usato per uscire da 1. E quindi ovvio che, essendo il peso dell arco (1,) il più piccolo tra i pesi degli archi uscenti da 1, il peso di questo altro ipotetico cammino, deve essere almeno di 1. Quindi le etichette assegnate al nodo sono corrette. Possiamo ora ripeter qeusto ragionamento. Consideriamo i nodi raggiungibili da 1 e (i nodi già 116

11 etichettati). Sono,, 6. Le distanze minime da 1, con la restrizione di passare solo per 1 e, sono: - per il nodo : 6 (distanza data dal cammino che passa per i nodi 1,, ); - per il nodo : (distanza data dal cammino che passa per i nodi 1,, ); - per il nodo 6: 8 (distanza data dal cammino che passa per i nodi 1,,6). Notiamo che per andare al due passando solo per i nodi 1 e (già etichettati) esiste anche dato dall arco (1,), ma questi ha un peso 7 superiore a quello che si ottiene passando per. Osserviamo anche che il nodo scelto è, tra i nodi ancora non etichettati, quello che ha la distanza distanza minima da 1 se ci limitiamo a considerare solo i cammini che passano per i nodi già etichettati. A questo punto possiamo ragionare in modo simile a quello adottato prima, anche se la situazione è leggermente più complessa. Consideriamo il nodo (quello che ha la distanza più piccola, tra quelli raggiungibili dai nodi 1 e ), e poniamo f() = e J() =. Queste sono etichette corrette. Supponiamo infatti che esista un altro cammino, C, da 1 a, diverso da quello trovato (e dato dai nodi 1, e ) e con un peso minore di. Questo cammino C deve passare per almeno un nodo diverso da 1 e e per l osservazione in corsivo fatta poche righe sopra. Ora, sia j il primo nodo diverso da 1, e nel cammino C. Il peso del cammino da1aj deve essere di almeno, sempre per l osservazione in corsivo fatta prima. Siccome la parte del cammino che va da j a ha un valore non negativo (per l ipotesi che i pesi siano tutti non negativi) abbiamo di nuovo un assurdo. A questo punto la tecnica da adottare dovrebbe essere chiara. A un generico passo dell algoritmo possiamo supporre di avere un insieme di nodi, diciamo S, che hanno già le loro etichette f e J corretamente assegnate. Si sceglie il nuovo nodo da mettere in S come il nodo (o uno dei nodi) che ha la distanza minima da 1 con il vincolo di passare solo per nodi di S. Ad ogni passo aggiungiamo un nodo in S e quindi in un numero di passi uguale al numero dei nodi, l algoritmo termina con le etichette corretamente assegnate. Qui di seguito diamo una descrizione più dettagliata (e più vicina a una possibile implementazione sul calcolatore) dell algoritmo delineato. In questa descrizione indichiamo con S inodiacuisonostate assegnate le etichette corrette f e J, econt tutti gli altri nodi. A differenza di quanto visto finora, però, noi diamo delle etichette provvisorie, che denominiamo sempre, per brevità, f e J, anche ai nodi in T. Se i appartiene a T, f(i) rappresenta le distanze minima del nodo i dal nodo 1, con il vincolo di passare solo per nodi di S, ej(i) è il corrispondente predecessore lungo il cammino minimo. Se non esiste nessun cammino da 1 a i che passa solo per nodi in S, poniamof(i) =+ e J(i) è lasciato indefinito. Queste etichette hanno l unico scopo di facilitare, ad ogni passo, la scelta del nodo in T da mettere in S. Infatti è chiaro che basterà scegliere, di volta in volta, il nodo in T con il valore di f più piccolo. Ovviamente, ad ogni iterazione, cambiando i nodi in S, le etichette provvisori dovranno essere aggiornate. Questo viene fatto nel punto (c) dell algoritmo, la cui logica dovrebbe essere chiara, e che verrà ulteriormente chiarito dall esempio che faremo subito dopo la descrizione dell algoritmo. L algoritmo termina quando o tutti i nodi del grafo sono in S o quando tutti i nodi in T hanno il valore di f uguale a +, fatto che ovviamente indica che i nodi in T non sono raggiungibili da 1. Agoritmo di Dijkstra (a) Inizializzazione. Poni S {1}, T {,...,n}. f(1) = 0, J(1) = 1. Poni f(i) =p(1,i), J(i) =1,per(1,i) ω + (1). Poni f(i) =+, per(1,i) ω + (1). (b) Assegnazione etichetta permanente Trova j T tale che f(j) =min i T f(i). Poni T = T {j}, S = S {j}. 117

12 Se T = o f(i) =+, i T STOP (terminazione dell algoritmo). (c) Assegnazione etichetta provvisoria Per ogni (j, i) T ω + (j) talechef(i) >f(j)+p(j, i) Poni: c.1 f(i) =f(j)+p(j, i) c. J(i) =j Vai al passo (b). Vediamo, nel caso del grafo di figura 7.8, come l algoritmo proceda (per semplicità, l evoluzione di T è omessa essendo T = V S). Iterazione 0 Inizializzazione. (a) S = {1}. d(1) = 0. d() = 7. d() = 1. d() = +. d() = +. d(6) = +. J() = 1. J() = 1. J() = 1. J() = 1. J(6) = 1. Iterazione 1. (b) j =. S = {1, }. (c.1) (ω + (j) T = {(, ), (, ), (, 6)}. E facile vedere che per ognuno dei nodi {,, 6} è verificata la condizione d(i) >d(j)+p(j, i), e quindi le etichette vanno tutte aggiornate. d() = d() + 1 = 6. d() = + d() =. d(6) = 7 + d() = 8. (c.) J() =. J() =. J(6) =. Iterazione. (b) j =. S = {1,, }. (c.1) ω + (j) T = {(, ), (, )}. d() = d() + =. d() = d() + = 8. (c.) J() =. J() =. Iterazione (b) j =. S = {1,,, }. (c.1) ω + (j) T = {(, ), (, 6)}. L etichetta del nodo non soddisfa la condizione al passo (c), per cui va aggiornata solo l etichetta (e il predecessore) del nodo 6. d(6) = d() + 1 = 6. (c.) J(6) =. Iterazione. (b) j =6. S = {1,,,, 6}. (c) ω + (j) T =. Iterazione. (b) j =. S = {1,,,,, 6}. STOP. 118

13 I pesi dei cammini minimi saranno quindi: d(1) = 0. d() =. d() = 1. d() = 8. d() =. d(6) = 6. Una comoda rappresentazione dell evolvere dell algoritmo è la seguente forma tabellare ove le righe rappresentano iterazioni mentre le colonne rappresentano i nodi selezionati ad ogni iterazione. Per ciascun nodo j ci sono due colonne che riportano il valore della variabile d(j) e della J(j) all iterazione i-esima. L elemento selezionato all iterazione i-esima è rappresentato in grassetto e, nelle iterazioni successive, il valore della variabile corrispondente non viene più riportato. La colonna corrispondente al nodo 1 è omessa. 7. Due esempi nodo 6 d J d J d J d J d J It (fitt.) + 1(fitt.) + 1(fitt.) It (fitt.) 8 It. 8 8 It. 8 6 It. 8 6 It. 8 In questo paragrafo consideriamo più in dettaglio due esempi di applicazioni non banali di quanto visto in questo capitolo Tecniche reticolari di programmazione delle attività I progetti di grandi dimensioni sono costituiti da più attività, che devono essere tutte completate affinché il progetto di cui fanno parte sia completato, ma che possono essere iniziate e svolte indipendentemente l una dall altra, purché sia rispettata una data sequenza. Queste condizioni sono caratteristiche di molti progetti di sviluppo e produzione, ad esempio nel settore aeronautico ed aereospaziale, o di costruzione, ad esempio nell ingegneria civile, o di manutenzione di grossi sistemi; tutti progetti in cui il numero di attività costituenti può essere dell ordine delle migliaia. La gestione di un progetto consiste nel coordinamento dell esecuzione delle varie attività, unitamente al controllo dei tempi e dei costi di esecuzione. Poiché questo è evidentemente un problema di rilevante importanza economica, e a volte strategica, per esso sono state sviluppate, a partire dal 198, alcune tecniche particolarmente efficaci, tra cui hanno assunto un ruolo importante il PERT (Program Evaluation and Review Technique) e il CPM (Critical Path Method). Il PERT è stato sviluppato inizialmente per pianificare le operazioni di ricerca e sviluppo connesse al progetto del missile Polaris, e l applicazione di questa tecnica ha consentito di concludere il progetto con due anni di anticipo sui cinque anni inizialmente preventivati. Questo successo iniziale ha portato ad una sua rapida diffusione. Lo scopo principale del PERT è quello di pianificare e controllare i tempi di completamento delle attività di un progetto, e del progetto nel suo insieme, tenendo conto del fatto che i tempi di esecuzione delle varie attività non sono a priori noti con certezza, e possono variare in dipendenza di molteplici fattori aleatori (PERT-Time); successivamente sono state fatte estensioni alla pianificazione e controllo dei costi di esecuzione, soggetti anch essi ad aleatorietà (PERT-Cost). PERT-Time e PERT-Cost costituiscono applicazioni software molto diffuse. Il CPM si applica invece quando al tempo di esecuzione di ogni attività può essere attribuito un valore certo, più o meno lungo a seconda di quanto si decide di spendere per l esecuzione dell attività stessa; è esperienza comune che se si riduce il tempo di esecuzione di un attività il suo costo aumenta e viceversa. Il CPM ha come scopo principale quello di pianificare e controllare i tempi di esecuzione di un progetto, rendendo minima la spesa complessiva, e trova larga applicazione in programmi riguardanti la manutenzione periodica di grossi impianti industriali, e lavori di produzione e costruzione per cui esiste una consolidata esperienza, cosicché 119

14 si possono ritenere note con esattezza le relazioni costo-tempo di esecuzione. Base comune del PERT e del CPM è la rappresentazione del progetto mediante un grafo orientato, secondo opportune norme. Poiché in questo contesto, al grafo rappresentativo del progetto viene dato il nome di diagramma reticolare, queste tecniche vengono chiamate tecniche reticolari di programmazione delle attività. Dall analisi del diagramma reticolare si possono ricavare molte infomazioni significative sul progetto. Vogliamo qui illustrare alcune considerazioni, che possono essere fatte nell analizzare i progetti, in cui giocano un ruolo importanti i cammini minimi. Iniziamo la nostra analisi spiegando come sia possibile associare ad un progetto un diagramma reticolare (cioè un grafo orientato). La costruzione del diagramma Il diagramma reticolare rappresenta la successione temporale e la reciproca dipendenza delle varie attività che concorrono all esecuzione del progetto, attività che devono essere completate prima che il progetto possa considerarsi eseguito. Il primo passo nella costruzione del diagramma reticolare consiste nell individuazione e nell elencazione di tutte le attività coinvolte nell esecuzione del progetto, con un livello di disaggregazione tale per cui le si possa considerare ciascuna distinta da tutte le altre. Segue una fase di rappresentazione grafica, che dà luogo al disegno di un grafo orientato in cui ogni attività è rappresentata da un arco o ramo i cui nodi estremi rappresentano, secondo la direzione del ramo, l inizio e il termine dell attività in questione. Pertanto nei diagrammi reticolari un attivita A è rappresentata come in figura 7.9, ove i nodi i e j rappresentano rispettivamente l inizio e il termine dell attività. i A j Figura 7.9: Rappresentazione grafica dell attività A Naturalmente tra le varie attività esistono delle precedenze, per cui, per ciascuna attività, esisteranno altre attività che devono essere completate prima che quella in questione possa avere inizio. Il caso più semplice di precedenza quello indicato in figura 7.10a, ove l attività A precede l attività B, e il nodo j rappresenta il termine dell attività A e l inizio dell attività B. In figura 7.10b è rappresentato il caso in cui l attività A precede l attività B che a sua volta precede l attività C.Può però anche avvenire che due attività, la A e la B precedano una terza, la C, senza che tra A e B esista una relazione di precedenza: questo caso, in cui le attività A e B possono essere svolte in parallelo, è rappresentato in figura 7.10c. In figura 7.10d abbiamo il caso in cui le due attività B e C, tra cui non sussistono precedenze, sono entrambe precedute dall attività A. Per esprimere il fatto che l attività A precede l attività B utilizziamo la notazione A < B, per esprimere il fatto che l attività B è preceduta dall attività A, utilizziamo la notazione B > A. Esempio 1. In figura 7.11b) è rappresentato il caso di un progetto il cui completamento richiede l esecuzione di 9 attività, tra cui sussistono le relazioni di precedenza: A < B,C; B < D, E; C < F; D < G; E,F < H; G,H < I. Il progetto rappresentato in 7.11b verrà più volte riutilizzato a scopo esemplificativo; ad esso faremo pertanto riferimento con il nome di progetto P1. Nel disegnare il diagramma reticolare si utilizzano le seguenti regole fondamentali, alcune delle quali già implicitamente enunciate: 10

15 a) A B i j k A < B b) A B i j k C l A < B < C i A k C l A,B < C j B c) B k i A j A < B,C C l Figura 7.10: Rappresentazione grafica delle regole di precedenza 1. Le attività sono rappresentate dai rami del grafo.. L inizio di un attivitàè subordinato al completamento di tutte quelle che la precedono: in termini di diagramma reticolare ciò significa che rami diretti verso un nodo rappresentano attività da completare prima che abbiano inizio le attività rappresentate da rami aventi origine nel nodo stesso.. La lunghezza dei rami o la loro forma non hanno significato.. Due nodi non possono essere collegati da più diunramo.. L inizio del progetto è rappresentato da un nodo contrassegnato con zero. 6. Tutti i nodi sono numerati in modo che, se esiste un ramo diretto dal nodo i al nodo j, risulta i<j. 7. Il grafo può avere un solo nodo iniziale e un solo nodo finale. 11

16 D G A B 0 1 E 6 I 7 C H F Figura 7.11: Diagramma reticolare del progetto P1 Delle suddette regole, le prime tre tengono conto della logica interna del grafo; le altre quattro sono richieste dai metodi di analisi del grafo, metodi che utilizzano tabulazioni ed uso di calcolatori. Per quanto riguarda la regola 6, ricordiamo che una siffatta numerazione è detta numerazione topologica e che nel paragrafo precedente abbiamo visto che è possibile dare una numerazione topologica ai nodi di un grafo orientato se e solo se il grafo è aciclico. Bisogna quindi chiedersi se il diagramma reticolare di un progetto è un grafo aciclico. La risposta è ovviamente positiva. Se infatti esistesse un ciclo (orientato) nel diagramma reticolare di un progetto, questo vorrebbe dire, per come abbiamo costruito il diagramma reticolare stesso, che esistono delle attività che non possono iniziare prima di essere state concluse, e questo e ovviamente assurdo. La regola, infine, ha lo scopo di rendere univoca la corrispondenza tra coppie di nodi ed attività, corrispondenza che potrebbe venire meno quando alcune attività possono essere svolte in parallelo, come accade nel seguente esempio. A 0 1 B C D Figura 7.1: Una coppia di nodi che non individua univocamente un attività Esempio. Consideriamo le attività A, B, C, D, con le relazioni di precedenza A < B, C; B, C < D. Il grafo costruito ignorando la regola è quello di 7.1, in cui alla coppia di nodi (1,) non è associata in maniera univoca un attività. Quando la regola non è esplicitamente soddisfatta dal progetto, come accade nell Esempio, occorre ricorrere ad un artificio che consiste nell introdurre un attività fittizia, cui va associato un tempo di esecuzione nullo: nel caso dell Esempio, introducendo l attività fittizia X si ottiene il grafo della 7.1, 1

17 che rispetta la regola. Con l introduzione di attività fittizie è quindi possibile individuare ogni attività A B 0 1 D C X mediante la coppia ordinata dei nodi estremi. Figura 7.1: Introduzione di un attività fittizia Esercizio 1. Un progetto comporta l esecuzione delle 7 attività A,B,C,D,E,F,G,tracuisussistono le relazioni di precedenza: A < B,C; C < D,E; D,E < F; B,F < G. Si costruisca il diagramma reticolare del progetto. Il progetto considerato nell esercizio precedente (il cui diagramma reticolare è dato in fondo al capitolo) sarà in seguito riutilizzato a scopo di esercizio; ad esso faremo riferimento con il nome di progetto P. Un altro caso in cui è richiesta l introduzione di un attività fittizia si verifica quando due attività precedono entrambe una terza attivià, e una sola delle due ne precede una quarta. In questo caso èsolo l introduzione di un attività fittizia che rende possibile la costruzione del grafo, come si vede nel prossimo esempio. B D i k m Y C E j l n Figura 7.1: Introduzione dell attività fittizia Y Esempio. Un progetto prevede, tra la altre, le attività B, C, D, E, che devono essere svolte rispettando le precedenze: B,C < D;C< E. Dal diagramma di figura 7.1 si rileva come solo l introduzione dell attività fittizia Y rende possibile la rappresentazione di questa parte del progetto. 1

18 Nel diagramma reticolare ogni nodo (ad eccezione del primo e dell ultimo) rappresenta il termine di alcune attività e l inizio di altre. Pertanto, in questo contesto, i nodi vengono anche chiamati eventi. A 1 D G 6 H 1 E 0 B 9 C 1 F 10 J I 10 M R 1 6 L N O P Q S T K Figura 7.1: Diagramma reticolare del progetto P Esempio Un progetto consiste nell esecuzione di una serie di attività indicate con A, B,..., T con le seguenti relazioni di precedenza: A, B, C possono iniziare immediatamente; D, E > A; F > B; G, H > D; I > F, G; J,K > C; M,L > J; N > K,L; O > M,N; P > H,I,O; R,Q> P; S > Q; T > R,S. Costruiamo il diagramma reticolare del progetto, numerando i nodi in modo che se il ramo (i, j) rappresenta un attività, risulta i<j. Utilizzando le regole prima elencate, otteniamo il grafo di figura 7.1. Anche il progetto considerato nell Esempio verrà riutilizzato nel seguito; ad esso faremo riferimento con il nome di progetto P. Domanda 1. Sai descrivere a cosa corrisponde il verificarsi dell evento 9 nel diagramma reticolare del progetto P rappresentato in figura 7.1? Domanda. Nel costruire il diagramma reticolare del progetto P è stato necessario introdurre attività fittizie? Esercizio. Supponiamo che alle relazioni di precedenza del progetto P debba essere aggiunta la C < F. Come si modifica il grafo di figura 7.1? Esercizio. Supponi che il progetto P sia ampliato con l introduzione dell attività U, per cui sussistono le relazioni di precedenza U > M,N ; U < Q. Come si modifica il grafo di figura 7.1? Il percorso critico Abbiamo finora visto come sia possibile costruire un grafo che rappresenti l esecuzione di un progetto, dopo che il progetto stesso è stato decomposto in attività, o fasi, di cui si siano analizzate le relazioni di precedenza. Non abbiamo però finora tenuto conto del tempo richiesto per l esecuzione delle varie attività che compongono il progetto, e che ovviamente condizionano il tempo di esecuzione complessivo. Poiché i metodi reticolari di programmazione hanno, tra gli altri, lo scopo di controllare i tempi di esecuzione delle attività al fine di ottenere il rispetto del tempo di completamento del progetto, occorre aggiungere alla analisi qualitativa delle precedenze già effettuata anche un analisi quantitativa che determini i valori 1

19 0 A B 1 () (7) C () D G () () E H () (8) F (6) 6 I () 7 Figura 7.16: Tempi di esecuzione delle attività del progetto P1 temporali corrispondenti agli eventi descritti dal grafo, e individui i limiti entro cui tali valori temporali possono variare senza pregiudicare il valore del tempo complessivo di completamento. Per effettuare quest analisi associamo ad ogni attività (i, j) un tempo di esecuzione t ij. Il tempo di esecuzione t ij può essere assunto come variabile certa, il che avviene nel CPM, o come variabile aleatoria, il che avviene nel PERT.Inentrambiicasiilmetododianalisiè fondamentalmente lo stesso, per cui in questo paragrafo facciamo riferimento alla situazione in cui i tempi di esecuzione sono noti con certezza. In ogni progetto esiste un certo insieme di attività che sono di particolare importanza ai fini della determinazione del tempo di completamento dell intero progetto, nel senso che se si verifica un ritardo nel completamento di una di queste attività, si verifica un ritardo anche nel completamento del progetto. Altre attività invece sono meno importanti, nel senso che possono anche subire un ritardo, entro certi limiti, senza che l intero progetto ne risenta. È evidente l importanza di distinguere tra questi due tipi di attività, cosìcome quella di determinare il tempo minimo entro il quale certe attività intermedie possono essere completate. Quanto esposto in questo paragrafo serve proprio a consentire questa analisi. Supponiamo dunque che ad ogni attività (i, j) sia associato il tempo di esecuzione t ij ; per le attività fittizie il tempo di esecuzione è ovviamente nullo. Definizione 7..1 Si definisce tempo minimo di raggiungimento del nodo i, e si indica con t i, il minimo tempo entro cui possono essere terminate tutte le attività afferentialnodoi. Data la definizione precedente viene del tutto naturale definire il tempo di completamento minimo del progetto nel seguente modo. Definizione 7.. Si definisce tempo minimo di completamento dell intero progetto, e si indica con T, il tempo minimo di raggiungimento del nodo finale T = t f. In base alle regole di costruzione del diagramma reticolare di un progetto è facile convincersi che il tempo minimo di raggiungimento di un nodo i coincide con il peso del cammino massimo dal nodo iniziale al nodo i, dove i pesi degli archi sono dati dalle durate t ij delle attività che essi rappresentano. Poiché il diagramma reticolare è aciclico e i nodi sono già numerati in modo topologico, è immediato applicare l algoritmo per i cammini massimi su grafi aciclici al fine di calcolare i tempi di raggiungimento minimi. Esempio. Consideriamo il diagramma reticolare del progetto P1, e associamo alle attività A, B,..., I i seguenti tempi di esecuzione, espressi in giorni lavorativi : 1

20 tempo di esecuzione di A: t 01 = tempo di esecuzione di B: t 1 =7 tempo di esecuzione di C: t 1 = tempo di esecuzione di D: t = tempo di esecuzione di E: t = tempo di esecuzione di F: t =6 tempo di esecuzione di G: t 6 = tempo di esecuzione di H: t 6 =8 tempo di esecuzione di I : t 67 =. Nella figura 7..1 i tempi di esecuzione delle attività sono stati associati ai rami del diagramma reticolare del progetto. Posto t 0 =0, possiamo calcolare per i successivi nodi i tempi minimi di raggiungimento, espressi in giorni, utilizzando l algoritmo dei cammini massimi. per il nodo 1, t 1 = t 0 + t 01 =0+= per il nodo, t = t 1 + t 1 =+7=1 per il nodo, t = t 1 + t 1 =+=8 per il nodo, t = t + t =1+=16 per il nodo, t =max(t + t,t + t )=max(1+, 8+6)=17 per il nodo 6, t 6 =max(t + t 6,t + t 6 )=max(16+, ) = per il nodo 7, t 7 = t 6 + t 67 = + + 7; avremo inoltre per il tempo minimo di completamento del progetto, T = t 7 = 7 giorni. Esercizio. Consideriamo nuovamente il progetto P e associamo alle attività i seguenti tempi di esecuzione,espressiinsettimane:a,settimane;b,;c,1;d,;e,1;f,;g,.determinareiltempo minimo di completamento del progetto. Domanda Con riferimento al progetto P1, supponiamo che il tempo di esecuzione dell attività H passi da 8 a 10 giorni. Come varia il tempo minimo di completamento del progetto? Domanda Sempre con riferimento al progetto P1, supponiamo ora che il tempo di esecuzione dell attività G passi da a 6 giorni. Come varia il tempo minimo di completamento del progetto? Oltre al tempo minimo di completamento dell intero progetto, è utile introdurre anche la nozione di tempo minimo di completamento per ogni attività. Ovviamente un attività (i, j) può avere inizio, al più presto, dopo un tempo t i dall inizio dell esecuzione del progetto, in quanto perché l attività possa avere inizio deve essere stato raggiunto il nodo i; di conseguenza se l attività richiede un tempo di esecuzione pari a t ij,nonpotrà essere completata prima di un tempo pari a t i + t ij. Possiamo quindi dare la definizione seguente: Definizione 7.. Si definisce tempo minimo di completamento dell attività (i, j), e si indica con C ij, il valore C ij = t i + t ij. Esempio 6 Consideriamo ancora il progetto P1. Per le attività del progetto, tenendo conto dei tempi di raggiungimento dei nodi calcolati nell Esempio, abbiamo i seguenti tempi minimi di completamento espressi in giorni: per l attività A:C 01 = t0+t 01 = per l attività B:C 1 = t 1 + t 1 =+7=1 per l attività C:C 1 = t 1 + t 1 =+=8 per l attività D:C = t + t =1+=16 per l attività E:C = t + t =1+=17 per l attività F:C = t + t =8+6=1 16

21 per l attività G:C 6 = t + t 6 =16+=18 per l attività H:C 6 = t + t 6 =17+8= per l attività I:C 67 = t 6 + t 67 = + = 7. Nelle tecniche reticolari di programmazione sono di fondamentale importanza le cosidette attività critica di cui diamo la definizione. Definizione 7.. Sia T il tempo minimo di completamento di un progetto, corrispondente a un insieme {t ij } di valori prefissati dei tempi di esecuzione delle singole attività. Un attività (h, k) viene detta attività critica se un variazione positiva comunque piccola ma non nulla del suo tempo di esecuzione comporta una variazione della stessa entità nel tempo minimo di completamento del progetto; e cioè, un attività (h, k) è critica se, sostituito t hk con t hk + t,con t 0il tempo minimo di completamento del progetto diventa T + t, per qualunque valore positivo di t. Esempio 7 Nel progetto P1 l attività Eè critica: infatti se si pone t =+ t, si ottiene per i tempi di raggiungi mento dei nodi, 6, 7 : per il nodo, t =max(t + t,t + t )=max(1++ t, 8+6)=17+ t per il nodo 6, t 6 = max(t + t 6,t + t 6 )=max(16+, 17 + t +8)=+ t per il nodo 7, t 7 = t 6 + t 67 =+ t +=7+ t; invece l attività F non critica; infatti posto t =6+ t, si ottiene per il tempo di raggiungimento del nodo : t =max(t + t,t + t )= max(1 +, 8+6+ t) =17 ecioè lo stesso valore di prima, almeno fintanto che t non supera i giorni; e ovviamente se t non varia, non variano neanche i tempi minimi di raggiungimento dei nodi successivi. La determinazione dei percorsi critici è evidentemente di fondamentale importanza nelle tecniche reticolari di programmazione. Infatti le attività critiche sono quelle su cui più stretto deve essere il controllo di chi gestisce l esecuzione del progetto, nei casi in cui un ritardo dell esecuzione complessiva comporta una penalità, che può essere sia economica, sia di immagine. Da quanto abbiamo visto finora, l individuazione delle attività criticheè molto semplice: è evidente che le attività critiche sono tutte e sole le attività che appartengono ad almeno un cammino massimo dal nodo iniziale al nodo finale. Per quanto riguarda le attività non critiche è anche possibile stimare di quanto esse possano essere ritardate senza aumentare il tempo di completamento del progetto. Un attività non critica, per esempio l attività F nel progetto P1, non appartiene a un cammino massimo dal nodo iniziale al nodo finale, ma appartiene comunque a cammini che vanno dal nodo iniziale al nodo finale (nel caso specifico considerato uno solo, in generale più di uno). Sia allora L max la lunghezza massima di un percorso dal nodo iniziale al nodo finale che passa per F. È chiaro che l attività F è l unica a subire un ritardo, il ritardo massimo che è possibile tollerare senza che aumenti la durata del progetto è T L max.questotempoè chiamato tempo di slittamento dell attività. In generale: Definizione 7.. Si definisce tempo di slittamento, o margine di tempo dell attività (i, j) il valore che indica di quanto tempo può essere ritardato il completamento dell attività (i, j) senza che si determini un aumento del tempo minimo di completamento dell intero progetto. Ovviamente le attività critiche hanno tempo di slittamento nullo, le attività non critiche hanno un tempo di slittamento positivo. Segnaliamo che è possibile determinare in maniera molto semplice e efficiente i tempi di slittamento di tutte le attività di un progetto, noi non approfondiamo qui ulteriormente la questione per mancanza di tempo. 7.. Gestione delle scorte. Il problema di cui ci occuperemo in questo capitolo è il cosiddetto problema di Gestione delle Scorte. Si tratta di un problema di programmazione della produzione industriale che consiste nel decidere, dato un 17

CPM - PERT CPM - PERT. Rappresentazione di un progetto. Gestione di un progetto. Critical Path Method Project Evaluation and Review Technique

CPM - PERT CPM - PERT. Rappresentazione di un progetto. Gestione di un progetto. Critical Path Method Project Evaluation and Review Technique CPM - PERT CPM - PERT CPM e PERT sono metodologie per la gestione di progetti composti da più attività in cui esistano relazioni di precedenza. Critical Path Method Project Evaluation and Review Technique

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza Il problema di flusso di costo minimo (MCF) Dati : grafo orientato G = ( N, A ) i N, deficit del nodo i : b i (i, j) A u ij, capacità superiore (max quantità di flusso che può transitare) c ij, costo di

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani Ricerca Operativa Esercizi sul metodo del simplesso Luigi De Giovanni, Laura Brentegani 1 1) Risolvere il seguente problema di programmazione lineare. ma + + 3 s.t. 2 + + 2 + 2 + 3 5 2 + 2 + 6,, 0 Soluzione.

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede

Dettagli

4. Operazioni elementari per righe e colonne

4. Operazioni elementari per righe e colonne 4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Lezione 9: Cambio di base

Lezione 9: Cambio di base Lezione 9: Cambio di base In questa lezione vogliamo affrontare uno degli argomenti piu ostici per lo studente e cioè il cambio di base all interno di uno spazio vettoriale, inoltre cercheremo di capire

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

1 Applicazioni Lineari tra Spazi Vettoriali

1 Applicazioni Lineari tra Spazi Vettoriali 1 Applicazioni Lineari tra Spazi Vettoriali Definizione 1 (Applicazioni lineari) Si chiama applicazione lineare una applicazione tra uno spazio vettoriale ed uno spazio vettoriale sul campo tale che "!$%!

Dettagli

19. Inclusioni tra spazi L p.

19. Inclusioni tra spazi L p. 19. Inclusioni tra spazi L p. Nel n. 15.1 abbiamo provato (Teorema 15.1.1) che, se la misura µ è finita, allora tra i corispondenti spazi L p (µ) si hanno le seguenti inclusioni: ( ) p, r ]0, + [ : p

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Gestione Turni. Introduzione

Gestione Turni. Introduzione Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente

Dettagli

Probabilità discreta

Probabilità discreta Probabilità discreta Daniele A. Gewurz 1 Che probabilità c è che succeda...? Una delle applicazioni della combinatoria è nel calcolo di probabilità discrete. Quando abbiamo a che fare con un fenomeno che

Dettagli

Corrispondenze e funzioni

Corrispondenze e funzioni Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei

Dettagli

Esercizio 1 Dato il gioco ({1, 2, 3}, v) con v funzione caratteristica tale che:

Esercizio 1 Dato il gioco ({1, 2, 3}, v) con v funzione caratteristica tale che: Teoria dei Giochi, Trento, 2004/05 c Fioravante Patrone 1 Teoria dei Giochi Corso di laurea specialistica: Decisioni economiche, impresa e responsabilità sociale, A.A. 2004/05 Soluzioni degli esercizi

Dettagli

IL PROBLEMA DELLO SHORTEST SPANNING TREE

IL PROBLEMA DELLO SHORTEST SPANNING TREE IL PROBLEMA DELLO SHORTEST SPANNING TREE n. 1 - Formulazione del problema Consideriamo il seguente problema: Abbiamo un certo numero di città a cui deve essere fornito un servizio, quale può essere l energia

Dettagli

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme 1. L insieme R. Per lo svolgimento del corso risulta particolarmente utile considerare l insieme R = R {, + }, detto anche retta reale estesa, che si ottiene aggiungendo all insieme dei numeri reali R

Dettagli

Il principio di induzione e i numeri naturali.

Il principio di induzione e i numeri naturali. Il principio di induzione e i numeri naturali. Il principio di induzione è un potente strumento di dimostrazione, al quale si ricorre ogni volta che si debba dimostrare una proprietà in un numero infinito

Dettagli

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010 elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Ottimizzazione Multi Obiettivo

Ottimizzazione Multi Obiettivo Ottimizzazione Multi Obiettivo 1 Ottimizzazione Multi Obiettivo I problemi affrontati fino ad ora erano caratterizzati da una unica (e ben definita) funzione obiettivo. I problemi di ottimizzazione reali

Dettagli

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Dettagli

Consideriamo due polinomi

Consideriamo due polinomi Capitolo 3 Il luogo delle radici Consideriamo due polinomi N(z) = (z z 1 )(z z 2 )... (z z m ) D(z) = (z p 1 )(z p 2 )... (z p n ) della variabile complessa z con m < n. Nelle problematiche connesse al

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Il concetto di valore medio in generale

Il concetto di valore medio in generale Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo

Dettagli

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005. Lezione 11

Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005. Lezione 11 Algoritmi e Strutture Dati II: Parte B Anno Accademico 2004-2005 Docente: Ugo Vaccaro Lezione 11 In questa lezione vedremo alcune applicazioni della tecnica greedy al progetto di algoritmi on-line. Vediamo

Dettagli

b i 1,1,1 1,1,1 0,1,2 0,3,4

b i 1,1,1 1,1,1 0,1,2 0,3,4 V o Appello // RICERCA OPERATIVA - Corso A (a.a. 9/) Nome Cognome: Corso di Laurea: L C6 LS LM Matricola: ) Si consideri il problema di flusso di costo minimo in figura. Si verifichi se il flusso ammissibile

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Lezioni di Matematica 1 - I modulo

Lezioni di Matematica 1 - I modulo Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può

Dettagli

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria). Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria). Aprile 20 Indice Serie numeriche. Serie convergenti, divergenti, indeterminate.....................

Dettagli

10. Insiemi non misurabili secondo Lebesgue.

10. Insiemi non misurabili secondo Lebesgue. 10. Insiemi non misurabili secondo Lebesgue. Lo scopo principale di questo capitolo è quello di far vedere che esistono sottoinsiemi di R h che non sono misurabili secondo Lebesgue. La costruzione di insiemi

Dettagli

2.1 Definizione di applicazione lineare. Siano V e W due spazi vettoriali su R. Un applicazione

2.1 Definizione di applicazione lineare. Siano V e W due spazi vettoriali su R. Un applicazione Capitolo 2 MATRICI Fra tutte le applicazioni su uno spazio vettoriale interessa esaminare quelle che mantengono la struttura di spazio vettoriale e che, per questo, vengono dette lineari La loro importanza

Dettagli

Calcolo del Valore Attuale Netto (VAN)

Calcolo del Valore Attuale Netto (VAN) Calcolo del Valore Attuale Netto (VAN) Il calcolo del valore attuale netto (VAN) serve per determinare la redditività di un investimento. Si tratta di utilizzare un procedimento che può consentirci di

Dettagli

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo L. De Giovanni G. Zambelli 1 Problema del flusso a costo minimo Il problema del flusso a costo minimo é definito

Dettagli

Luigi Piroddi piroddi@elet.polimi.it

Luigi Piroddi piroddi@elet.polimi.it Automazione industriale dispense del corso 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul grafo di raggiungibilità,

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

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

La distribuzione Normale. La distribuzione Normale

La distribuzione Normale. La distribuzione Normale La Distribuzione Normale o Gaussiana è la distribuzione più importante ed utilizzata in tutta la statistica La curva delle frequenze della distribuzione Normale ha una forma caratteristica, simile ad una

Dettagli

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione presentato in questo file trova la seq. a costo minimo per

Dettagli

Soluzione dell esercizio del 12 Febbraio 2004

Soluzione dell esercizio del 12 Febbraio 2004 Soluzione dell esercizio del 12/2/2004 1 Soluzione dell esercizio del 12 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. 2. Modello concettuale

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

LEZIONE 23. Esempio 23.1.3. Si consideri la matrice (si veda l Esempio 22.2.5) A = 1 2 2 3 3 0

LEZIONE 23. Esempio 23.1.3. Si consideri la matrice (si veda l Esempio 22.2.5) A = 1 2 2 3 3 0 LEZIONE 23 231 Diagonalizzazione di matrici Abbiamo visto nella precedente lezione che, in generale, non è immediato che, data una matrice A k n,n con k = R, C, esista sempre una base costituita da suoi

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD

Dettagli

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,

Dettagli

13. Campi vettoriali

13. Campi vettoriali 13. Campi vettoriali 1 Il campo di velocità di un fluido Il concetto di campo in fisica non è limitato ai fenomeni elettrici. In generale il valore di una grandezza fisica assegnato per ogni punto dello

Dettagli

IL SISTEMA INFORMATIVO

IL SISTEMA INFORMATIVO LEZIONE 15 DAL MODELLO DELLE CONDIZIONI DI EQUILIBRIO AL MODELLO CONTABILE RIPRESA DEL CONCETTO DI SISTEMA AZIENDALE = COMPLESSO DI ELEMENTI MATERIALI E NO CHE DIPENDONO RECIPROCAMENTE GLI UNI DAGLI ALTRI

Dettagli

Tecniche Reticolari. Problema: determinare l istante di inizio di ogni attività in modo che la durata complessiva del progetto sia minima

Tecniche Reticolari. Problema: determinare l istante di inizio di ogni attività in modo che la durata complessiva del progetto sia minima Project Management Tecniche Reticolari Metodologie per risolvere problemi di pianificazione di progetti Progetto insieme di attività A i di durata d i, (=,...,n) insieme di relazioni di precedenza tra

Dettagli

Studio di una funzione ad una variabile

Studio di una funzione ad una variabile Studio di una funzione ad una variabile Lo studio di una funzione ad una variabile ha come scopo ultimo quello di pervenire a un grafico della funzione assegnata. Questo grafico non dovrà essere preciso

Dettagli

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso 2.0 Gli archivi All interno della sezione archivi sono inserite le anagrafiche. In pratica si stratta di tutti quei dati che ricorreranno costantemente all interno dei documenti. 2.1 Inserire gli archivi

Dettagli

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi.

Statistica e biometria. D. Bertacchi. Variabili aleatorie. V.a. discrete e continue. La densità di una v.a. discreta. Esempi. Iniziamo con definizione (capiremo fra poco la sua utilità): DEFINIZIONE DI VARIABILE ALEATORIA Una variabile aleatoria (in breve v.a.) X è funzione che ha come dominio Ω e come codominio R. In formule:

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

CALCOLO COMBINATORIO

CALCOLO COMBINATORIO CALCOLO COMBINATORIO 1 Modi di formare gruppi di k oggetti presi da n dati 11 disposizioni semplici, permutazioni Dati n oggetti distinti a 1,, a n si chiamano disposizioni semplici di questi oggetti,

Dettagli

Analisi e diagramma di Pareto

Analisi e diagramma di Pareto Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo

Dettagli

Logistica magazzino: Inventari

Logistica magazzino: Inventari Logistica magazzino: Inventari Indice Premessa 2 Scheda rilevazioni 2 Registrazione rilevazioni 3 Filtro 3 Ricerca 3 Cancella 3 Stampa 4 Creazione rettifiche 4 Creazione rettifiche inventario 4 Azzeramento

Dettagli

Descrizione dettagliata delle attività

Descrizione dettagliata delle attività LA PIANIFICAZIONE DETTAGLIATA DOPO LA SELEZIONE Poiché ciascun progetto è un processo complesso ed esclusivo, una pianificazione organica ed accurata è indispensabile al fine di perseguire con efficacia

Dettagli

2 Formulazione dello shortest path come problema di flusso

2 Formulazione dello shortest path come problema di flusso Strumenti della Teoria dei Giochi per l Informatica A.A. 2009/10 Lecture 20: 28 Maggio 2010 Cycle Monotonicity Docente: Vincenzo Auletta Note redatte da: Annibale Panichella Abstract In questa lezione

Dettagli

Modelli di Programmazione Lineare e Programmazione Lineare Intera

Modelli di Programmazione Lineare e Programmazione Lineare Intera Modelli di Programmazione Lineare e Programmazione Lineare Intera 1 Azienda Dolciaria Un azienda di cioccolatini deve pianificare la produzione per i prossimi m mesi. In ogni mese l azienda ha a disposizione

Dettagli

LA MOLTIPLICAZIONE IN CLASSE SECONDA

LA MOLTIPLICAZIONE IN CLASSE SECONDA LA MOLTIPLICAZIONE IN CLASSE SECONDA Rossana Nencini, 2013 Le fasi del lavoro: 1. Proponiamo ai bambini una situazione reale di moltiplicazione: portiamo a scuola una scatola di biscotti (. ) e diamo la

Dettagli

Esercizi su lineare indipendenza e generatori

Esercizi su lineare indipendenza e generatori Esercizi su lineare indipendenza e generatori Per tutto il seguito, se non specificato esplicitamente K indicherà un campo e V uno spazio vettoriale su K Cose da ricordare Definizione Dei vettori v,,v

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli

Le tecniche di scheduling (1)

Le tecniche di scheduling (1) Le tecniche di scheduling (1) Sono la base di tutto il processo di pianificazione, e fornisco al management gli elementi per decidere come utilizzare le risorse per raggiungere gli obiettivi di costo e

Dettagli

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

Dettagli

Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9

Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9 Insegnamento di Gestione e Organizzazione dei Progetti A.A. 2008/9 Lezione 11: valutazione costi diagramma di PERT Prof.ssa R. Folgieri email: folgieri@dico.unimi.it folgieri@mtcube.com 1 Da ricordare:

Dettagli

Relazioni statistiche: regressione e correlazione

Relazioni statistiche: regressione e correlazione Relazioni statistiche: regressione e correlazione È detto studio della connessione lo studio si occupa della ricerca di relazioni fra due variabili statistiche o fra una mutabile e una variabile statistica

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT. NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT. Con l utilizzo delle procedure di iscrizione on line la società organizzatrice ha a disposizione tutti

Dettagli

Sia data la rete di fig. 1 costituita da tre resistori,,, e da due generatori indipendenti ideali di corrente ed. Fig. 1

Sia data la rete di fig. 1 costituita da tre resistori,,, e da due generatori indipendenti ideali di corrente ed. Fig. 1 Analisi delle reti 1. Analisi nodale (metodo dei potenziali dei nodi) 1.1 Analisi nodale in assenza di generatori di tensione L'analisi nodale, detta altresì metodo dei potenziali ai nodi, è un procedimento

Dettagli

1. Limite finito di una funzione in un punto

1. Limite finito di una funzione in un punto . Limite finito di una funzione in un punto Consideriamo la funzione: f ( ) = il cui dominio risulta essere R {}, e quindi il valore di f ( ) non è calcolabile in =. Quest affermazione tuttavia non esaurisce

Dettagli

Traccia di soluzione dell esercizio del 25/1/2005

Traccia di soluzione dell esercizio del 25/1/2005 Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE

APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE APPUNTI SU PROBLEMI CON CALCOLO PERCENTUALE 1. Proporzionalità diretta e proporzionalità inversa Analizziamo le seguenti formule Peso Lordo = Peso Netto + Tara Ricavo = Utile + Costo Rata = Importo + Interesse

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

RECUPERO DATI LIFO DA ARCHIVI ESTERNI

RECUPERO DATI LIFO DA ARCHIVI ESTERNI RECUPERO DATI LIFO DA ARCHIVI ESTERNI È possibile importare i dati relativi ai LIFO di esercizi non gestiti con Arca2000? La risposta è Sì. Esistono tre strade per recuperare i dati LIFO per gli articoli

Dettagli

Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME

Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME 5 luglio 2006 RIGA COLONNA MATRICOLA Il presente plico pinzato, composto di quattro

Dettagli

Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea

Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea Funzionamento di un mercato ben organizzato Nel Pitgame i giocatori che hanno poche informazioni private interagiscono

Dettagli

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) (Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste

Dettagli

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero

Dettagli

INTRODUZIONE AI CICLI

INTRODUZIONE AI CICLI www.previsioniborsa.net INTRODUZIONE AI CICLI _COSA SONO E A COSA SERVONO I CICLI DI BORSA. Partiamo dalla definizione di ciclo economico visto l argomento che andremo a trattare. Che cos è un ciclo economico?

Dettagli

Indice. 1 Il monitoraggio del progetto formativo --------------------------------------------------------------- 3. 2 di 6

Indice. 1 Il monitoraggio del progetto formativo --------------------------------------------------------------- 3. 2 di 6 LEZIONE MONITORARE UN PROGETTO FORMATIVO. UNA TABELLA PROF. NICOLA PAPARELLA Indice 1 Il monitoraggio del progetto formativo --------------------------------------------------------------- 3 2 di 6 1 Il

Dettagli

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI FUNZIONI ELEMENTARI - ESERCIZI SVOLTI 1) Determinare il dominio delle seguenti funzioni di variabile reale: (a) f(x) = x 4 (c) f(x) = 4 x x + (b) f(x) = log( x + x) (d) f(x) = 1 4 x 5 x + 6 ) Data la funzione

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

GUIDA AL CALCOLO DEI COSTI DELLE ATTIVITA DI RICERCA DOCUMENTALE

GUIDA AL CALCOLO DEI COSTI DELLE ATTIVITA DI RICERCA DOCUMENTALE GUIDA AL CALCOLO DEI COSTI DELLE ATTIVITA DI RICERCA DOCUMENTALE L applicazione elaborata da Nordest Informatica e disponibile all interno del sito è finalizzata a fornirvi un ipotesi dell impatto economico

Dettagli

Amplificatori Audio di Potenza

Amplificatori Audio di Potenza Amplificatori Audio di Potenza Un amplificatore, semplificando al massimo, può essere visto come un oggetto in grado di aumentare il livello di un segnale. Ha quindi, generalmente, due porte: un ingresso

Dettagli

Intelligenza Artificiale

Intelligenza Artificiale Intelligenza Artificiale Esercizi e Domande di Esame Tecniche di Ricerca e Pianificazione Esercizi Griglia Si consideri un ambiente costituito da una griglia n n in cui si muove un agente che può spostarsi

Dettagli

Applicazioni lineari

Applicazioni lineari Applicazioni lineari Esempi di applicazioni lineari Definizione. Se V e W sono spazi vettoriali, una applicazione lineare è una funzione f: V W tale che, per ogni v, w V e per ogni a, b R si abbia f(av

Dettagli