Progetto di Calcolo della Probabilità e Statistica Matematica. di Cavenaghi Mattia. matricola

Documenti analoghi
Rete ad albero. Università degli Studi di Milano Polo Didattico e di Ricerca di Crema. Facoltà di Scienze Matematiche, Fisiche e Naturali

Problema del cammino minimo

Progetti Algoritmi e Strutture Dati A.A Si intende realizzare una coda di priorità mediante un max-heap.

Enos Recanati RELAZIONE DEL PROGETTO DI CALCOLO DELLE PROBABILITÀ E STATISTICA MATEMATICA

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

12.1 IL PROBLEMA DEL CAMMINO MINIMO: L ALGORITMO DI DIJKSTRA

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

Metodi di Geometria Algebrica per la ricostruzione statistica degli alberi filogenetici Luigi Biondi

Routing IP. IP routing

4c. Esercizi sul livello di Rete Instradamento in Internet

AMPL Problemi su Reti

11.4 Chiusura transitiva

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Diagrammi di flusso (Flow Chart)

Esercizio 1. Esercizio 2

Cammini minimi fra tutte le coppie

Algoritmi e Strutture Dati

Esercitazione 2. Progettare un algoritmo che risolva tale problema in tempo O( E + V log V ).

Se due computer sono sulla stessa rete Sappiamo come possono fare per scambiarsi datagram Usano gli indirizzi fisici

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Programmare con MatLab IV

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Possibile applicazione

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

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

Routing statico. Routing statico. Tolleranza ai guasti. Routing statico. Fase di progetto. 09CDUdc Reti di Calcolatori.

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

GARA SECONDARIA DI PRIMO GRADO INDIVIDUALE

Progettazione di Algoritmi

Algoritmo di Dijkstra

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Analisi e implementazione dell algoritmo di Dijkstra (Parte 1)

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

Diagrammi di flusso (Flow Chart)

Routing statico nelle reti IP

STRUTTURE DI CONTROLLO DEL C++

Problema di flusso massimo

Operativamente, risolvere un problema con un approccio ricorsivo comporta

ESERCIZIO 1: Punto 1

Algoritmo basato su cancellazione di cicli

Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

INSTRADAMENTO: ALGORITMO DI BELLMAN-FORD

Introduzione al MATLAB c Parte 2

Instradamento in IPv4

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Progettazione di Algoritmi

Fondamenti di Internet e Reti

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento

Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa

Elementi di Calcolo Scientifico per l Ingegneria A.A

Esercitazione 3. Osserviamo che, dato un grafo con pesi distinti, questo ammette un unico MST.

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Modelli di Programmazione Lineare. PRTLC - Modelli

Elementi di Informatica e Programmazione

Università degli Studi di Brescia INFORMATICA. Dipartimento di Ingegneria Meccanica e Industriale

INSTRADAMENTO: ALGORITMO DI KRUSKAL

Introduzione ai grafi

VBA Principali Comandi

Laboratorio: Ottimizzazione su reti

GARA SECONDARIA DI PRIMO GRADO INDIVIDUALE

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

ESERCIZI SULLA TECNICA Greedy

DIFFUSIONE SU GRAFO (rete) E RIPOSIZIONAMENTO DI FARMACI SULLA BASE DELLA SIMILARITA DI STRUTTURA MOLECOLARE

Problemi, istanze, soluzioni

Servizi e Strutture di Rete

Mini-Corso di Informatica

Soluzioni della settima esercitazione di Algoritmi 1

Esercitazioni di Sistemi di commutazione LS

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple.

Esame di Ricerca Operativa del 12/06/18. Base x Degenere? y Indice Rapporti Indice uscente entrante

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Matlab. Istruzioni condizionali, cicli for e cicli while.

HYPENS: Simulatore di Reti di Petri ibride

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Introduzione al MATLAB c Parte 3 Script e function

algoritmi e strutture di dati

Esercizio 1. min. Esercizio 2. Esercizio 3

