AUSILIO DIDATTICO IN EXCEL-VISUAL BASIC PER IL RICAVO DEI CAMMINI DI COSTO MINIMO CON L'ALGORITMO DI FORD-MOORE-BELLMAN

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "AUSILIO DIDATTICO IN EXCEL-VISUAL BASIC PER IL RICAVO DEI CAMMINI DI COSTO MINIMO CON L'ALGORITMO DI FORD-MOORE-BELLMAN"

Transcript

1 Università degli studi di Padova Facoltà di Ingegneria Dipartimento di tecnica e gestione dei sistemi industriali Corso di laurea in Ingegneria Gestionale Tesi di laurea di Primo Livello AUSILIO DIDATTICO IN EXCEL-VISUAL BASIC PER IL RICAVO DEI CAMMINI DI COSTO MINIMO CON L'ALGORITMO DI FORD-MOORE-BELLMAN Relatore: Ch.mo Prof. GIORGIO ROMANIN JACUR Laureando: ENRICO SPERINDIO ANNO ACCADEMICO

2 Sommario 1. INTRODUZIONE TEORIA DEI GRAFI I grafi: notazione e nomenclatura Grafi, nodi, archi Cammini, cicli Alberi Rappresentazione di grafi Matrici di incidenza Matrici di adiacenza Liste di adiacenza CAMMINI MINIMI Il problema L algoritmo SPT Algoritmi a coda di priorità Algoritmi a selezione su lista L ALGORITMO DI FORD-MOORE-BELLMAN Storia L algoritmo La versione di Pape Esempio IMPLEMENTAZIONE IN EXCEL Interfaccia utente Strutture dati La classe Deque L algoritmo Note BIBLIOGRAFIA APPENDICE A: CODICE COMMENTATO... 30

3 1. INTRODUZIONE 3 1. INTRODUZIONE La tesi affronta il tema dei cammini minimi su grafi, con particolare riferimento all algoritmo di Ford-Bellman-Moore. Tale problema è stato affrontato dal punto di vista strettamente pratico, attraverso la realizzazione in Microsoft Excel di un programma che, elaborando i dati inseriti dall utente, permette di ottenere la soluzione del problema in maniera immediata. Il tutto s inquadra nella classe di problemi trattati dalla Ricerca operativa detti di ottimizzazione, ossia problemi in cui alle soluzioni ammissibili è associato un costo e si vuole determinare la soluzione che minimizza o massimizza tale costo. Questo tipo di problemi, e in particolare quello trattato sui cammini minimi, sono stati oggetto di ampi studi in periodi relativamente recenti (seconda metà del novecento), spinti evidentemente dalla proliferazione delle reti di calcolatori e dello sviluppo dei circuiti elettronici, campi in cui gli algoritmi preposti a offrire soluzioni efficienti a questa classe di problemi trovano maggiore applicazione. Alcuni esempi di applicazione sono: Pianificazione urbana del traffico Rotta ottima per i trasporti su strada in presenza anche di congestioni dovute al traffico Protocolli di routing (OSPF, BGP, RIP) Pipelining nei circuiti elettronici a larga scala d integrazione Navigazione dei robot Schedulazione degli operatori per il telemarketing Gestione delle subroutine negli algoritmi di alto livello Smistamento messaggi nelle telecomunicazioni La prima parte dell elaborato è più teorica e riporta, nel capitolo 2, i fondamenti della teoria dei grafi e nel capitolo 3 i concetti e le metodologie legate al problema dei cammini minimi. Nei capitoli 4 e 5 viene descritto l algoritmo di Ford-Moore-Bellman e la sua implementazione in Excel. In appendice è riportato il codice in Visual Basic.

4 Cammini minimi con l algoritmo di Ford-Moore-Bellman 4 2. TEORIA DEI GRAFI 2.1. I grafi: notazione e nomenclatura Un grafo,,, è una coppia ordinata di insiemi: è un insieme finito e non vuoto di elementi, mentre è un insieme finito di coppie di elementi distinti di Grafi, nodi, archi è detto insieme dei nodi (o vertici), e usualmente viene indicato mediante i primi numeri naturali: 1,2,,. L insieme, detto insieme degli archi, è in generale indicato con,,, ( ). Nel seguito un arco verrà indifferentemente denotato o da un nome che lo individua, ad esempio, oppure da una coppia di nodi, ad esempio, ; se la coppia non è ordinata, cioè, e, rappresentano lo stesso arco, allora l arco è detto non orientato, altrimenti è detto orientato e in tal caso, e, rappresentano due archi diversi. I nodi e sono detti estremi dell arco,, che è incidente in essi; in questo caso si dirà che i nodi e sono adiacenti. Se l arco è orientato, allora è la coda e è la testa di, ; l arco è uscente da ed entrante in. Un grafo i cui archi sono tutti non orientati è detto non orientato o simmetrico, ed è detto orientato se tutti i suoi archi sono orientati. In un certo senso i grafi orientati sono una generalizzazione dei grafi non orientati: infatti un arco non orientato può essere rappresentato per mezzo di una coppia di archi orientati, come indicato in figura 2.1. In figura 2.2 sono rappresentati un non grafo orientato (a) e un grafo orientato (b). Nel seguito pertanto i principali concetti verranno dati principalmente in termini di grafi orientati poiché la loro estensione ai grafi non orientati è in genere immediata. Figura 2.1. Equivalenza tra un arco non orientato ed una coppia di archi orientati Figura 2.2. Esempio di grafi

