Chernoff Bound Siano X 1 Xn n variabili
Chernoff Bound Siano X 1, …Xn n variabili casuali indipendenti tali che Pr[Xi =1]=pi 0<pi<1 Pr[Xi =0]=1 -pi E[Xi]= pi Consideriamo la variabile casuale e poniamo = E[X]= Allora abbiamo > 0
Chernoff Bound Esempio Supponiamo di lanciare 100 volte una moneta Sia Xi la variabile casuale Abbiamo quindi Pr[Xi=1]=1/2 e E[Xi]=1/2 per tutte le i. Allora conta il numero delle teste in 100 lanci. =E[X]=50 Calcoliamo un upper bound sulla probabilità che X>60 Pr[X>60]=Pr[X>(1+0. 2) ]<(e 0. 2/1. 2)50 0. 393
Chernoff Bound Nella lezione precedente ci siamo posti una domanda Quanti nodi ci sono in 2 b/n identificatori? T 2 b/n Nel nostro sistema ci sono n nodi. Pr[Xi=1]=(2 b/n)/2 b=1/n Pr[Xi=0]=1 - Pr[Xi=1]=(n-1)/n E[X ]=1/n
Chernoff Bound T 2 b/n 4 ln n / ln ln n = X conta quanti nodi cadono in T O(log n / log n) =E[X]=1/n*n=1 =1 Chernoff bound e/4<1 Proviamo che non ci sono più di O(logn / log n) nodi. n>e 2 e
H-Chord b n Sia n=2 , per ogni 0 ≤ i < b, il nodo x è connesso ai nodi (x+2 i) mod 2 b; Il grado è b; Il diametro è b; APL è b/2; R-Chord n=2 b [MNW 04] b n Sia n=2 , per ogni 0 ≤ i < b, sia rx(i) un intero scelto in maniera casuale dall’intervallo [0, 2 i), il nodo x è connesso ai nodi (x+2 i+rx(i)) mod 2 b; H-Chord n Sia H() una funzione di hash (es SHA) che mappa un identificatore in nell’intervallo [0, 1), il nodo x è connesso con i nodi x+2 i+ H(x)2 i
H-Chord R-Chord vs H-Chord R-Chord 2 i H-Chord 2 i 2 i+1 2 i+2
H-Chord I Claim 2 p s d Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2 p. P’=Pr[Jk(si) I per qualche 0 ≤ k < b] ≥ d’/2 p Prova Consideriamo il generico vicino di s, si. Denotiamo con di la distanza fra si e t. Sia pi tale che 2 pi ≤ di < 2 pi+1 di Due casi: 2 p 1. d-d’≥si+2 pi s 2 p+1 2 p ≤ d < 2 p+1 p > (log n) / log (log n) I = (d-d’, d] d’= |S|=p di≤d pi≤p i i s d 2 pi+1 d-d’ I t
H-Chord I Claim 2 p s d Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2 p. P’=Pr[Jk(si) I per qualche 0 ≤ k < b] ≥ d’/2 p di Prova 1. d-d’≥si+2 pi 2 p+1 2 p ≤ d < 2 p+1 p > (log n) / log (log n) I = (d-d’, d] d’= |S|=p di≤d, pi≤p 2 p i si s 2 pi+1 d-d’ I d t L’unico jump di si che può cadere in I è il jump (pi+1)esimo, infatti il jump (pi+1)-esimo [si+2 pi, si+2 pi+1). In particolare il jump (pi+1)-esimo appartiene a I con probabilità |I|/2 pi = d’/2 pi ≥ d’/2 p pi≤p
H-Chord I 2 p Claim s 2 p+1 2 p ≤ d < 2 p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2 p. P’=Pr[Jk(si) I per qualche 0 ≤ k < b] ≥ d’/2 p Prova d 2. d-d’<si+2 pi di si s 2 p i d-d’ |S|=p di≤d, pi≤p 2 pi+1 I t
H-Chord 2 p ≤ d < 2 p+1 p > (log n) / log (log n) I = (d-d’, d] d’= Claim Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2 p. P’=Pr[Jk(si) I per qualche 0 ≤ k < b] ≥ d’/2 p d Prova di 2. d-d’<si+2 pi si 2 p i d-d’ |S|=p di≤d, pi≤p 2 pi+1 I s t A B In questo caso sia il jump p-esimo che il jump (p+1)-esimo possono cadere in I. Sia I = A B dove A=(d-d’, si+2 pi) e B=[si+2 pi, d] Ovviamente |A|+|B|=d’.
H-Chord 2 p ≤ d < 2 p+1 p > (log n) / log (log n) I = (d-d’, d] d’= Claim Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2 p. P’=Pr[Jk(si) I per qualche 0 ≤ k < b] ≥ d’/2 p d Prova 2. d-d’<2 pi di si 2 p i d-d’ |S|=p di≤d, pi≤p A=(d-d’, si+2 pi) B=[si+2 pi, d] 2 pi+1 I s t A B C Sia C l’insieme (si+2 pi+1 – 2|A|, si+2 pi+1) In H-Chord se il (pi+1)-esimo jump di si cade in C allora il pi-esimo jump di si cade in A. Siamo interessati a calcolare la probabilità che il (pi+1)-esimo jump di s cade in C o in B.
H-Chord Claim Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2 p. P’=Pr[Jk(si) I per qualche 0 ≤ k < b] ≥ d’/2 p d Prova di 2. d-d’<2 pi 2 p i d-d’ si 2 p ≤ d < 2 p+1 p > (log n) / log (log n) I = (d-d’, d] d’= |S|=p di≤d, pi≤p A=(d-d’, si+2 pi) 2 pi+1 I s t A B C Sia Q l’evento “il (pi+1)- esimo jump di si cade in C” questa volta Sia R l’evento “il (pi+1)-esimo jump di si Ma cade in B” Q R è vuoto. Siamo interessati a calcolare la Pr[Q R]=Pr[Q]+Pr[R]-Pr[Q R] Q Q R R
H-Chord 2 p ≤ d < 2 p+1 p > (log n) / log (log n) I = (d-d’, d] d’= Claim Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2 p. P’=Pr[Jk(si) I per qualche 0 ≤ k < b] ≥ d’/2 p d Prova di 2. d-d’<2 pi si 2 p i d-d’ |S|=p di≤d, pi≤p A=(d-d’, si+2 pi) 2 pi+1 I s t A B Pr[Q R]= Pr[Q]+Pr[R]-Pr[Q R] =Pr[Q]+Pr[R] C
H-Chord Perchè H-Chord e non R-Chord? Svantaggi R-Chord n n Come mantenere la lista dei vicini? No fast bootstrap In H-Chord non c’è nessun fattore random, in particolare ogni nodo conoscendo il suo vicino conosce i vicini del suo vicino. O almeno può stimare le posizioni dei vicini del nostro vicino
H-Chord Dato un nodo x, x conosce il suo vicino y, dato y, x può calcolare H(y) e quindi può calcolare per ogni 0≤i<b y+2 i+ H(y)2 i. La funzione di hash è uguale per tutti i nodi Tuttavia, quando il ring non è pieno, x non conosce l’esatta posizione dei vicini ma ne ha una buona stima. H-Chord 2 i 2 i+1 2 i+2
H-Chord
H-Chord
H-Chord Perchè H-Chord e non Chord? Svantaggi R-Chord n n Come mantenere la lista dei vicini? No fast bootstrap Non è possibile fare fast bootstrap perché le tabelle di routing sono diverse, tuttavia se due nodi x, y generano due valori hash abbastanza vicini (H(x) H(y)) allora le loro tabelle sono simili. I problemi sono: Cosa vuol dire “abbastanza vicini” Come trovare un vicino con hash “abbastanza vicino”
Sistemi P 2 P uniformi Vantaggi: n n n Facili da implementare e da analizzare; Algoritmo di routing semplice (greedy); Routing locale, la procedura di lookup interessa solo i nodi che si trovano fra sorgente e destinazione; Non c’è congestione sui nodi, vale a dire il traffico generato dai messaggi di lookup è più o meno uguale per tutti i nodi. Fast bootstrap: Poiché tutti i nodi utilizzano gli stessi jump, è possibile utilizzare la tabella di routing del proprio predecessore per velocizzare notevolmente l’operazione di join; Svantaggi: n Sfortunatamente non sono gli algoritmi più efficienti.
10 Koorde base k 01 00 Scegliendo k = O(log n): n n 11 02 Grado = O(log n) APL = O(log n / log (log n)) Svantaggi n n n Bisogna stimare n a priori; Non è possibile cambiare il grado in un sistema attivo; E’ molto complicato stabilizzare la rete; 12 b=2 k=3 20 21 22
R-Chord Vantaggi: n n n Algoritmo di routing locale Algoritmo di routing semplice Efficiente Non è necessaria la stima di log n L’algoritmo di stabilizzazione è identico a quello di Chord Svantaggi n n Come mantenere la lista dei vicini? No fast bootstrap
H-Chord Vantaggi n n n Algoritmo di routing locale Algoritmo di routing semplice Efficiente Non è necessaria la stima di log n L’algoritmo di stabilizzazione è identico a quello di Chord Svantaggi n No fast bootstrap ? ? Ci stiamo lavorando
- Slides: 22