La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Lezione n°10 Prof.ssa Rossella Petreschi

Presentazioni simili


Presentazione sul tema: "Lezione n°10 Prof.ssa Rossella Petreschi"— Transcript della presentazione:

1 Lezione n°10 Prof.ssa Rossella Petreschi
Lezione del 07/11/2014 del Corso di Algoritmica

2 Rappresentazione esplicita di Rank
Nella rappresentazione esplicita del rank si hanno m (=2n+1) interi di logm bit ciascuno , da cui: Spazio: mlogm bit; Tempo: O(1) b(i) ……… i ……… Rank ………. Per ridurre lo spazio, si partiziona il vettore b in segmenti di dimensione k=logm/2 . Per ogni segmento si calcola un solo valore di rango, quindi avremo m/k= m/(logm/2) interi di logm bits ciascuno, da cui: Spazio: 2m bit; 2

3 Implementazione di Rank
j b(i) …… i …… Rank … Tempo O(1) per conoscere il Rank (=Rank’) degli elementi campionati e per gli altri??? per gli elementi non campionati….. Rank(b,6) = Rank’[1] + #1nei primi 3 elementi di b[4,7] = 3 +1 =4 3

4 Numero degli 1 in un fissato intervallo di b
C(h,2h): riporta il numero di 1 contenuti nelle prime h posizioni di tutti i possibili segmenti elementari  C(h,2h)= k2k = ((logm) /2)2(logm)/2 elementi di O(logk) bit ciascuno h= h= h= h= Rank(b,6) = Rank’[1] + #1nei primi 3 elementi di b[4,7] = Rank’[1] + C[2,9] = 3 +1 =4 Dove Rank’[1] è il valore del Rank campionato più vicino a sinistra all’indice di cui si vuole calcolare il Rank; 9 è il numero decimale corrispondente al numero binario scritto in b nello intervallo [4,7] e la riga 2 indica che si debbono contare gli 1 nei primi 3 elementi in [4,7]. In generale Rank(b,i) = Rank’ [q] + C[r,s] dove q = ⎣i/k⎦ ed r = i-qk sono calcolabili in tempo O(1) e s??? 4

5 Calcolo di s in O(1) Rank’ m/k = 2m/logm j b’(j) ≤ b’(j) < m1/2 b(i) …… k=1/2 logm i …… Rank … Da cui Rank(b,i) = Rank’ [q] + C[r,b’[q+1]] Rank(b,6) = Rank’[1] + C[r,b’[q+1]] = Rank’[1] + C[2,b’[2]] = 3 +1 =4 5

6 2m è ancora troppo Dato un array di 256 bits i …… 32 interi di 8 bit ciascuno: b(i) … mlogm Rank i …… 8 interi di 8 bit ciascuno: b(i) … 2m (k=logm/2) Rank’ i …… 4 interi di 8 bit ciascuno: b(i) … O(m/logm)(k=(log2m)/8) Rank” 6

7 ..di conseguenza L’operazione di Rank(b,i) si esegue in tempo costante con l’aggiunta di o(m) bit ai bit richiesti dal vettore b Infatti: Lo spazio occupato da Rank” è O(m/logm)bit Lo spazio occupato da Rank’ è O(mloglogm/logm)bit Si partiziona b in blocchi da k = (log2m)/8 bit e per ciascuno di questi blocchi si costruisce l’array Rank’ relativo (così è garantito che ogni elemento di Rank’ richiede O(loglogm) bit dato che le somme parziali all’interno di ogni singolo blocco Rank’ possono aver valore al più k) Lo spazio occupato da C è O( m1/2 logm) O(log(logm/2)) bit Quindi aggiungiamo o(m) ai bit richiesti da b’ aggiungiamo Rank”(8i/log2m) al calcolo del Rank(b,i) Esempio: Rank(b,12) = Rank”(1) + Rank’(3) + C[0,b’[4]] = Rank”(1) + Rank’(3) + C[0,0] = = 6 7

8 L’abbinamento Abbinamento (accoppiamento) in un grafo connesso non orientato (e privo di loop) è un qualsiasi insieme M di archi a due a due non incidenti. La cardinalità di M è la cardinalità dell’abbinamento. Un nodo si dice saturo (esposto) se è (non è) estremo di un qualche arco in M. M è un abbinamento massimale se non è sottoinsieme proprio di alcun abbinamento in G. M è un abbinamento massimo se non esiste un altro abbinamento in G con cardinalità maggiore di quella di M. M è un abbinamento perfetto se non lascia alcun nodo esposto. 8

9 Proprietà dell’abbinamento
Grafi qualunque G ( V, E ), V = n Ogni abbinamento massimo è massimale Ogni abbinamento perfetto è massimo Un abbinamento massimo non è detto sia perfetto In un grafo possono esistere distinti abbinamenti perfetti Un abbinamento può avere al più n/2 archi Un abbinamento è perfetto se e solo se ha n/2 archi Se un grafo ha un abbinamento perfetto, allora ha un numero pari di nodi 9

10 Sui grafi bipartiti G(XUY,E)
VALE La cardinalità di un abbinamento massimo è al più il minimo fra la cardinalità di X e quella di Y G non può avere un abbinamento perfetto se |X| ≠ |Y| Teorema del matrimonio (Jacobi 1890, Frobenius 1917, Hall 1935) G(XUY, E) ha un abbinamento perfetto sse X = Y S ≤ N(S) per ogni S in X Teorema di Konig-Egervary (Konig 1930, Egervary1931) In ogni grafo bipartito la cardinalità massima di un abbinamento è uguale alla cardinalità minima di un ricoprimento (insieme di nodi che copre tutti gli archi del grafo) 10

11 Applicazioni Grafo bipartito
In una azienda n nuovi assunti da assegnare ad n differenti lavori Scegliere fra i componenti di una squadra di nuoto il team giusto da portare ad una gara in modo da poter partecipare a tutte le discipline Grafo qualunque Scegliere opportunamente coppie di persone a cui far condividere una stanza d’albergo. Una compagnia aerea multiculturale deve scegliere i due piloti dello stesso aereo in modo che abbiano lo stesso tipo di addestramento e parlino una lingua comune e poi abbinamenti di strutture chimiche, scheduling parallelo di differenti lavori su diverse macchine, assegnamento di turni in una fabbrica………. 11


Scaricare ppt "Lezione n°10 Prof.ssa Rossella Petreschi"

Presentazioni simili


Annunci Google