5 2. TEORIA DEI GRAFI 5 Una rete è un grafo ai cui nodi e/o archi sono associati dei pesi. Tali pesi possono avere significati diversi secondo il contesto; ad esempio, se il grafo rappresenta una rete idraulica, i pesi associati agli archi possono rappresentare la portata o il flusso, mentre i pesi associati ai nodi possono rappresentare la quantità di acqua immessa nella rete o da essa estratta. I grafi rappresentano la struttura topologica delle reti; nel seguito tuttavia si farà uso indifferentemente dei termini grafo o rete. Dato un grafo non orientato, per ogni nodo, si indica con l insieme dei nodi adiacenti a e con l insieme degli archi incidenti in ; è detto grado del nodo ed è indicato con. Dato un grafo orientato, per ogni nodo, si indica con e rispettivamente l insieme dei nodi successori e l insieme dei nodi predecessori: :,, :, ; mentre con e si indicano rispettivamente l insieme degli archi uscenti da e l insieme degli archi entranti in :, :,, :. e sono detti rispettivamente grado uscente e grado entrante di Cammini, cicli Dato un grafo orientato, un cammino tra il nodo e il nodo è una sequenza di nodi e di archi,,,,,,,,, in cui per ogni 1,,, è incidente in e. Se, per 1,, è,, allora è un cammino orientato da a. Il nodo è detto l origine e è detto la destinazione di. Una sottosequenza di è detta sottocammino. Se, è detto un ciclo (eventualmente orientato). Un cammino (ciclo) non contenente cicli come sottocammini (propri) è detto un cammino (ciclo) semplice (eventualmente orientato). Nei cammini (cicli) che non sono semplici vi è ripetizione di nodi; essi possono avere anche ripetizione di archi. Quando non s ingenerano equivoci, un cammino può essere descritto mediante la sola sequenza dei suoi nodi o dei suoi archi. Due nodi e sono connessi se esiste un cammino tra di essi; in un grafo orientato si dice che è connesso a i se esiste un cammino orientato da a. Un grafo connesso è un grafo in cui tutte le coppie di nodi sono connesse, altrimenti è detto non connesso. Un grafo fortemente connesso è un grafo orientato in cui per ogni coppia di nodi, si ha che è connesso a, cioè esiste un cammino orientato da a, e è connesso a. Un grafo si definisce planare se può essere raffigurato in un piano in modo che non si abbiano spigoli che s intersecano Alberi Un grafo connesso privo di cicli è detto albero. Un albero,, con, è tale che 1. Sono equivalenti alla precedente le seguenti definizioni: un albero è un grafo connesso con 1 archi; un albero è un grafo privo di cicli con 1 archi.

6 Cammini minimi con l algoritmo di Ford-Moore-Bellman 6 Un albero radicato è un albero in cui sia stato selezionato un nodo, detto radice dell albero; in un tale albero i nodi possono essere ordinati per livelli in modo ricorsivo. Ogni arco di un albero radicato connette due nodi appartenenti a livelli adiacenti. Per ciascun arco, con a livello e a livello 1, è detto padre di e questo figlio di ; la radice non ha padre. Nodi aventi lo stesso padre sono detti fratelli. Un nodo senza figli è detto foglia dell albero radicato. Esiste un solo cammino tra la radice e qualsiasi nodo dell albero. Un albero radicato, i cui archi sono orientati, è detto orientato o arborescenza, se tutti i suoi archi sono orientati dal padre verso il figlio (o dal figlio verso il padre). Dato un grafo non orientato,, un suo grafo parziale, che sia un albero è detto albero di copertura di ; è detto albero di copertura orientato o arborescenza nel caso il grafo sia orientato Rappresentazione di grafi Esistono diversi modi per rappresentare un grafo. Se da un lato la rappresentazione grafica è il metodo più immediato e interpretabile all occhio umano, vi è la necessità di strutture tali da poter essere gestite dal calcolatore e manipolate dai vari algoritmi Matrici di incidenza Dato un grafo orientato,, la sua matrice di incidenza è una matrice (le righe corrispondono ai nodi e le colonne agli archi), così definita: 1, è, 1, è, 0,. La matrice di incidenza ha due soli elementi diversi da 0 per ogni colonna: un 1 e un 1. Un esempio di matrice di incidenza è riportato in figura 2.3. Ovviamente a ogni arco può essere associato il relativo peso, solitamente riportato in alto alla matrice. Figura 2.3. Un grafo e la sua matrice di incidenza Matrici di adiacenza La matrice di adiacenza A di un grafo è una matrice in cui ogni riga e ogni colonna rappresentano un nodo. Si ha che:

7 2. TEORIA DEI GRAFI 7 1 se esiste un arco tra il nodo e il nodo, 0,. Qualora al posto degli 1 sia indicato un numero, questo è da intendersi come il peso (costo) dell arco. Nel caso di grafi non orientati la matrice è simmetrica rispetto alla diagonale. Questa rappresentazione è conveniente nel caso di grafi densi ( ). Figura 2.4: Un grafo e la sua matrice di adiacenza Liste di adiacenza La lista di adiacenza di un grafo è un vettore di liste: il vettore ha dimensione e rappresenta i nodi del grafo, ogni lista associata rappresenta l insieme dei vicini del nodo. Da notare come l ordine degli elementi della lista non sia importante. Inoltre nel caso di grafi non orientati la rappresentazione di un arco appare due volte, ognuna in corrispondenza di uno dei nodi dell arco. Questa rappresentazione risulta conveniente nel caso di grafi sparsi ( ) e consente un efficiente memorizzazione dei grafi. Nell esempio in figura 2.3, la lista di adiacenza è 2,3, 4,5, 2,4,5, 5,6, 6,

8 Cammini minimi con l algoritmo di Ford-Moore-Bellman 8 3. CAMMINI MINIMI Diversi problemi di ottimizzazione sono caratterizzati da una struttura a grafo: in molti casi questa struttura emerge in modo naturale, in altri nasce dal particolare modo in cui i problemi vengono modellati. Ad esempio una rete stradale è naturalmente rappresentabile come un grafo in cui i nodi sono gli incroci e gli archi sono le strade; pertanto non è strano che il settore dei trasporti sia uno di quelli in cui la teoria dei grafi trova maggiore applicazione. In molti altri problemi, invece, la struttura di un grafo è più nascosta. In questo capitolo verrà studiato il problema dei cammini minimi su grafi (reti). Di esso si daranno le proprietà più importanti e verranno introdotti alcuni algoritmi risolutivi, senza entrare troppo nei dettagli implementativi e analizzare le numerose versioni proposte dai vari studiosi; per maggiori approfondimenti si rinvia alla letteratura avanzata nell area di Ricerca Operativa. 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 Il problema Si consideri il seguente problema di ottimizzazione su grafi detto dei cammini minimi o shortest paths: Dato un grafo orientato e pesato,, ovvero un grafo a cui ad ogni arco è associato un costo o peso o lunghezza, e dato un nodo, per ogni nodo, trovare il cammino da ad di costo minimo Risolvere il problema dei cammini minimi implica risolvere problemi tipo: o Internet è composta da un insieme di host e da un insieme di connessioni. Un host qualsiasi comunica con un host facendo fluire i propri dati lungo un cammino di connessioni. A ogni connessione è associato un costo. Determinare il cammino di costo minimo. o Una società di trasporti deve effettuare dei trasporti tra un insieme di città. Determinare i cammini di costo mimino tra tutte le coppie di città ove la funzione di costo è espressa dal tempo necessario per collegare la città con la città. Una soluzione ammissibile al problema dei cammini minimi consiste nel determinare 1 cammini, uno per ogni coppia di nodi, ognuno dei quali ha origine nel nodo e giunge ad uno dei rimanenti nodi del grafo. Condizioni necessarie perché esista una soluzione ammissibile sono: 1. Per ogni nodo, esista almeno un cammino che congiunga con. 2. Non esistano cicli di lunghezza negativa

9 3. CAMMINI MINIMI 9 Sotto queste ipotesi una soluzione ammissibile è un arborescenza di radice r, e la soluzione è una arborescenza di radice r di costo minimo. Dato un grafo,, orientato e pesato, sia arborescenza di costo minimo, ossia una soluzione ammissibile per il problema dei cammini minimi. A ogni nodo del grafo, diverso da (origine del cammino), è associata una quantità pari alla somma dei costi che appaiono sugli archi lungo un cammino da a in. Si definisce tale quantità come distanza e la denotiamo con. Le condizioni necessarie e sufficienti che devono essere verificate affinché sia una soluzione ottima sono contenute nel teorema di Bellman: Teorema. Una soluzione ammissibile è ottima se e solo se valgono le seguenti condizioni per ogni arco, : se, se, 3.2. L algoritmo SPT Le condizioni di ottimalità viste nel precedente paragrafo suggeriscono in modo naturale il seguente algoritmo per la determinazione di un albero dei cammini minimi: mediante una visita del grafo si determina un albero di copertura radicato e orientato (rappresentato dal vettore., il predecessore per ogni nodo) e le relative etichette, che rappresentano il costo dell unico cammino sull albero da a ; si controlla se esiste un arco, tale che ; in caso affermativo si modifica l albero togliendo l arco, e sostituendovi l arco, (ponendo ), si calcola il vettore delle etichette corrispondente al nuovo albero e si reitera; altrimenti l algoritmo termina avendo dimostrato che l albero corrente è ottimo (sono verificate le condizioni di Bellman). Per ottenere un algoritmo più efficiente è possibile differire l aggiornamento delle etichette. L algoritmo mantiene a ogni iterazione una soluzione ammissibile, rappresentata da un vettore di predecessori., una struttura, che indicheremo con, che contiene tutti i nodi i cui archi uscenti potrebbero violare le condizioni di Bellmann, e un vettore di etichette. in cui, in questo caso, rappresenta in generale un approssimazione superiore del costo dell unico cammino sull albero da a : all inizio, l albero è formato da archi fittizi, aventi costo molto grande ( e, per ).