Università degli Studi di Roma La Sapienza, Facoltà di Ingegneria. Corso di INGEGNERIA DEL SOFTWARE (Ing. Informatica, Nuovo Ordinamento)

Fondamenti di Informatica

RICERCA OPERATIVA (a.a. 2003/04) Nome Cognome:

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

LA RICORSIONE! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo:

Page Rank. Guerra Stefano. 1. DESCRIZIONE DEL PROBLEMA "Page Rank" 2. DESCRIZIONE DELL ALGORITMO. Pagina 2

Testi di esame precedenti a.a. e soluzioni

Esercizi Union-Find e su Grafi. Ugo Vaccaro

Alberi e alberi binari I Un albero è un caso particolare di grafo

Esame di Ricerca Operativa del 6/2/18. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Alberi e alberi binari I Un albero è un caso particolare di grafo

Transcript:

Progetto di Calcolo della Probabilità e Statistica Matematica di Cavenaghi Mattia matricola

Indice:. Schema della rete pag.. Esempio di cammino realizzabile pag.. L'istogramma della simulazione pag..scelta del TTL (time to live) dei pacchetti pag.. Il programma di simulazione pag.

.Schema della rete La rete scelta per la simulazione e, riportata nell'immagine, è costituita da un grafo, avente nodi, collegati tra di loro tramite degli archi orientati. Come possiamo notare, tali archi sono, ad esclusione di - e -, unidirezionali. Il nodo sorgente ed il nodo destinatario, sono stati etichettati ed evidenziati con colori differenti: rispettivamente verde e rosso. Sorgente Destinazione Immagine : Topologia della rete utilizzata per la simulazione Ogni nodo, ha un numero minimo di archi e, può averne un massimo, collegati ad altrettanti nodi: la numerazione di tali archi, è stata assegnata in senso orario: nella seguente immagine, ne viene riportato un esempio: n Immagine : Esempio di numerazione degli archi Per meglio comprendere il sistema di numerazione, ho riportato nella tabella, i primi vicini, ossia dato un nodo di partenza, vengono riportati tutti i nodi raggiungibili tramite un solo hop: Numero di nodo Arco Arco Arco

Numero di nodo Arco Arco Arco Tabella : Tabella dei nodi "primi vicini" Questa tabella, è stata inoltre memorizzata nel file tabella_nodi.xls (formato Excel), poiché necessaria per la corretta esecuzione della simulazione, attraverso il programma da me realizzato (per il codice e l'analisi dello stesso, si rimanda al capitolo ).

.Esempio di cammino realizzabile Di seguito, ho riportato un esempio di cammino che un pacchetto, tramite un processo di generazione casuale dei nodi, può intraprendere: Il pacchetto, come accennato in precedenza, parte dal nodo numero e, compiendo hop (il numero minimo di hop richiesto è ma, guardando la topologia della rete simulata, si può notare che sono necessari come minimo hop, per compiere un cammino completo), arriva a destinazione (nodo ). Nodo di partenza Nodi disponibili Nodo di arrivo N. hop effettuati,,,,,,,, Cammino effettuato Immagine : Esempio di cammino N. totali di hop,,,,,, Tabella : Esempio di cammino Durante la computazione, è possibile che si verifichino dei loop tra più nodi (immagine ) ma, durante la progettazione della rete ed eseguendo diverse simulazioni, sono riuscito ad evitare i fenomeni di loop cieco (immagine ).

dopo n loop Immagine : Esempio di loop tra più nodi Il nodo, ha solo un arco uscente Immagine : Esempio di loop cieco

.L'istogramma della simulazione Questo grafico, è stato realizzato tramite i dati presenti nel file distribuzione_pacchetti.csv, riformattato poi, nel file distribuzione_pacchetti.xls. La simulazione, comporta il lancio di. pacchetti ognuno, avente la capacità di effettuare. hop. Per questioni di visibilità, ho scelto di rappresentare i pacchetti che hanno compiuto il loro cammino entro passi: scorrendo il file distribuzione_pacchetti.csv, è facile notare che oltre questo valore, non sono presenti pacchetti recapitati al nodo di destinazione. Osservando il grafico (in particolare, concentrando l'attenzione sul picco), la maggioranza dei pacchetti, ha compiuto il proprio cammino con un numero compreso tra i ed i hop (circa). Per le considerazioni relative al TTL dei pacchetti, si rimanda al seguente capitolo. Immagine : Istogramma della distribuzione dei pacchetti, in base al numero di hop N. hop effettuati N. pacchetti ricevuti

