Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi

Slides:



Advertisements
Presentazioni simili
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Advertisements

Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 29/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 12/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Simulazione di lettura e scrittura concorrente Tecnica dell’accelerated cascading Lezione.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi Complessità e Trasportabilità Lezione n°3.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti Lezione n°9.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Interconnessione tramite reti Lezione n°6.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi ELEZIONE DEL LEADER Lezione n°8.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti 2 Lezione n°10.
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi Lezione n°10.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Come generare un MST in un sistema distribuito Lezione n°13.
Algoritmi Avanzati a.a. 2010/11 Lezione del 18/04/2011 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. EMANUELE FUSCO.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
© 2007 SEI-Società Editrice Internazionale, Apogeo
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2012/2013 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Lezione n°19 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
IL CONCETTO DI ALGORITMO
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Sulla complessità Lezione n°2
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°12 Prof.ssa Rossella Petreschi
Lezione n°6 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a. 2010/11
Scrivere programmi corretti
Algoritmi e Strutture Dati
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Transcript della presentazione:

Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°11 Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi 1

Ricerca in un vettore ordinato Variabili: N: numero dei processori y: elemento da cercare X = (x1, x2, …, xn), tale che x1  x2 …  xn: vettore in cui cercare y l ed r (inizializzati a 0 ed n rispettivamente): estremi del vettore su cui si lavora; q0,…qN+1 (relative a ciascun processore + 2 aggiuntive): indice degli elementi da analizzare; c0,…cN+1 (inizializzate a 0, cN+1 inizializzata ad 1): identificatori del sottovettore su cui iterare. Input: X, y Output: i t.c. xi  y  xi+1 Passo 1: dividi iterativamente il vettore in sottovettori più o meno bilanciati finché il numero di elementi nel sottovettore identificato non è  N e controlla se X[qi]=y; Passo 2: controlla se nel sottovettore di dimensione  N è presente l’elemento cercato.

Algoritmo Passo 1 Passo 2 P1: c0 = 0; cN+1 = 1; l=0; r=n+1; while (r-l) > N do Pj: for j = 1 to N pardo if j = 1 then q0 = l; qN+1 = r qj = l +  j (r-l) / (N+1)  if y = X[ qj ] then return qj else if y > X[ qj ] then cj = 0 else cj = 1 if cj < cj+1 then l = qj; r = qj+1 if j = 1 and c0 < c1 then r = q1 if y = X[ l+j ] then return l+j else if y > X[ l+j ] then cj = 0 else cj = 1 if cj < cj+1 then return l+j if j = 1 and c0 < c1 then return l Passo 1 Passo 2

Esempio l r n = 14 N = 2 y = 37 l r Passo 2 l r return 9 x - -22 -3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x - -22 -3 27 32 35 42 55 56 61 70  n = 14 N = 2 y = 37 q0 q1 q2 q3 1 2 3 c l r Passo 2 4 5 6 7 8 9 10 11 x 12 15 27 32 35 42 55 l r 7 8 9 10 11 x 27 32 35 42 55 q0 q1 q2 q3 1 2 3 c 1 2 3 c return 9

Complessità dell’algoritmo Ciascuna iterazione del Passo 1 richiede tempo O(1). Dimensione del sottovettore alla iterazione i-esima: si+1 = si / (N+1) = s0 / (N+1)i = n+2 / (N+1)i Numero totale di iterazioni: logN+1(n+2) = log2(n+2) / log2(N+1) Il Passo 2 richiede tempo costante. Tempo complessivo richiesto dall’algoritmo: O(log2(n+2) / log2(N+1)). Il modello di PRAM è CREW perché tutti gli N processori accedono contemporaneamente alle variabili y, l, r e c. Quando N = O(1), il costo complessivo dell’algoritmo è O(log n): pari all’ottimo nel sequenziale. Quando N = O(n) il tempo diventa costante.

Sistema Distribuito Un Sistema Distribuito è un insieme interconnesso di computer, processi o processori, ciascuno definito in modo autonomo. Un sistema distribuito si può pensare semplicemente come un sistema fisico (computer connessi da una rete) o più in generale come un sistema logico: insieme di processi connessi da un meccanismo di scambio di messaggi. “... è un sistema in cui la caduta di un computer del quale ignoravi persino l’esistenza, può rendere il tuo computer inutilizzabile” Lensi Lamport “... è un modo di organizzare e considerare una famiglia di risorse indipendenti e possibilmente distanti (o debolmente connesse), come se facessero parte di un unico grande pacchetto” Andrew Tannenbaum 6

