Cortes em grafos
G: grafo (não orientado) sem laços, G: possivelmente com arestas paralelas.
Conjunto de arestasC é um cortese existe um conjuntoS ⊆VG não vazio tal que
C ={e ∈EG|e tem uma ponta em S e outra fora deS.} Ou seja,C =δG(S) =δG(VG \S).
Cortes em grafos
G: grafo (não orientado) sem laços, G: possivelmente com arestas paralelas.
Conjunto de arestasC é um cortese existe um conjuntoS ⊆VG não vazio tal que
C ={e ∈EG|e tem uma ponta em S e outra fora deS.}
Ou seja,C =δG(S) =δG(VG \S).
Corte mínimo
G: grafo sem laços, possivelmente com arestas paralelas.
C ⊆EG é umcortese existeS ⊆VG não vazio tal que
C ={e ∈EG|e tem uma ponta em S e outra fora deS}
Problema: Dado G, encontrar um corteC com |C|mínimo.
corte minimo
Esta aula: algoritmo aleatorizado que devolve Esta aula: um corte mínimo com alta probabilidade.
Corte mínimo
G: grafo sem laços, possivelmente com arestas paralelas.
C ⊆EG é umcortese existeS ⊆VG não vazio tal que
C ={e ∈EG|e tem uma ponta em S e outra fora deS} Problema: Dado G, encontrar um corteC com |C|mínimo.
corte minimo
Esta aula: algoritmo aleatorizado que devolve Esta aula: um corte mínimo com alta probabilidade.
Corte mínimo
G: grafo sem laços, possivelmente com arestas paralelas.
C ⊆EG é umcortese existeS ⊆VG não vazio tal que
C ={e ∈EG|e tem uma ponta em S e outra fora deS} Problema: Dado G, encontrar um corteC com |C|mínimo.
corte minimo
Esta aula: algoritmo aleatorizado que devolve Esta aula: um corte mínimo com alta probabilidade.
Contração de arestas
Dado um grafoG e uma arestae =uv, acontraçãoG|e é o grafo (V0,E0) onde. . .
e
V0 =V \ {u,v} ∪ {w}e E0=EG \ {f|pontas(f) ={u,v}}
e cada arestaf em E0 tem as mesmas pontas quef em EG exceto por u e v, que são substituídos porw.
w
Proposição: Se C é corte de G|e, então C é corte de G.
Contração de arestas
Dado um grafoG e uma arestae =uv, acontraçãoG|e é o grafo (V0,E0) onde. . .
e
V0 =V \ {u,v} ∪ {w} e E0 =EG \ {f|pontas(f) ={u,v}}
e cada arestaf em E0 tem as mesmas pontas quef em EG exceto por u e v, que são substituídos porw.
w
Proposição: Se C é corte de G|e, então C é corte de G.
Contração de arestas
Dado um grafoG e uma arestae =uv, acontraçãoG|e é o grafo (V0,E0) onde. . .
e
V0 =V \ {u,v} ∪ {w} e E0 =EG \ {f|pontas(f) ={u,v}}
e cada arestaf em E0 tem as mesmas pontas quef em EG exceto por u e v, que são substituídos porw.
w
Proposição: Se C é corte de G|e, então C é corte de G.
Algoritmo de Karger
Problema: Dado G, encontrar um corteC com |C|mínimo.
KARGER(G)
1 enquanto |VG|>2 faça 2 e ←RANDOM-E(EG)
3 G ←G|e
4 devolvaEG
Pela proposição, o algoritmo devolve de fato um corte deG. Claramente ele consume tempo polinomial.
(O número de iteração é|VG| −2.)
Algoritmo de Karger
Problema: Dado G, encontrar um corteC com |C|mínimo.
KARGER(G)
1 enquanto |VG|>2 faça 2 e ←RANDOM-E(EG)
3 G ←G|e
4 devolvaEG
Pela proposição, o algoritmo devolve de fato um corte deG. Claramente ele consume tempo polinomial.
(O número de iteração é|VG| −2.)
Algoritmo de Karger
Problema: Dado G, encontrar um corteC com |C|mínimo.
KARGER(G)
1 enquanto |VG|>2 faça 2 e ←RANDOM-E(EG)
3 G ←G|e
4 devolvaEG
Pela proposição, o algoritmo devolve de fato um corte deG.
Claramente ele consume tempo polinomial. (O número de iteração é|VG| −2.)
Algoritmo de Karger
Problema: Dado G, encontrar um corteC com |C|mínimo.
KARGER(G)
1 enquanto |VG|>2 faça 2 e ←RANDOM-E(EG)
3 G ←G|e
4 devolvaEG
Pela proposição, o algoritmo devolve de fato um corte deG. Claramente ele consume tempo polinomial.
(O número de iteração é|VG| −2.)
Análise do algoritmo
SejaCK o corte devolvido porKARGER(G).
Vamos mostrar que
Pr{CK não é um corte mínimo}<q(n)<1, onden=|VG|.
Executa-se o algoritmor vezes e devolve-se o menor corte produzido.
A chance do corte devolvido não ser mínimo será<q(n)r.
Análise do algoritmo
SejaCK o corte devolvido porKARGER(G).
Vamos mostrar que
Pr{CK não é um corte mínimo}<q(n)<1, onden=|VG|.
Executa-se o algoritmor vezes e devolve-se o menor corte produzido.
A chance do corte devolvido não ser mínimo será<q(n)r.
Análise do algoritmo
SejaC um corte mínimo deG.
O corteC não é a resposta do algoritmo sse alguma aresta deC foi contraída.
SejaEi o evento:
uma aresta de C não é sorteada na iteraçãoi. Vamos delimitarinferiormentePr{E1∩E2∩ · · · ∩En−2}. Tal probabilidade é igual a
Pr{E1} ·Pr{E2|E1} · · ·Pr{En−2|E1∩E2∩ · · · ∩En−3}. Para começar, como delimitarPr{E1}?
Análise do algoritmo
SejaC um corte mínimo deG.
O corteC não é a resposta do algoritmo sse alguma aresta deC foi contraída.
SejaEi o evento:
uma aresta de C não é sorteada na iteraçãoi. Vamos delimitarinferiormentePr{E1∩E2∩ · · · ∩En−2}. Tal probabilidade é igual a
Pr{E1} ·Pr{E2|E1} · · ·Pr{En−2|E1∩E2∩ · · · ∩En−3}. Para começar, como delimitarPr{E1}?
Análise do algoritmo
SejaC um corte mínimo deG.
O corteC não é a resposta do algoritmo sse alguma aresta deC foi contraída.
SejaEi o evento:
uma aresta de C não é sorteada na iteraçãoi.
Vamos delimitarinferiormentePr{E1∩E2∩ · · · ∩En−2}. Tal probabilidade é igual a
Pr{E1} ·Pr{E2|E1} · · ·Pr{En−2|E1∩E2∩ · · · ∩En−3}. Para começar, como delimitarPr{E1}?
Análise do algoritmo
SejaC um corte mínimo deG.
O corteC não é a resposta do algoritmo sse alguma aresta deC foi contraída.
SejaEi o evento:
uma aresta de C não é sorteada na iteraçãoi. Vamos delimitarinferiormentePr{E1∩E2∩ · · · ∩En−2}.
Tal probabilidade é igual a
Pr{E1} ·Pr{E2|E1} · · ·Pr{En−2|E1∩E2∩ · · · ∩En−3}. Para começar, como delimitarPr{E1}?
Análise do algoritmo
SejaC um corte mínimo deG.
O corteC não é a resposta do algoritmo sse alguma aresta deC foi contraída.
SejaEi o evento:
uma aresta de C não é sorteada na iteraçãoi. Vamos delimitarinferiormentePr{E1∩E2∩ · · · ∩En−2}.
Tal probabilidade é igual a
Pr{E1} ·Pr{E2|E1} · · ·Pr{En−2|E1∩E2∩ · · · ∩En−3}.
Para começar, como delimitarPr{E1}?
Análise do algoritmo
SejaC um corte mínimo deG.
O corteC não é a resposta do algoritmo sse alguma aresta deC foi contraída.
SejaEi o evento:
uma aresta de C não é sorteada na iteraçãoi. Vamos delimitarinferiormentePr{E1∩E2∩ · · · ∩En−2}.
Tal probabilidade é igual a
Pr{E1} ·Pr{E2|E1} · · ·Pr{En−2|E1∩E2∩ · · · ∩En−3}.
Para começar, como delimitarPr{E1}?
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Como delimitarPr{E1}?
ComoC é mínimo, δG(v)≥k para todo vértice v. Logo|EG| ≥kn/2.
PortantoPr{E¯1} ≤ knk
2
= 2n.
Ou seja,Pr{E1} ≥1−2n.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Como delimitarPr{E1}?
ComoC é mínimo, δG(v)≥k para todo vértice v.
Logo|EG| ≥kn/2.
PortantoPr{E¯1} ≤ knk
2
= 2n.
Ou seja,Pr{E1} ≥1−2n.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Como delimitarPr{E1}?
ComoC é mínimo, δG(v)≥k para todo vértice v.
Logo|EG| ≥kn/2.
PortantoPr{E¯1} ≤ knk
2
= 2n.
Ou seja,Pr{E1} ≥1−2n.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Como delimitarPr{E1}?
ComoC é mínimo, δG(v)≥k para todo vértice v.
Logo|EG| ≥kn/2.
PortantoPr{E¯1} ≤ knk
2
= 2n.
Ou seja,Pr{E1} ≥1−2n.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Como delimitarPr{E1}?
ComoC é mínimo, δG(v)≥k para todo vértice v.
Logo|EG| ≥kn/2.
PortantoPr{E¯1} ≤ knk
2
= 2n.
Ou seja,Pr{E1} ≥1−2n.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Vimos quePr{E1} ≥1−n2.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
No começo da iteraçãoi+1, temos que|EG| ≥k(n−i)/2. LogoPr{E¯i+1|E1∩E2∩ · · · ∩Ei} ≤ k(n−i)k
2
= n−i2 .
Ou seja,Pr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 .
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Vimos quePr{E1} ≥1−n2.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
No começo da iteraçãoi+1, temos que|EG| ≥k(n−i)/2.
LogoPr{E¯i+1|E1∩E2∩ · · · ∩Ei} ≤ k(n−i)k
2
= n−i2 .
Ou seja,Pr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 .
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Vimos quePr{E1} ≥1−n2.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
No começo da iteraçãoi+1, temos que|EG| ≥k(n−i)/2.
LogoPr{E¯i+1|E1∩E2∩ · · · ∩Ei} ≤ k(n−i)k
2
= n−i2 .
Ou seja,Pr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 .
Análise do algoritmo
C: um corte mínimo de G e k=|C|.
Ei: uma aresta de C não é sorteada na iteraçãoi. Vimos quePr{E1} ≥1−n2.
Como delimitarPr{Ei+1|E1∩E2∩ · · · ∩Ei}?
No começo da iteraçãoi+1, temos que|EG| ≥k(n−i)/2.
LogoPr{E¯i+1|E1∩E2∩ · · · ∩Ei} ≤ k(n−i)k
2
= n−i2 .
Ou seja,Pr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 .
Análise do algoritmo
SejaCK o corte devolvido porKARGER(G).
C: um corte mínimo de G.
Queremos delimitarinferiormentePr{CK =C}.
Ou seja, delimitarPr{E1∩E2∩ · · · ∩En−2}.
Já sabemos quePr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 . Então
Pr{CK =C} ≥
n−3
Y
i=0
1− 2 n−i
= 1− 2 n
1− 2 n−1
1− 2 n−2
· · · 1−2 4
1−2 3
= n−2
n ·n−3
n−1·n−4 n−2· · ·2
4 ·1
3 = 2
n(n−1).
Análise do algoritmo
SejaCK o corte devolvido porKARGER(G).
C: um corte mínimo de G.
Queremos delimitarinferiormentePr{CK =C}.
Ou seja, delimitarPr{E1∩E2∩ · · · ∩En−2}.
Já sabemos quePr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 .
Então
Pr{CK =C} ≥
n−3
Y
i=0
1− 2 n−i
= 1− 2 n
1− 2 n−1
1− 2 n−2
· · · 1−2 4
1−2 3
= n−2
n ·n−3
n−1·n−4 n−2· · ·2
4 ·1
3 = 2
n(n−1).
Análise do algoritmo
SejaCK o corte devolvido porKARGER(G).
C: um corte mínimo de G.
Queremos delimitarinferiormentePr{CK =C}.
Ou seja, delimitarPr{E1∩E2∩ · · · ∩En−2}.
Já sabemos quePr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 . Então
Pr{CK =C} ≥
n−3
Y
i=0
1− 2 n−i
= 1− 2 n
1− 2 n−1
1− 2 n−2
· · · 1−2 4
1−2 3
= n−2
n ·n−3
n−1·n−4 n−2· · ·2
4 ·1
3 = 2
n(n−1).
Análise do algoritmo
SejaCK o corte devolvido porKARGER(G).
C: um corte mínimo de G.
Queremos delimitarinferiormentePr{CK =C}.
Ou seja, delimitarPr{E1∩E2∩ · · · ∩En−2}.
Já sabemos quePr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 . Então
Pr{CK =C} ≥
n−3
Y
i=0
1− 2 n−i
= 1− 2 n
1− 2 n−1
1− 2 n−2
· · · 1−2 4
1−2 3
= n−2
n ·n−3
n−1·n−4 n−2· · ·2
4 ·1
3 = 2
n(n−1).
Análise do algoritmo
SejaCK o corte devolvido porKARGER(G).
C: um corte mínimo de G.
Queremos delimitarinferiormentePr{CK =C}.
Ou seja, delimitarPr{E1∩E2∩ · · · ∩En−2}.
Já sabemos quePr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 . Então
Pr{CK =C} ≥
n−3
Y
i=0
1− 2 n−i
= 1− 2 n
1− 2 n−1
1− 2 n−2
· · · 1−2 4
1−2 3
= n−2
n ·n−3
n−1·n−4 n−2· · ·2
4 ·1 3
= 2
n(n−1).
Análise do algoritmo
SejaCK o corte devolvido porKARGER(G).
C: um corte mínimo de G.
Queremos delimitarinferiormentePr{CK =C}.
Ou seja, delimitarPr{E1∩E2∩ · · · ∩En−2}.
Já sabemos quePr{Ei+1|E1∩E2∩ · · · ∩Ei} ≥1−n−i2 . Então
Pr{CK =C} ≥
n−3
Y
i=0
1− 2 n−i
= 1− 2 n
1− 2 n−1
1− 2 n−2
· · · 1−2 4
1−2 3
= n−2
n ·n−3
n−1·n−4 n−2· · ·2
4 ·1
3 = 2
n(n−1).
Conclusão
LogoPr{CK 6=C} ≤ 1−n(n−1)2 = q(n)
ePr{CK não é um corte mínimo} ≤ q(n).
Se executarmos o algoritmor =cn(n−1)2 lnn vezes, então
Pr{CK∗ não é um corte mínimo} ≤ q(n)r
= 1− 2
n(n−1)
cn(n−1)2 lnn
< 1 e
clnn
= 1 nc. Erra com probabilidade exponencialmente pequena emc. Comor é polinomial emn e em c, o algoritmo é polinomial.
Conclusão
LogoPr{CK 6=C} ≤ 1−n(n−1)2 = q(n) ePr{CK não é um corte mínimo}
≤ q(n).
Se executarmos o algoritmor =cn(n−1)2 lnn vezes, então
Pr{CK∗ não é um corte mínimo} ≤ q(n)r
= 1− 2
n(n−1)
cn(n−1)2 lnn
< 1 e
clnn
= 1 nc. Erra com probabilidade exponencialmente pequena emc. Comor é polinomial emn e em c, o algoritmo é polinomial.
Conclusão
LogoPr{CK 6=C} ≤ 1−n(n−1)2 = q(n) ePr{CK não é um corte mínimo} ≤ q(n).
Se executarmos o algoritmor =cn(n−1)2 lnn vezes, então
Pr{CK∗ não é um corte mínimo} ≤ q(n)r
= 1− 2
n(n−1)
cn(n−1)2 lnn
< 1 e
clnn
= 1 nc. Erra com probabilidade exponencialmente pequena emc. Comor é polinomial emn e em c, o algoritmo é polinomial.
Conclusão
LogoPr{CK 6=C} ≤ 1−n(n−1)2 = q(n) ePr{CK não é um corte mínimo} ≤ q(n).
Se executarmos o algoritmor =cn(n−1)2 lnn vezes, então
Pr{CK∗ não é um corte mínimo} ≤ q(n)r
= 1− 2
n(n−1)
cn(n−1)2 lnn
< 1 e
clnn
= 1 nc. Erra com probabilidade exponencialmente pequena emc. Comor é polinomial emn e em c, o algoritmo é polinomial.
Conclusão
LogoPr{CK 6=C} ≤ 1−n(n−1)2 = q(n) ePr{CK não é um corte mínimo} ≤ q(n).
Se executarmos o algoritmor =cn(n−1)2 lnn vezes, então
Pr{CK∗ não é um corte mínimo} ≤ q(n)r
= 1− 2
n(n−1)
cn(n−1)2 lnn
< 1 e
clnn
= 1 nc.
Erra com probabilidade exponencialmente pequena emc. Comor é polinomial emn e em c, o algoritmo é polinomial.
Conclusão
LogoPr{CK 6=C} ≤ 1−n(n−1)2 = q(n) ePr{CK não é um corte mínimo} ≤ q(n).
Se executarmos o algoritmor =cn(n−1)2 lnn vezes, então
Pr{CK∗ não é um corte mínimo} ≤ q(n)r
= 1− 2
n(n−1)
cn(n−1)2 lnn
< 1 e
clnn
= 1 nc. Erra com probabilidade exponencialmente pequena emc.
Comor é polinomial emn e em c, o algoritmo é polinomial.
Conclusão
LogoPr{CK 6=C} ≤ 1−n(n−1)2 = q(n) ePr{CK não é um corte mínimo} ≤ q(n).
Se executarmos o algoritmor =cn(n−1)2 lnn vezes, então
Pr{CK∗ não é um corte mínimo} ≤ q(n)r
= 1− 2
n(n−1)
cn(n−1)2 lnn
< 1 e
clnn
= 1 nc. Erra com probabilidade exponencialmente pequena emc. Comor é polinomial emn e em c, o algoritmo é polinomial.
Uma pergunta...
Quantosst-cortes mínimos diferentes podem existir em G?
...
s t
Um número exponencial emn...
Quantos cortes mínimos diferentes podem existir? ComoPr{CK =C} ≥ n(n−1)2 =1/ n
2 , há no máximo n
2
cortes mínimos emG. SeG for por exemplo um circuito comn vértices...
Uma pergunta...
Quantosst-cortes mínimos diferentes podem existir em G?
...
s t
Um número exponencial emn...
Quantos cortes mínimos diferentes podem existir? ComoPr{CK =C} ≥ n(n−1)2 =1/ n
2 , há no máximo n
2
cortes mínimos emG. SeG for por exemplo um circuito comn vértices...
Uma pergunta...
Quantosst-cortes mínimos diferentes podem existir em G?
...
s t
Um número exponencial emn...
Quantos cortes mínimos diferentes podem existir?
ComoPr{CK =C} ≥ n(n−1)2 =1/ n 2
, há no máximo n
2
cortes mínimos emG. SeG for por exemplo um circuito comn vértices...
Uma pergunta...
Quantosst-cortes mínimos diferentes podem existir em G?
...
s t
Um número exponencial emn...
Quantos cortes mínimos diferentes podem existir?
ComoPr{CK =C} ≥ n(n−1)2 =1/ n 2
, há no máximo n
2
cortes mínimos em G.
SeG for por exemplo um circuito comn vértices...
Uma pergunta...
Quantosst-cortes mínimos diferentes podem existir em G?
...
s t
Um número exponencial emn...
Quantos cortes mínimos diferentes podem existir?
ComoPr{CK =C} ≥ n(n−1)2 =1/ n 2
, há no máximo n
2
cortes mínimos em G. SeG for por exemplo um circuito com n vértices...
Hashing universal
U: conjunto universo (contém todas as possíveis chaves).
n: um número muito menor que|U|.
H: conjunto de funções de U em{0, . . . ,n−1}.
Se, para cada par de chavesk,` emU, o número de funçõesh emH tais queh(k) =h(`)é no máximo |H|/n, então Hé uma coleção universalde hashing (paraU en).
Teorema: Seja H uma coleção universal de hashing paraU e n, seja S ⊆U tal que|S| ≤n e u∈U. Se h é escolhida aleatoriamente deH eX é o número de elementoss em S tais queh(s) =h(u),
entãoE[X]≤1 seu 6∈S e E[X]≤2 se u ∈S.
Esboço da prova: Seja Xs a variável binária que vale 1 seh(s) =h(u). Note quePr{Xu =1}=1 ePr{Xs =1} ≤1/n ses 6=u.
LogoE[X] =P
s∈SE[Xs] =P
s∈S 1
n =|S|/n≤1 se u6∈S e E[X] =1+P
s∈S\{u}1
n <1+|S|/n≤2 seu ∈S.
Hashing universal
U: conjunto universo (contém todas as possíveis chaves).
n: um número muito menor que|U|.
H: conjunto de funções de U em{0, . . . ,n−1}.
Se, para cada par de chavesk,` emU, o número de funçõesh emH tais queh(k) =h(`)é no máximo |H|/n, então Hé uma coleção universalde hashing (paraU en).
Teorema: Seja H uma coleção universal de hashing paraU e n, seja S ⊆U tal que|S| ≤n e u∈U. Se h é escolhida aleatoriamente deH eX é o número de elementoss em S tais queh(s) =h(u),
entãoE[X]≤1 seu 6∈S e E[X]≤2 se u ∈S.
Esboço da prova: Seja Xs a variável binária que vale 1 seh(s) =h(u). Note quePr{Xu =1}=1 ePr{Xs =1} ≤1/n ses 6=u.
LogoE[X] =P
s∈SE[Xs] =P
s∈S 1
n =|S|/n≤1 se u6∈S e E[X] =1+P
s∈S\{u}1
n <1+|S|/n≤2 seu ∈S.
Hashing universal
U: conjunto universo (contém todas as possíveis chaves).
n: um número muito menor que|U|.
H: conjunto de funções de U em{0, . . . ,n−1}.
Se, para cada par de chavesk,` emU, o número de funçõesh emH tais queh(k) =h(`)é no máximo |H|/n, então Hé uma coleção universalde hashing (paraU en).
Teorema: Seja Huma coleção universal de hashing para U e n, seja S ⊆U tal que|S| ≤n e u∈U. Se h é escolhida aleatoriamente deH eX é o número de elementoss em S tais queh(s) =h(u),
entãoE[X]≤1 seu 6∈S e E[X]≤2 se u ∈S.
Esboço da prova: Seja Xs a variável binária que vale 1 seh(s) =h(u). Note quePr{Xu =1}=1 ePr{Xs =1} ≤1/n ses 6=u.
LogoE[X] =P
s∈SE[Xs] =P
s∈S 1
n =|S|/n≤1 se u6∈S e E[X] =1+P
s∈S\{u}1
n <1+|S|/n≤2 seu ∈S.
Hashing universal
U: conjunto universo (contém todas as possíveis chaves).
n: um número muito menor que|U|.
H: conjunto de funções de U em{0, . . . ,n−1}.
Se, para cada par de chavesk,` emU, o número de funçõesh emH tais queh(k) =h(`)é no máximo |H|/n, então Hé uma coleção universalde hashing (paraU en).
Teorema: Seja Huma coleção universal de hashing para U e n, seja S ⊆U tal que|S| ≤n e u∈U. Se h é escolhida aleatoriamente deH eX é o número de elementoss em S tais queh(s) =h(u),
entãoE[X]≤1 seu 6∈S e E[X]≤2 se u ∈S.
Esboço da prova: Seja Xs a variável binária que vale 1 seh(s) =h(u).
Note quePr{Xu =1}=1 ePr{Xs =1} ≤1/n ses 6=u. LogoE[X] =P
s∈SE[Xs] =P
s∈S 1
n =|S|/n≤1 se u6∈S e E[X] =1+P
s∈S\{u}1
n <1+|S|/n≤2 seu ∈S.
Hashing universal
U: conjunto universo (contém todas as possíveis chaves).
n: um número muito menor que|U|.
H: conjunto de funções de U em{0, . . . ,n−1}.
Se, para cada par de chavesk,` emU, o número de funçõesh emH tais queh(k) =h(`)é no máximo |H|/n, então Hé uma coleção universalde hashing (paraU en).
Teorema: Seja Huma coleção universal de hashing para U e n, seja S ⊆U tal que|S| ≤n e u∈U. Se h é escolhida aleatoriamente deH eX é o número de elementoss em S tais queh(s) =h(u),
entãoE[X]≤1 seu 6∈S e E[X]≤2 se u ∈S.
Esboço da prova: Seja Xs a variável binária que vale 1 seh(s) =h(u).
Note quePr{Xu =1}=1 ePr{Xs =1} ≤1/n ses 6=u.
LogoE[X] =P
s∈SE[Xs] =P
s∈S 1
n =|S|/n≤1 se u6∈S e E[X] =1+P
s∈S\{u}1
n <1+|S|/n≤2 seu ∈S.
Hashing universal
U: conjunto universo (contém todas as possíveis chaves).
n: um número muito menor que|U|.
H: conjunto de funções de U em{0, . . . ,n−1}.
Se, para cada par de chavesk,` emU, o número de funçõesh emH tais queh(k) =h(`)é no máximo |H|/n, então Hé uma coleção universalde hashing (paraU en).
Teorema: Seja Huma coleção universal de hashing para U e n, seja S ⊆U tal que|S| ≤n e u∈U. Se h é escolhida aleatoriamente deH eX é o número de elementoss em S tais queh(s) =h(u),
entãoE[X]≤1 seu 6∈S e E[X]≤2 se u ∈S.
Esboço da prova: Seja Xs a variável binária que vale 1 seh(s) =h(u).
Note quePr{Xu =1}=1 ePr{Xs =1} ≤1/n ses 6=u.
LogoE[X] =P
s∈SE[Xs] =P
s∈S 1
n =|S|/n≤1 se u6∈S e
E[X] =1+P
s∈S\{u}1
n <1+|S|/n≤2 seu ∈S.
Hashing universal
U: conjunto universo (contém todas as possíveis chaves).
n: um número muito menor que|U|.
H: conjunto de funções de U em{0, . . . ,n−1}.
Se, para cada par de chavesk,` emU, o número de funçõesh emH tais queh(k) =h(`)é no máximo |H|/n, então Hé uma coleção universalde hashing (paraU en).
Teorema: Seja Huma coleção universal de hashing para U e n, seja S ⊆U tal que|S| ≤n e u∈U. Se h é escolhida aleatoriamente deH eX é o número de elementoss em S tais queh(s) =h(u),
entãoE[X]≤1 seu 6∈S e E[X]≤2 se u ∈S.
Esboço da prova: Seja Xs a variável binária que vale 1 seh(s) =h(u).
Note quePr{Xu =1}=1 ePr{Xs =1} ≤1/n ses 6=u.
LogoE[X] =P
s∈SE[Xs] =P
s∈S 1
n =|S|/n≤1 se u6∈S e E[X] =1+P
s∈S\{u} 1
n <1+|S|/n ≤2 seu ∈S.
Exemplo de coleção universal de hashing
Sejap um primo tal queU ⊆ {0, . . . ,p−1}.
ZZp: conjunto {0, . . . ,p−1}.
ZZ∗p: conjunto {1, . . . ,p−1}.
Para todoaem ZZ∗p e b emZZp, seja
ha,b(k) = ((ak+b)modp)modn, para todok em U.
A coleçãoH = {ha,b:a∈ZZ∗p e b ∈ZZp}é universal. Esboço da prova no próximo slide.
(KT Sec 13.6para hashing)
Exemplo de coleção universal de hashing
Sejap um primo tal queU ⊆ {0, . . . ,p−1}.
ZZp: conjunto {0, . . . ,p−1}.
ZZ∗p: conjunto {1, . . . ,p−1}.
Para todoaem ZZ∗p eb emZZp, seja
ha,b(k) = ((ak+b)modp)modn, para todok em U.
A coleçãoH = {ha,b:a∈ZZ∗p e b ∈ZZp}é universal. Esboço da prova no próximo slide.
(KT Sec 13.6para hashing)
Exemplo de coleção universal de hashing
Sejap um primo tal queU ⊆ {0, . . . ,p−1}.
ZZp: conjunto {0, . . . ,p−1}.
ZZ∗p: conjunto {1, . . . ,p−1}.
Para todoaem ZZ∗p eb emZZp, seja
ha,b(k) = ((ak+b)modp)modn, para todok em U.
A coleçãoH = {ha,b:a∈ZZ∗p e b ∈ZZp}é universal.
Esboço da prova no próximo slide.
(KT Sec 13.6para hashing)
Exemplo de coleção universal de hashing
Sejap um primo tal queU ⊆ {0, . . . ,p−1}.
ZZp: conjunto {0, . . . ,p−1}.
ZZ∗p: conjunto {1, . . . ,p−1}.
Para todoaem ZZ∗p eb emZZp, seja
ha,b(k) = ((ak+b)modp)modn, para todok em U.
A coleçãoH = {ha,b:a∈ZZ∗p e b ∈ZZp}é universal.
Esboço da prova no próximo slide.
(KT Sec 13.6para hashing)
Exemplo de coleção universal de hashing
Sejap um primo tal queU ⊆ {0, . . . ,p−1}.
Para todoaem ZZ∗p eb emZZp, seja
ha,b(k) = ((ak+b)modp)modn, para todok em U.
A coleçãoH = {ha,b:a∈ZZ∗p e b ∈ZZp}é universal.
Esboço da prova: Sejamk,`∈U tais que ak+b =a`+bmodp.
Entãoa(k−`) =0 modp, o que implica quea=0 ou k =`.
Logo, comoa6=0, sek 6=`, então r =ak+b 6=a`+b =s. Ademais, para cada par(a,b) está associado um par distinto (r,s), comr 6=s, já que a= (r−s)(k−`)−1modp e b=r−akmodp. Para cadar, temos p−1 valores possíveis para s emZZp.
Destes, não mais quep/n são iguais armodn.
Ou seja,h(k) =h(`) para no máximo|H|/n das funçõesh deH.
Exemplo de coleção universal de hashing
Sejap um primo tal queU ⊆ {0, . . . ,p−1}.
Para todoaem ZZ∗p eb emZZp, seja
ha,b(k) = ((ak+b)modp)modn, para todok em U.
A coleçãoH = {ha,b:a∈ZZ∗p e b ∈ZZp}é universal.
Esboço da prova: Sejamk,`∈U tais que ak+b =a`+bmodp.
Entãoa(k−`) =0 modp, o que implica quea=0 ou k =`.
Logo, comoa6=0, sek 6=`, então r =ak+b 6=a`+b=s.
Ademais, para cada par(a,b) está associado um par distinto (r,s), comr 6=s, já que a= (r−s)(k−`)−1modp e b=r−akmodp. Para cadar, temos p−1 valores possíveis para s emZZp.
Destes, não mais quep/n são iguais armodn.
Ou seja,h(k) =h(`) para no máximo|H|/n das funçõesh deH.
Exemplo de coleção universal de hashing
Sejap um primo tal queU ⊆ {0, . . . ,p−1}.
Para todoaem ZZ∗p eb emZZp, seja
ha,b(k) = ((ak+b)modp)modn, para todok em U.
A coleçãoH = {ha,b:a∈ZZ∗p e b ∈ZZp}é universal.
Esboço da prova: Sejamk,`∈U tais que ak+b =a`+bmodp.
Entãoa(k−`) =0 modp, o que implica quea=0 ou k =`.
Logo, comoa6=0, sek 6=`, então r =ak+b 6=a`+b=s.
Ademais, para cada par(a,b) está associado um par distinto (r,s), comr 6=s, já que a= (r−s)(k−`)−1modp eb =r−akmodp.
Para cadar, temos p−1 valores possíveis para s emZZp. Destes, não mais quep/n são iguais armodn.
Ou seja,h(k) =h(`) para no máximo|H|/n das funçõesh deH.
Exemplo de coleção universal de hashing
Sejap um primo tal queU ⊆ {0, . . . ,p−1}.
Para todoaem ZZ∗p eb emZZp, seja
ha,b(k) = ((ak+b)modp)modn, para todok em U.
A coleçãoH = {ha,b:a∈ZZ∗p e b ∈ZZp}é universal.
Esboço da prova: Sejamk,`∈U tais que ak+b =a`+bmodp.
Entãoa(k−`) =0 modp, o que implica quea=0 ou k =`.
Logo, comoa6=0, sek 6=`, então r =ak+b 6=a`+b=s.
Ademais, para cada par(a,b) está associado um par distinto (r,s), comr 6=s, já que a= (r−s)(k−`)−1modp eb =r−akmodp.
Para cadar, temos p−1 valores possíveis para s emZZp. Destes, não mais quep/n são iguais armodn.
Ou seja,h(k) =h(`) para no máximo|H|/n das funçõesh deH.