10 Cammini minimi con l algoritmo di Ford-Moore-Bellman 10 Procedure SPT (r,p,d): begin for 1 to do begin ; d[i]:=m; end ; 0; : ; repeat select from ; \ ; for each, do if, then begin, ; ; if then end until end. Algoritmo SPT L algoritmo, che viene chiamato SPT, controlla se le condizioni di Bellman sono verificate, e ogni volta che trova un arco, per cui esse sono violate, cioè per cui, modifica la coppia, ponendo e. A seguito della diminuzione di, tutti gli archi uscenti da j possono violare le condizioni di Bellmann; viene detto per questo nodo candidato, e viene inserito in. Ad ogni iterazione si verifica se è vuoto: in questo caso l algoritmo termina avendo determinato una soluzione ottima. Altrimenti, si estrae un nodo da e si controlla se le condizioni di ottimalità valgono per ciascun arco della sua stella uscente. Per ogni arco, che non soddisfa le condizioni, si pone e l etichetta di viene aggiornata. Non si effettua però l aggiornamento delle etichette in tutti i nodi del sottoalbero di radice, ma s inserisce in : si effettua cioè un aggiornamento differito delle etichette. Si può dimostrare che, se il grafo non contiene cicli di costo negativo, la procedura SPT termina dopo un numero finito di passi. Se invece il grafo contiene un ciclo negativo (e almeno uno dei nodi del ciclo è raggiungibile da ), allora la procedura SPT non termina. L algoritmo SPT è un algoritmo molto generale il cui effettivo comportamento dipende dal modo con cui viene implementato l insieme dei nodi candidati. In effetti, a implementazioni diverse corrispondono comportamenti molto diversi in termini di complessità computazionale. Ad alto livello si può pensare a due scelte alternative: 1. è una coda di priorità, cioè un insieme in cui ogni elemento ha associato un valore (chiave), e la scelta dell elemento da estrarre avviene sulla base di questo valore; 2. viene implementato come una lista e la scelta dell elemento da estrarre è determinata dalla posizione dell elemento nella lista.

11 3. CAMMINI MINIMI Algoritmi a coda di priorità L insieme viene implementato come coda di priorità; a ogni elemento è cioè associata una chiave di priorità, che nel caso in esame è l etichetta, e la priorità di cresce al decrescere di. Le operazioni eseguibili su sono: inserimento di un elemento con l etichetta associata, modifica (riduzione) dell etichetta di un elemento di, selezione dell elemento con etichetta minima e sua rimozione da. Sia chiamata SPT.S (da Shortest-first) la versione di SPT in cui a ogni iterazione si estrae da un elemento a etichetta minima; l operazione select from ; viene realizzata come: select from such that : L algoritmo risultante è noto come algoritmo di Dijkstra, poiché descritto per la prima volta dall informatico olandese in [Dij59]. Vale il seguente teorema: Teorema. [Dijkstra, 1959] Nel funzionamento di SPT.S su grafi con costi non negativi, ogni nodo verrà inserito in (e rimosso da esso) al più una volta. Il fatto che un nodo non possa essere inserito in, e quindi estratto, più di una volta fa sì che il generico arco, posa essere esaminato al più una volta, cioè quando viene selezionato il nodo, e pertanto SPT.S ha complessità polinomiale. Si può invece dimostrare che, nel caso di costi negativi, l algoritmo opportunamente modificato per gestire questa evenienza ha complessità esponenziale, in quanto esistono alcuni grafi per i quali l algoritmo esegue un numero esponenziale di operazioni, come descritto in [Joh73]. È quindi ben chiaro il motivo per cui in tali situazioni esso non viene in pratica mai preso in considerazione. Sono possibili diverse implementazioni dell algoritmo SPT.S, che differiscono per il modo in cui è implementata la coda di priorità. La scelta dell implementazione di non cambia il comportamento dell algoritmo, ma ne influenza la complessità e l efficienza computazionale. La struttura originaria utilizzata per l algoritmo è una lista non ordinata; esempi di strutture più efficienti introdotte in seguito sono heap binari e di Fibonacci. L algoritmo di Dijkstra viene detto di tipo label setting: una alla volta le etichette sono rese definitive. Un etichetta diventa definitiva quando rappresenta l esatta lunghezza del cammino più breve cui si riferisce. In ciascun iterazione, come si è visto, esattamente una delle etichette viene selezionata e resa permanente, quella avente minima Algoritmi a selezione su lista In questi algoritmi l insieme viene implementato come una lista, cioè una sequenza di elementi su cui si possono effettuare operazioni di rimozione e inserzione alle estremità della sequenza, chiamate rispettivamente testa e coda della lista. Le operazioni elementari eseguibili sulle liste sono: inserimento di un elemento come nuova testa della lista, inserimento di un elemento come nuova coda della lista, rimozione dell elemento testa dalla lista.

