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

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante

Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante Introduzione Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante Il problema del massimo flusso è uno dei fondamentali problemi nell ottimizzazione su rete. Esso è presente

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

Flusso a costo minimo e simplesso su reti

Flusso a costo minimo e simplesso su reti Flusso a costo minimo e simplesso su reti La particolare struttura di alcuni problemi di PL può essere talvolta utilizzata per la progettazione di tecniche risolutive molto più efficienti dell algoritmo

Dettagli

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

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

Minimo sottografo ricoprente. Minimo sottografo ricoprente. Minimo albero ricoprente. Minimo albero ricoprente

Minimo sottografo ricoprente. Minimo sottografo ricoprente. Minimo albero ricoprente. Minimo albero ricoprente Minimo sottografo ricoprente Minimo sottografo ricoprente Dato un grafo connesso G = (V, E) con costi positivi sugli archi c e, un minimo sottografo ricoprente è un insieme di archi E E tale che: G = (V,

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

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

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera L. De Giovanni AVVERTENZA: le note presentate di seguito non hanno alcuna pretesa di completezza, né hanno lo scopo di sostituirsi

Dettagli

Minimizzazione di Reti Logiche Combinatorie Multi-livello

Minimizzazione di Reti Logiche Combinatorie Multi-livello Minimizzazione di Reti Logiche Combinatorie Multi-livello Maurizio Palesi Maurizio Palesi 1 Introduzione Obiettivo della sintesi logica: ottimizzazione delle cifre di merito area e prestazioni Prestazioni:

Dettagli

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

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

Dettagli

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento.

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. Excel: le funzioni Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. DEFINIZIONE: Le funzioni sono dei procedimenti

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

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 agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

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

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

DESMATRON TEORIA DEI GRAFI

DESMATRON TEORIA DEI GRAFI DESMATRON TEORIA DEI GRAFI 0 Teoria dei Grafi Author: Desmatron Release 1.0.0 Date of Release: October 28, 2004 Author website: http://desmatron.altervista.org Book website: http://desmatron.altervista.org/teoria_dei_grafi/index.php

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

STRUTTURE (O COSTRUTTI) DI CONTROLLO

STRUTTURE (O COSTRUTTI) DI CONTROLLO Le strutture di controllo Le strutture di controllo STRUTTURE (O COSTRUTTI) DI CONTROLLO determinano l ordine con cui devono essere eseguite le istruzioni sono indipendenti dalla natura delle istruzioni

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

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960.

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960. File di dati Definizione File di dati Insieme di record omogenei memorizzati in memoria di massa Bianchi Verdi Neri Verdi Anna Roma 1980 Luca Milano 1960 Andrea Torino 1976 Paola Bari 1954 Record Operazioni

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Semplici Algoritmi di Ordinamento

Semplici Algoritmi di Ordinamento Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono

Dettagli

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org.

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Nuovo documento Anteprima di stampa Annulla Galleria Apri Controllo ortografico Ripristina Sorgente dati Salva Controllo

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE

DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE Il problema Un computer è usato per risolvere dei problemi Prenotazione di un viaggio Compilazione e stampa di un certificato in un ufficio comunale Preparazione

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

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

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

Gestione dinamica di una pila

Gestione dinamica di una pila Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.

Dettagli

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test

SIMATIC. SCL per S7-300/400 Programmazione di blocchi. Prefazione, Contenuto. Parte 1: Sviluppo di programmi. Parte 2: Uso e test Prefazione, Contenuto Parte 1: Sviluppo di programmi Parte 2: Uso e test SIMATIC Parte 3: Descrizione del linguaggio Programmazione di blocchi Appendici Glossario, Indice analitico Manuale Numero di ordinazione

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni

Dettagli

Prof. Caterina Rizzi Dipartimento di Ingegneria Industriale

Prof. Caterina Rizzi Dipartimento di Ingegneria Industriale RUOLO DELLA MODELLAZIONE GEOMETRICA E LIVELLI DI MODELLAZIONE PARTE 2 Prof. Caterina Rizzi... IN QUESTA LEZIONE Modelli 2D/3D Modelli 3D/3D Dimensione delle primitive di modellazione Dimensione dell oggettoy

Dettagli

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,

Dettagli

Ricerca sequenziale di un elemento in un vettore

Ricerca sequenziale di un elemento in un vettore Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna

Dettagli

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi:

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Routing (instradamento) in Internet Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Stub AS: istituzione piccola Multihomed AS: grande istituzione (nessun ( transito Transit AS: provider

Dettagli

Dati importati/esportati

Dati importati/esportati Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

StarOffice TM 7 Office Suite

StarOffice TM 7 Office Suite StarOffice TM 7 Office Suite A Sun TM ONE Software Offering Manuale di programmazione in Basic Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 650-960-1300 Part No. 817-3918-10

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

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

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

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Cos è Excel. Uno spreadsheet : un foglio elettronico. è una lavagna di lavoro, suddivisa in celle, cosciente del contenuto delle celle stesse

Cos è Excel. Uno spreadsheet : un foglio elettronico. è una lavagna di lavoro, suddivisa in celle, cosciente del contenuto delle celle stesse Cos è Excel Uno spreadsheet : un foglio elettronico è una lavagna di lavoro, suddivisa in celle, cosciente del contenuto delle celle stesse I dati contenuti nelle celle possono essere elaborati ponendo

Dettagli

Così come le macchine meccaniche trasformano

Così come le macchine meccaniche trasformano DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Il Consiglio Scientifico della rivista ha pensato di attuare un iniziativa culturalmente utile presentando in ogni numero di Mondo Digitale un argomento

Dettagli

VC-dimension: Esempio

VC-dimension: Esempio VC-dimension: Esempio Quale è la VC-dimension di. y b = 0 f() = 1 f() = 1 iperpiano 20? VC-dimension: Esempio Quale è la VC-dimension di? banale. Vediamo cosa succede con 2 punti: 21 VC-dimension: Esempio

Dettagli

LEZIONE 14. a 1,1 v 1 + a 1,2 v 2 + a 1,3 v 3 + + a 1,n 1 v n 1 + a 1,n v n = w 1

LEZIONE 14. a 1,1 v 1 + a 1,2 v 2 + a 1,3 v 3 + + a 1,n 1 v n 1 + a 1,n v n = w 1 LEZIONE 14 141 Dimensione di uno spazio vettoriale Abbiamo visto come l esistenza di una base in uno spazio vettoriale V su k = R, C, permetta di sostituire a V, che può essere complicato da trattare,

Dettagli

AA 2006-07 LA RICORSIONE

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

Dettagli

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

METODO DEI MINIMI QUADRATI. Quest articolo discende soprattutto dai lavori di Deming, Press et al. (Numerical Recipes) e Jefferys.

METODO DEI MINIMI QUADRATI. Quest articolo discende soprattutto dai lavori di Deming, Press et al. (Numerical Recipes) e Jefferys. METODO DEI MINIMI QUADRATI GIUSEPPE GIUDICE Sommario Il metodo dei minimi quadrati è trattato in tutti i testi di statistica e di elaborazione dei dati sperimentali, ma non sempre col rigore necessario

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

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

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT Introduzione Un file batch è un file di testo di tipo ASCII che contiene una sequenza di comandi DOS. I file batch devono avere estensione.bat I comandi DOS all interno dei programmi batch sono eseguiti

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Dispense del Corso di Algoritmi e Strutture Dati

Dispense del Corso di Algoritmi e Strutture Dati Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo Edoardo Bontà Università degli Studi di Urbino Carlo Bo Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Applicata Versione

Dettagli

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31

Le Liste. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Le Liste 1 / 31 Le Liste Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Le Liste 1 / 31 Cos è una Lista Una lista è una collezione di elementi omogenei che: potrebbero

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Strato di rete. Argomenti: Obiettivi:

Strato di rete. Argomenti: Obiettivi: Strato di rete Obiettivi: Principi e servizi dello strato di rete: Routing (selezione del cammino da host sorg. (. dest a host Problemi di scala Come funziona un router Implementazione in Internet Argomenti:

Dettagli

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 2 Marzo 2005, ore 14.30 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette.

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova. Metodi per supportare le decisioni relative alla gestione di progetti

Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova. Metodi per supportare le decisioni relative alla gestione di progetti Project Management Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova Project Management 2 Metodi per supportare le decisioni relative alla gestione di progetti esempi sono progetti nell

Dettagli

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE 1 DIPENDENZA E INDIPENDENZA LINEARE Se ho alcuni vettori v 1, v 2,, v n in uno spazio vettoriale V, il sottospazio 1 W = v 1,, v n di V da loro generato è

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

GUIDA RAPIDA emagister-agora Edizione BASIC

GUIDA RAPIDA emagister-agora Edizione BASIC GUIDA RAPIDA emagister-agora Edizione BASIC Introduzione a emagister-agora Interfaccia di emagister-agora Configurazione dell offerta didattica Richieste d informazioni Gestione delle richieste d informazioni

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

Indicizzazione terza parte e modello booleano

Indicizzazione terza parte e modello booleano Reperimento dell informazione (IR) - aa 2014-2015 Indicizzazione terza parte e modello booleano Gruppo di ricerca su Sistemi di Gestione delle Informazioni (IMS) Dipartimento di Ingegneria dell Informazione

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

EQUAZIONI E DISEQUAZIONI POLINOMIALI E COLLEGAMENTI CON LA GEOMETRIA ELEMENTARE

EQUAZIONI E DISEQUAZIONI POLINOMIALI E COLLEGAMENTI CON LA GEOMETRIA ELEMENTARE EQUAZIONI E DISEQUAZIONI POLINOMIALI E COLLEGAMENTI CON LA GEOMETRIA ELEMENTARE 1. EQUAZIONI Definizione: un equazione è un uguaglianza tra due espressioni letterali (cioè in cui compaiono numeri, lettere

Dettagli

Dipartimento del Tesoro

Dipartimento del Tesoro Dipartimento del Tesoro POWER POINT AVANZATO Indice 1 PROGETTAZIONE DELL ASPETTO...3 1.2 VISUALIZZARE GLI SCHEMI...4 1.3 CONTROLLARE L ASPETTO DELLE DIAPOSITIVE CON GLI SCHEMI...5 1.4 SALVARE UN MODELLO...6

Dettagli

Manuale Operativo IL SOFTWARE PER LA GESTIONE CENTRALIZZATA DEL SISTEMA DELLE SEGNALAZIONI E DEI RECLAMI DELL ENTE

Manuale Operativo IL SOFTWARE PER LA GESTIONE CENTRALIZZATA DEL SISTEMA DELLE SEGNALAZIONI E DEI RECLAMI DELL ENTE Manuale Operativo IL SOFTWARE PER LA GESTIONE CENTRALIZZATA DEL SISTEMA DELLE SEGNALAZIONI E DEI RECLAMI DELL ENTE Il presente documento applica il Regolamento sulla gestione delle segnalazioni e dei reclami

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultimo Aggiornamento: 25 giugno 2014 Copyright Copyright 2012, 2013, 2014 Moreno Marzolla. Quest'opera è stata rilasciata

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Ragionamento Automatico Model checking. Lezione 12 Ragionamento Automatico Carlucci Aiello, 2004/05Lezione 12 0. Sommario. Formulazione del problema

Ragionamento Automatico Model checking. Lezione 12 Ragionamento Automatico Carlucci Aiello, 2004/05Lezione 12 0. Sommario. Formulazione del problema Sommario Ragionamento Automatico Model checking Capitolo 3 paragrafo 6 del libro di M. Huth e M. Ryan: Logic in Computer Science: Modelling and reasoning about systems (Second Edition) Cambridge University

Dettagli

UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA

UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA SVILUPPO DI METODI DECONVOLUTIVI PER L INDIVIDUAZIONE DI SORGENTI INDIPENDENTI

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

The Directed Closure Process in Hybrid Social-Information Networks

The Directed Closure Process in Hybrid Social-Information Networks The Directed Closure Process in Hybrid Social-Information Networks with an Analysis of Link Formation on Twitter Dario Nardi Seminario Sistemi Complessi 15 Aprile 2014 Dario Nardi (CAS) 15/4/14 1 / 20

Dettagli

Prolog: aritmetica e ricorsione

Prolog: aritmetica e ricorsione Capitolo 13 Prolog: aritmetica e ricorsione Slide: Aritmetica e ricorsione 13.1 Operatori aritmetici In logica non vi è alcun meccanismo per la valutazione di funzioni, che è fondamentale in un linguaggio

Dettagli

Esame di Ricerca Operativa del 20/12/13. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Esame di Ricerca Operativa del 20/12/13. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare: Esame di Ricerca Operativa del 0// (Cognome) (Nome) (Corso di laurea) Esercizio. Completare la seguente tabella considerando il problema di programmazione lineare: max x x x + x x +x x x x x x x 0 x x

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

Sistemi avanzati di gestione dei Sistemi Informativi

Sistemi avanzati di gestione dei Sistemi Informativi Esperti nella gestione dei sistemi informativi e tecnologie informatiche Sistemi avanzati di gestione dei Sistemi Informativi Docente: Email: Sito: Eduard Roccatello eduard@roccatello.it http://www.roccatello.it/teaching/gsi/

Dettagli