.Scelta del TTL (time to live) dei pacchetti Sempre grazie al file distribuzione_pacchetti.csv, possiamo calcolare la cumulativa, tramite l'ausilio di un foglio di calcolo elettronico: per questioni di spazio, riporto i valori corrispondenti ai soli cammini composti dal massimo hop: N.Hop N.Pacchetti ricevuti Cumulativa......... Tabella : Distribuzione dei pacchetti e degli hop: evidenziato in giallo, compare il valore del TTL ottimale corrispondente al % dei pacchetti recapitati I requisiti progettuali, richiedevano che si calcolasse il valore del TTL, in corrispondenza del % della massa della distribuzione. Tale valore, nel mio caso, corrisponde ad un cammino di hop, valore ottimo per garantire la sopravvivenza dei pacchetti, all'interno della rete realizzata.

.Il programma di simulazione Veniamo ora alla parte finale di questa relazione ovvero la discussione del codice, relativo al programma che ho realizzato. Il corpo principale, è rappresentato dal file Progetto_CPSM.m, realizzato attraverso il linguaggio Matlab e, di cui ne riporto il codice: hop = ; pacchetti = ; for a = :hop for b = : distribuzione(a, ) = a; distribuzione(b, ) = ; end end pacchetti_ricevuti = ; pacchetti_persi = ; file_destinazione = fopen('risultati_simulazione.txt', 'wt'); file_destinazione = fopen('distribuzione_pacchetti.csv', 'wt'); fprintf(file_destinazione, 'Inizio della simulazione del: %d-%d-%d; ore: %d:%d:%d\n\nn.pacchetto\t\tn.hop\t\trisultato\n\n', fix(clock)); fprintf(file_destinazione, 'Simulazione del: %d-%d-%d; ore: %d:%d: %d\ndistribuzione numero di hop e pacchetti ricevuti\n\nn.hop,n.pacchetti ricevuti\n', fix(clock)); acquisizione_matrice; for i = :pacchetti nodo_corrente = ; nodo_successivo = ; hop_effettuati = ; fprintf(file_destinazione, '%d\t\t\t', i); instradamento; fprintf(file_destinazione, '%d\t\t', hop_effettuati); if nodo_corrente ~= y fprintf(file_destinazione, 'Perso\n'); pacchetti_persi = pacchetti_persi + ; else