12 Cammini minimi con l algoritmo di Ford-Moore-Bellman 12 Si noti che l aggiornamento dell etichetta di un nodo che appartiene a non influisce sulla posizione dell elemento nella lista, ossia non causa la rimozione del nodo da e il suo reinserimento in una posizione diversa (formalmente, questo corrisponde al controllo nell algoritmo SPT). Si distinguono diversi tipi di liste, tra cui hanno particolare rilevanza le seguenti: fila: l inserzione viene effettuata in coda e la rimozione dalla testa (regola FIFO); pila: l inserzione e la rimozione vengono effettuate in testa (regola LIFO); deque (double-ended queue) o lista a doppio ingresso: l inserzione viene effettuata sia in testa sia in coda e la rimozione solo dalla testa. Vengono indicate con SPT.L le versioni di SPT nelle quali l insieme è implementato come lista. La lista può essere realizzata in diversi modi (lista a puntatori, vettore di puntatori, lineare o circolare, semplice o doppia, ecc.), ed è sempre possibile fare in modo che le operazioni elementari abbiano complessità computazionale costante, 1. La complessità di SPT.L, anche nel caso di costi negativi, dipende quindi dal numero di controlli delle condizioni di Bellman sugli archi uscenti dai nodi estratti da. Di questo insieme di algoritmi fanno parte l algoritmo di Ford-Moore-Bellman e le relative varianti, che verranno descritte nel capitolo successivo.

13 4. L ALGORITMO DI FORD-MOORE-BELLMAN L ALGORITMO DI FORD-MOORE-BELLMAN 4.1. Storia Lo sviluppo dell algoritmo di Ford-Bellman-Moore si deve ai lavori svolti indipendentemente da L. R. Ford, E. F. Moore e R. Bellman verso la fine degli anni cinquanta. Lawler [Law76] presenta le equazioni di Bellman e il metodo di Bellman-Ford, con riferimento all articolo di Ford del 1956 [For56] e agli studi di Bellman del 1958 [1958]. Egli cita anche gli studi di Moore del 1957 [Moo59]. Tarjan [Tar83] introduce il metodo di Ford basato sulle etichette [For56], e poi un metodo di ricerca in ampiezza (breadth-first) basato sulle idee indipendenti di Bellman [Bel58] e Moore [Moo59]. Anche Deo e Pang [DP84] indicano questi tre articoli, affermando, Gli algoritmi che permettono di risolvere i problemi basati su una singola sorgente sono solitamente basati sui metodi proposti da Bellman [Bel58], Dijkstra [Dij59], Ford [For56] e Moore [Moo59]. La presentazione dettagliata dei tre articoli viene omessa (si rinvia alla bibliografia), tuttavia in figura 4.1 possiamo vedere la sintesi dei lavori derivanti dagli scritti di Bellman e Ford, che è effettivamente l algoritmo di Bellman-Ford come è conosciuto attualmente nella sua versione più semplice. In figura 4.2 è riportata una possibile implementazione di uno degli algoritmi in cui Moore tratta della selezione e dell ordine con cui vengono trattati nodi e archi. Anche se non esplicitamente specificato da Moore stesso, viene naturale l utilizzo di una struttura come una coda, come effettivamente previsto dall algoritmo di Bellman-Ford-Moore e dalle sue numerose varianti, dove alla procedura base si adattano strutture che permettono particolari criteri di selezione. %Le strutture dati per questo algoritmo sono un vettore d, un vettore pi, % ciascuno con un elemento per ogni v nell insieme dei vertici, e una % matrice w(i,j), dove ciascun elemento è la distanza dal nodo i al nodo j. %Inizializzazione do for each vertex v V d[v] pi[v] nil end do for each d[s] 0 %Elabora la distanza da s a tutti gli altri nodi v for k = 1 to the number of vertices minus 1 end for do for each edge(i,j) E if d[j] > d[i] + w(i,j) then d[j] d[i] + w(i,j) pi[j] i end if end do for each Figura 4.1. Tipico esempio di pseudo codice per l attuale algoritmo di Bellman-Ford