Trasmissione dell’informazione Nei sistemi distribuiti, la trasmissione dell’informazione assume un ruolo fondamentale. A seconda del sistema preso in considerazione, la rete di interconnessione può consistere in connessioni punto a punto (in tal caso ogni connessione gestisce il traffico esclusivamente fra due processori) o in canali di trasmissione (broadcast channels) che distribuiscono l’informazione a tutti i processori appartenenti ad un agglomerato (cluster) predefinito. I processori non condividono fisicamente alcuna memoria e quindi lo scambio di informazioni fra essi deve per forza passare lungo la specifica rete di interconnessione. 7

Task Definiamo task un frammento di codice sequenziale che deve essere eseguito da un singolo processore. Quando due task debbono comunicare fra loro durante l’esecuzione, ma i processori che li stanno eseguendo non sono connessi direttamente nella rete, non c’è modo di effettuare tale comunicazione in modo diretto. Ogni processore nel sistema deve pertanto, sia eseguire il task che gli è stato assegnato, sia ridistribuire l’informazione secondo le necessità del caso. Queste due operazioni, per quanto possibile, non devono interferire fra di loro. In tal modo ogni processore viene visto dal sistema come una coppia di entità logiche che lavorano in modo indipendente: l’entità di processo che esegue il proprio compito e l’entità di comunicazione che trasmette l’informazione nella rete. 8

Differenza fra sistema distribuito e parallelo Sistema parallelo sistema multiutente che si riferisce ad ambienti di lavoro di tipo collaborativi è pensato per essere usato da un singolo utente o processo per garantire la massima velocizzazione di una singola applicazione computer, processi o processori non omogenei e asincroni processori omogenei sincroni computer, processi o processori fra loro autonomi processori usati insieme per un’unica computazione problemi di sicurezza connessi alla rete (perdita di messaggi, cadute di sitema, condivisione dei dati, etc…) in genere è considerato come un sistema fisicamente e logicamente inaccessibile 9

Algoritmo Distribuito Un algoritmo distribuito D si può rappresentare come un grafo G = (P, C), dove l’insieme dei nodi è l’insieme dei processori e l’insieme degli spigoli orientati è un insieme di canali di comunicazione (generalmente unidirezionali). Tutti i processori, con l’eccezione di un sottoinsieme al quale è permesso di mandare messaggi “spontaneamente”, sono reattivi, ovvero eseguono un qualunque task solo come risposta al ricevimento di un messaggio da un altro task. Un solo blocco di processori Pinit può inizialmente eseguire un task a scopo di inizializzazione. 10

Schema base di un algoritmo distribuito begin Pinit: exec eventuali operazioni di inizializzazione; send messaggio ai vicini repeat Pi: receive messaggio M e BM è vero exec qualche operazione send messaggi ai vicini until un segnale di terminazione globale arriva a D end La operazione di send invia un messaggio su uno o più canali di comunicazione uscenti da Pi. Ogni processore ha una coda di messaggi ricevuti. La receive estrae un messaggio dalla coda di Pi. 11

Complessità distribuita complessità dei messaggi (Md): è il numero totale di messaggi spediti tra nodi vicini durante la computazione; complessità temporale (Td): tempo speso per la comunicazione durante la computazione del caso peggiore fino a quando l’output richiesto è stato raggiunto (o il sistema va in halt) 12

Sistemi sincroni e asincroni Sistema sincrono Sistema asincrono Un messaggio spedito da un nodo ad un suo vicino arriva sempre in tempo costante La trasmissione dei messaggi ha durata variabile L'assenza di segnale è informazione L'assenza di segnale non fornisce informazione La computazione locale ha costo zero 13

Complessità temporale Per quanto riguarda la complessità temporale, nel modello sincrono il suo calcolo si riduce essenzialmente a contare il numero delle pulsazioni che trascorrono durante la computazione; nel modello asincrono il suo calcolo corrisponde al numero di messaggi nella più lunga catena casuale della forma “ricevi un messaggio e spedisci un messaggio come conseguenza”, calcolata su tutte le possibili esecuzioni dell’algoritmo e su tutte le possibili strutture del grafo G. Come sempre, queste misure sono considerate nel caso peggiore e in forma asintotica in funzione di n e m, nodi e archi di G. 14