fprintf(file_destinazione, 'Ricevuto\n'); pacchetti_ricevuti = pacchetti_ricevuti + ; distribuzione(hop_effettuati, ) = (distribuzione(hop_effettuati, ) + ); end end fprintf(file_destinazione, '\n\n'); fprintf(file_destinazione, 'Pacchetti arrivati a destinazione: %d\n', pacchetti_ricevuti); fprintf(file_destinazione, 'Pacchetti persi: %d\n', pacchetti_persi); for l = :hop fprintf(file_destinazione,'%d,', distribuzione(l, )); fprintf(file_destinazione,'%d\n', distribuzione(l, )); end fclose('all'); Tralasciando le linee relative alla creazione e formattazione dei files di output, osserviamo che le linee, dalla alla e dalla alla, sono comandi di inizializzazione delle variabili necessarie al corretto funzionamento della simulazione: in particolare la variabile distribuzione, è una matrice x, contenete i dati utili al tracciamento dell'istogramma ed alla scelta del valore di TTL, visti nel capitolo e. Dalla linea, parte la simulazione vera e propria: con un ciclo for, viene simulato il lancio dei singoli pacchetti: se (if, linea ) il peso del nodo generato casualmente, tramite la funzione instradamento, è diverso dal nodo di destinazione (nodo ), il pacchetto verrà conteggiato nei pacchetti_ricevuti altrimenti, verrà inserito tra i pacchetti_persi (linea e ). Verso la fine del ciclo (linea ), si memorizza nella matrice distribuzione, il numero degli hop effettuati dal pacchetto i-esimo. Prima di procedere all'analisi del processo di instradamento, è opportuno capire come i dati della rete (peso del nodo e nodi primi vicini), vengono inseriti nella simulazione. La linea, riporta la funzione acquisizione_matrice, implementata nel file acquisizione_matrice.m: matrice_grafo = xlsread('tabella_nodi.xls'); [y, x] = size(matrice_grafo); for m = :y for n = :x if (isnan(matrice_grafo(m, n))) matrice_grafo(m, n) = matrice_grafo(m, ); end end end In sostanza, i dati presi da un foglio di calcolo (tabella_nodi.xls), il quale deve essere

sempre presente nella medesima cartella dei files del programma, vengono letti da Matlab ed inseriti in una matrice denominata matrice_grafo. In tale matrice, vi è la possibilità della presenza di celle vuote o contenenti testo che, il linguaggio Matlab, interpreta come valori NaN (Not a Number). Dopo l'acquisizione e tramite il ciclo for (linea ), risolvo tale problema, sostituendo ai valori NaN (non utilizzabili nella simulazione) il valore del peso del nodo, la cui riga corrente, fa riferimento. Supponiamo che la seguente tabella, sia una porzione della matrice_grafo del programma: Peso del nodo Arco Arco Arco............ NaN Nan............ Tabella : Esempio di applicazione della funzione "acquisizione_matrice": prima La funzione acquisizione_matrice, trasforma la matrice nel modo seguente: Peso del nodo Arco Arco Arco........................ Tabella : Esempio di applicazione della funzione "acquisizione_matrice": dopo Avvenuta l'acquisizione dei dati e l'inizializzazione delle variabili, la linea del file Progetto_CPSM.m tramite la funzione instradamento, realizzata nel file instradamento.m, effettua il cammino dell'i-esimo pacchetto: for k = :hop if (nodo_corrente ~= y) riga_matrice = matrice_grafo(nodo_corrente, :); nodo_ = riga_matrice(:, ); nodo_ = riga_matrice(:, );

nodo_ = riga_matrice(:, ); while (nodo_successivo == nodo_corrente) numero_casuale = randint(,, [ ]); if numero_casuale == nodo_successivo = nodo_; elseif numero_casuale == nodo_successivo = nodo_; elseif numero_casuale == nodo_successivo = nodo_; end end nodo_corrente = nodo_successivo; hop_effettuati = hop_effettuati + ; else break end end La riga della matrice (riga_matrice, linea ), ossia quella corrispondente al nodo corrente (per il primo hop sarà il nodo, per l'n-esimo hop sarà uno qualsiasi dei nodi della rete, memorizzato nella variabile nodo_corrente), viene scomposta nei nodi primi vicini (variabili nodo_, nodo_, nodo_) e, tramite il ciclo while (linee da a ), viene randomizzato un numero intero (randint) compreso tra e tre ed a cui è associato un nodo primo vicino. Successivamente (linea ), se il nodo non è pari ne al nodo di destinazione ne al nodo_corrente, viene memorizzato come nodo_successivo e il numero di hop aumentato di (hop_effettuati, variabile che da specifiche, doveva essere nhop). Terminato il ciclo, si riparte col passo (hop) successivo, fino al.-esimo; concluso il cammino, si ripete l'intero procedimento col pacchetto successivo, fino al.-esimo.