14 Cammini minimi con l algoritmo di Ford-Moore-Bellman 14 %Le strutture dati per questo algoritmo sono un vettore d, % un vettore ne come lista dei nodi adiacenti, e una coda q utilizzata % per l ordine con cui processare i nodi adiacenti a partire da s. % Inizializzazione dalla sorgente s for each node i from i = 1 to n do d[i] end do d[s] 0 %Inizializzazione della coda current-node-ptr 1 q[current-node-ptr] s %si inizia da s end-of-queue 2 %Elabora la distanza da s a tutti gli altri nodi do while current-node-ptr < end-of-queue node q[current-node-ptr] do for each neighbor in ne[node] if d[node] + w[node,neighbor] < d[neighbor] then d[neighbor] d[node] + w[node,neighbor] q[end-of-queue neighbor end-of-queue end-of-queue + 1 end if end do for each current-node-ptr current-node-ptr + 1 end do while Figura 4.2. Possibile implementazione dell algoritmo di Moore

15 4. L ALGORITMO DI FORD-MOORE-BELLMAN L algoritmo Tornando a quanto detto nel capitolo 3 si esamineranno ora gli algoritmi SPT.L, gli algoritmi cioè a selezione su lista. In particolare quando si realizza la lista Q come fila (queue) l inserzione dei nodi avviene in coda e la rimozione in testa (regola FIFO). Questo è esattamente il principio di funzionamento dell algoritmo di Ford-Moore-Bellman. In figura 4.3 è riportato lo pseudo-codice di tale algoritmo. Q := l[v] := p[v] := 0 l[s] := 0 p[s] := s EnQueue (s,q) while do u := DeQueue (Q) for each v Adj(u) do if l[v] > l[u] + d(u,v) then l[v] := l[u] + d(u,v) l[v] := u if v Q then EnQueue (v,q) endif endfor endwhile Figura 4.3. Algoritmo di Ford-Moore-Bellman L utilizzo di una strategia FIFO corrisponde a una visita a ventaglio del grafo (BFS, breadth-first search); si può dimostrare che tale strategia garantisce che, in assenza di cicli negativi, nessun nodo sia inserito più di 1 volte in, e quindi che il numero di volte che si esamina un nodo o un arco è limitato superiormente da. Siccome tutte le operazioni sui nodi (estrazione) sono implementabili in modo da avere complessità costante, la complessità della procedura nel peggiore dei casi è, ed è data dal massimo numero di volte che si esamina lo stesso arco 1 per il numero di archi. SPT.L con implementato come fila può essere utilizzata per controllare se un grafo possiede cicli negativi. Infatti poiché, in assenza di cicli negativi, un nodo non può essere estratto da più di 1 volte, è sufficiente contare il numero di estrazioni da di ciascun nodo: appena un nodo viene estratto per l -esima volta, si può affermare che quel nodo appartiene a un ciclo negativo. Il ciclo può poi essere percorso all indietro, a partire dal nodo trovato, per mezzo del predecessore.. Descrizione dell algoritmo: Si costruiscono 2 liste, quella delle lunghezze (si indica con la lunghezza del miglior cammino da a correntemente trovato) e quella dei predecessori (si indica con il predecessore di ).

16 Cammini minimi con l algoritmo di Ford-Moore-Bellman 16 PASSO 1. PASSO 2. PASSO 3. (Inizializzazione) 0 0 (Criterio di arresto) Se:,, Allora l algoritmo ha termine. In caso contrario, si va al passo 3. (Aggiornamento) Se, è tale che, allora si pone, Si torna al passo La versione di Pape Ai fini dell implementazione l ordine con cui vengono esaminati gli archi ha rilevanza per l efficienza dell algoritmo. Come approccio alternativo alla strategia FIFO appena vista sono state proposte diverse realizzazioni dell insieme come lista. Molto utilizzata è la lista a doppio ingresso, o deque, in cui o nodi sono inseriti in coda a la prima volta, mentre tutte le altre volte vengono inseriti in testa a. L algoritmo viene chiamato di Pape. (Figura 4.4) Più precisamente gli archi vanno scelti in questo modo: i. Come vertice iniziale dell arco viene scelto il primo vertice di un opportuna lista o coda. Cioè, se,,, allora si pone e si cancella dalla lista : \ ii. Si opera il confronto, per tutti i nodi adiacenti a. Se esiste un vertice tale che, allora, oltre a cambiare l etichetta del nodo s inserisce il nodo nella lista stessa (sempre che esso non sia già presente). Inizialmente si pone iii. L inserimento di in avviene secondo questa regola di natura euristica: se è la prima volta che viene inserito, esso deve essere posto in coda alla lista; se invece era già stato inserito in precedenza, allora si pone all inizio della lista stessa.

17 4. L ALGORITMO DI FORD-MOORE-BELLMAN 17 La motivazione per l uso di una deque risiede nel fatto che, se un nodo viene inserito in dopo essere stato precedentemente rimosso, la sua etichetta è stata utilizzata per aggiornare etichette di altri nodi, discendenti da nell albero corrente. Una nuova inserzione di in avviene poiché è stata diminuita; appare pertanto conveniente correggere quanto prima le etichette dei discendenti di (sia pure senza ricalcolare immediatamente tutte le etichette del sottoalbero), in modo da evitare il più possibile che vengano compiute iterazioni con valori delle etichette che rappresentano una cattiva approssimazione del valore reale del costo del cammino. Quest algoritmo in cui è implementata come deque ha però complessità esponenziale 2 ; esistono infatti grafi per i quali tale versione effettua un numero esponenziale di inserimenti e rimozioni di nodi da. Comunque, l analisi della complessità computazionale nel caso peggiore fornisce solo una misura di salvaguardia nella crescita del numero di operazioni: infatti, nei problemi reali in cui le reti sono abbastanza sparse ( ) questa variante ha un comportamento molto buono, anzi spesso risulta il più efficiente algoritmo per i cammini minimi. Ciò è particolarmente vero per reti stradali, in cui spesso si è osservato sperimentalmente che il numero medio di estrazioni di uno stesso nodo da è inferiore a 2. S := l[v] := p[v] := 0 v s l[s] := 0 p[s] := s EnQueue (s,q) while Q do u := DeQueue(Q) for each v Adj(u) do if l[v] > l[u] + d(u,v) then endif endfor endwhile if v Q then endif if D[v] = then else endif EnQueueB(v; Q) EnQueueF(v; Q) l[v] := l[u] + d(u,v) p[v] := u Figura 4.4. Versione di Pape, pseudocodice

18 Cammini minimi con l algoritmo di Ford-Moore-Bellman Esempio Si consideri il grafo orientato in figura 4.5 e si vogliano trovare i cammini minimi da agli altri nodi. Figura 4.5 L etichettatura iniziale è la seguente: nodo s a b c d 0 s Si pone ed il nodo viene cancellato da. Vengono esaminati gli archi uscenti da che sono, e,. Poiché, 0 7 si opera il seguente aggiornamento: 7 Poi, dato che, 0 5 Si opera il seguente aggiornamento: 5

19 4. L ALGORITMO DI FORD-MOORE-BELLMAN 19, L etichettatura così aggiornata è la seguente: nodo s a b c d s s 0 s 0 Si pone ora e si esaminano tutti gli archi uscenti da che sono, e,. Poiché, 7 5 e, 7 2 si aggiorna l etichettatura come segue: nodo s a b c d s s a s a,,. Si pone ora e si esaminano tutti gli archi uscenti da :, e,. Si ha:, e, e quindi non si aggiorna la tabella ma diventa,. Posto, si considerano gli archi:,,,,,,,. Si ha:, 2 1 0, 2 6 7, 2 2 5, La tabella viene aggiornata come segue: nodo s a b c d s s a b a

20 Cammini minimi con l algoritmo di Ford-Moore-Bellman 20 Il nodo va inserito nella lista. Tenuto conto che era già stato presente nella lista, va inserito al primo posto:,. Posto, si considerano gli archi, e,. Si ha:, 4 1 2, E quindi non si aggiorna la tabella ma diventa. Posto, si esamina l arco,. Si ha:, e quindi non si aggiorna la tabella. Poiché l algoritmo ha termine e l ultima tabella fornisce la soluzione ottima. L arborescenza minima di radice è rappresentata in figura 4.6. Figura 4.6

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

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

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

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

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

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

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software

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

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

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

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato

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

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona e e Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario e ed implementazione in Java Visita di un grafo e e Concetti di base Struttura

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

ISTRUZIONI PER LA GESTIONE BUDGET

ISTRUZIONI PER LA GESTIONE BUDGET ISTRUZIONI PER LA GESTIONE BUDGET 1) OPERAZIONI PRELIMINARI PER LA GESTIONE BUDGET...1 2) INSERIMENTO E GESTIONE BUDGET PER LA PREVISIONE...4 3) STAMPA DIFFERENZE CAPITOLI/BUDGET.10 4) ANNULLAMENTO BUDGET

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

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità

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

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

DAL DIAGRAMMA AL CODICE

DAL DIAGRAMMA AL CODICE DAL DIAGRAMMA AL CODICE Un diagramma di flusso Appare, come un insieme di blocchi di forme diverse che contengono le istruzioni da eseguire, collegati fra loro da linee orientate che specificano la sequenza

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

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base: LA STRUTTURA DI RIPETIZIONE La ripetizione POST-condizionale La ripetizione PRE-condizionale INTRODUZIONE (1/3) Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

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

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

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

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione ai tipi di dato astratti: applicazione alle liste Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

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

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

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

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

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

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

Appunti di Algoritmi e Strutture Dati. Grafi. Gianfranco Gallizia

Appunti di Algoritmi e Strutture Dati. Grafi. Gianfranco Gallizia Appunti di Algoritmi e Strutture Dati Grafi Gianfranco Gallizia 12 Dicembre 2004 2 Indice 1 Grafi 5 1.1 Definizione.............................. 5 1.2 Implementazione........................... 5 1.2.1

Dettagli

B+Trees. Introduzione

B+Trees. Introduzione B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo Release 5.20 Manuale Operativo COLLI Gestione dei Colli di Spedizione La funzione Gestione Colli consente di generare i colli di spedizione in cui imballare gli articoli presenti negli Ordini Clienti;

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

TSP con eliminazione di sottocicli

TSP con eliminazione di sottocicli TSP con eliminazione di sottocicli Un commesso viaggiatore deve visitare 7 clienti in modo da minimizzare la distanza percorsa. Le distanze (in Km) tra ognuno dei clienti sono come segue: 7-8 9 7 9-8 79

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

METODI per effettuare previsioni con analisi di tipo WHAT-IF

METODI per effettuare previsioni con analisi di tipo WHAT-IF METODI per effettuare previsioni con analisi di tipo WHAT-IF 1. TABELLA DATI Una tabella di dati è un intervallo che mostra come la modifica di alcuni valori nelle formule ne influenza i risultati. Le

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

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

REALIZZARE UN BUSINESS PLAN CON MICROSOFT EXCEL 2007

REALIZZARE UN BUSINESS PLAN CON MICROSOFT EXCEL 2007 REALIZZARE UN BUSINESS PLAN CON MICROSOFT EXCEL 2007 INTRODUZIONE Uno degli elementi più importanti che compongono un Business Plan è sicuramente la previsione dei risultati economico-finanziari. Tale

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002 Tricks & Tips [Access] - Michele de Nittis - Tutorial - ActiveX - Controllo Tree View Versione: 1 Data Versione: venerdì 30 agosto 2002 1 SOMMARIO PREMESSA...3 INSERIMENTO DEL CONTROLLO...3 AGGIUNTA DELLE

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Cenni su algoritmi, diagrammi di flusso, strutture di controllo Cenni su algoritmi, diagrammi di flusso, strutture di controllo Algoritmo Spesso, nel nostro vivere quotidiano, ci troviamo nella necessità di risolvere problemi. La descrizione della successione di operazioni

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu

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

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi

Dettagli

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

Introduzione al Foglio Elettronico

Introduzione al Foglio Elettronico Microsoft Excel Introduzione al Foglio Elettronico Il Foglio Elettronico Si presenta come una grande tabella su un foglio di carta Le celle contengono differenti dati Numeri Testo Date Ecc I dati possono

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

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

Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A. 2013-2014

Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A. 2013-2014 Progetto ICoNLingua Scienza senza Frontiere CsF- Italia Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A. 2013-2014 1. Introduzione La valutazione sia in itinere

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

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

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.

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

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)

Dettagli

Ricerca non informata in uno spazio di stati

Ricerca non informata in uno spazio di stati Università di Bergamo Facoltà di Ingegneria Intelligenza Artificiale Paolo Salvaneschi A5_2 V2.4 Ricerca non informata in uno spazio di stati Il contenuto del documento è liberamente utilizzabile dagli

Dettagli

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

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

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

Progettazione di Basi di Dati

Progettazione di Basi di Dati Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali a Visual Basic Lezione 1 Concetti base e istruzioni condizionali Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Un esempio:

Dettagli

TSP con eliminazione di sottocicli

TSP con eliminazione di sottocicli TSP con eliminazione di sottocicli Un commesso viaggiatore deve visitare 7 clienti in modo da minimizzare la distanza percorsa. Le distanze (in Km) tra ognuno dei clienti sono come segue: 3 5 7-8 9 57

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Ambiente Access La Guida di Access Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Guida in linea Guida rapida Assistente di Office indicazioni

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

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

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

CONTABILITÀ FINANZIARIA ASCOT 3 IL PROSPETTO DI CONCILIAZIONE SPECIFICHE FUNZIONALI SCHEMI OPERATIVI SOLUZIONE AI PROBLEMI

CONTABILITÀ FINANZIARIA ASCOT 3 IL PROSPETTO DI CONCILIAZIONE SPECIFICHE FUNZIONALI SCHEMI OPERATIVI SOLUZIONE AI PROBLEMI PROGETTO ASCOT COD. : ASCOT-31-PC-01 VERS. : 1.00.00 DATA : 1.03.2002 CONTABILITÀ FINANZIARIA ASCOT 3 IL PROSPETTO DI CONCILIAZIONE SPECIFICHE FUNZIONALI SCHEMI OPERATIVI SOLUZIONE AI PROBLEMI AGGIORNAMENTI

Dettagli

Studente: SANTORO MC. Matricola : 528

Studente: SANTORO MC. Matricola : 528 CORSO di LAUREA in INFORMATICA Corso di CALCOLO NUMERICO a.a. 2004-05 Studente: SANTORO MC. Matricola : 528 PROGETTO PER L ESAME 1. Sviluppare una versione dell algoritmo di Gauss per sistemi con matrice

Dettagli

Corso di Matematica per la Chimica

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

40 Algoritmi sui Grafi

40 Algoritmi sui Grafi Università degli Studi di Napoli Parthenope Corso di Laurea in Informatica A.A 2014/15 PROGETTO PROGRAMMAZIONE III 40 Algoritmi sui Grafi Relatore: Prof. Raffaele Montella Studente: Diego Parlato Matricola:

Dettagli

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Definizione Visita dell albero inorder Ricerca Ricerca minimo, massimo e successore. Inserimento ed eliminazione di un nodo Problema del bilanciamento dell albero Albero binario

Dettagli

Ammortamento di un debito

Ammortamento di un debito Algoritmi e dintorni: Ammortamento di un debito: Ricerca del tasso Prof. Ettore Limoli Ammortamento di un debito In questa nostra trattazione non ci addentreremo in problemi di matematica finanziaria o

Dettagli

Plate Locator Riconoscimento Automatico di Targhe

Plate Locator Riconoscimento Automatico di Targhe Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa

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

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

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca

Dettagli

Guida Compilazione Piani di Studio on-line

Guida Compilazione Piani di Studio on-line Guida Compilazione Piani di Studio on-line SIA (Sistemi Informativi d Ateneo) Visualizzazione e presentazione piani di studio ordinamento 509 e 270 Università della Calabria (Unità organizzativa complessa-

Dettagli