• Nenhum resultado encontrado

Geometria Computacional

N/A
N/A
Protected

Academic year: 2022

Share "Geometria Computacional"

Copied!
53
0
0

Texto

(1)

Geometria Computacional

Aula 14

Par de Pontos Mais Próximos

(2)

Algoritmo de linha de varredura

Linha varre o plano da esquerda para a direita.

Ordene os pontos porx-coordenada.

Guardamos emδ a menor distância vista até o momento.

Manteremos numa ABBB todos os pontos à esquerda da linha, que estejam à distância menor queδ da linha.

Inicializações:

δ começa com a distância dos dois pontos mais à esquerda;

ABBB começa vazia.

Que eventos podem causar alteração noδ ou na ABBB?

(3)

Possíveis eventos

Dois tipos de eventos:

I Evento de entrada:

a linha atinge um ponto p da coleção.

I Evento de saída:

um ponto p que está na ABBB fica à distânciaδ da linha.

Evento de entrada:

p é inserido na ABBB e, se necessário, atualiza-se δ. Evento de saída:

p é removido da ABBB.

Como organizar a fila dos eventos?

(4)

Possíveis eventos

Dois tipos de eventos:

I Evento de entrada:

a linha atinge um ponto p da coleção.

I Evento de saída:

um ponto p que está na ABBB fica à distânciaδ da linha.

Evento de entrada:

p é inserido na ABBB e, se necessário, atualiza-se δ.

Evento de saída:

p é removido da ABBB.

Como organizar a fila dos eventos?

(5)

Possíveis eventos

Dois tipos de eventos:

I Evento de entrada:

a linha atinge um ponto p da coleção.

I Evento de saída:

um ponto p que está na ABBB fica à distânciaδ da linha.

Evento de entrada:

p é inserido na ABBB e, se necessário, atualiza-se δ.

Evento de saída:

p é removido da ABBB.

Como organizar a fila dos eventos?

(6)

Possíveis eventos

Dois tipos de eventos:

I Evento de entrada:

a linha atinge um ponto p da coleção.

I Evento de saída:

um ponto p que está na ABBB fica à distânciaδ da linha.

Evento de entrada:

p é inserido na ABBB e, se necessário, atualiza-se δ.

Evento de saída:

p é removido da ABBB.

Como organizar a fila dos eventos?

(7)

Fila dos eventos

Ordenamos os pontos da coleção pelax-coordenada.

Manteremosdois apontadores para este vetor ordenado: I i: próximo ponto a entrar;

I j: próximo ponto a sair.

No início de cada iteração, avançamos a linha para o pontoi: removemos da ABBB eventuais pontos que

estejam à distância ≥δ da linha, incluímos i. x←P[i].x

enquantoj ≤i e x−P[j].x ≥δ faça remova o pontoj da ABBB

j ←j+1

insiraP[i]na ABBB i ←i+1

(8)

Fila dos eventos

Ordenamos os pontos da coleção pelax-coordenada.

Manteremosdois apontadorespara este vetor ordenado:

I i: próximo ponto a entrar;

I j: próximo ponto a sair.

No início de cada iteração, avançamos a linha para o pontoi: removemos da ABBB eventuais pontos que

estejam à distância ≥δ da linha, incluímos i. x←P[i].x

enquantoj ≤i e x−P[j].x ≥δ faça remova o pontoj da ABBB

j ←j+1

insiraP[i]na ABBB i ←i+1

(9)

Fila dos eventos

Ordenamos os pontos da coleção pelax-coordenada.

Manteremosdois apontadorespara este vetor ordenado:

I i: próximo ponto a entrar;

I j: próximo ponto a sair.

No início de cada iteração, avançamos a linha para o pontoi:

removemos da ABBB eventuais pontos que estejam à distância ≥δ da linha, incluímos i.

x←P[i].x

enquantoj ≤i e x−P[j].x ≥δ faça remova o pontoj da ABBB

j ←j+1

insiraP[i]na ABBB i ←i +1

(10)

Como atualizar o valor de δ

Fora isso, ao inserirmos o pontoi,

se necessário, devemos atualizamos o valor deδ.

Como encontrar os pontos próximos do pontoi na ABBB? Em que ordem guardamos os pontos na ABBB?

Ordenados pela suay-coordenada. Como isso nos ajuda?

Com que pontos queremos calcular a distância comi? Compredecessores esucessores

cujay-coordenada difira de menos queδ.

(11)

Como atualizar o valor de δ

Fora isso, ao inserirmos o pontoi,

se necessário, devemos atualizamos o valor deδ.

Como encontrar os pontos próximos do pontoi na ABBB?

Em que ordem guardamos os pontos na ABBB? Ordenados pela suay-coordenada.

Como isso nos ajuda?

Com que pontos queremos calcular a distância comi? Compredecessores esucessores

cujay-coordenada difira de menos queδ.

(12)

Como atualizar o valor de δ

Fora isso, ao inserirmos o pontoi,

se necessário, devemos atualizamos o valor deδ.

Como encontrar os pontos próximos do pontoi na ABBB?

Em que ordem guardamos os pontos na ABBB?

Ordenados pela suay-coordenada. Como isso nos ajuda?

Com que pontos queremos calcular a distância comi? Compredecessores esucessores

cujay-coordenada difira de menos queδ.

(13)

Como atualizar o valor de δ

Fora isso, ao inserirmos o pontoi,

se necessário, devemos atualizamos o valor deδ.

Como encontrar os pontos próximos do pontoi na ABBB?

Em que ordem guardamos os pontos na ABBB?

Ordenados pela suay-coordenada.

Como isso nos ajuda?

Com que pontos queremos calcular a distância comi? Compredecessores esucessores

cujay-coordenada difira de menos queδ.

(14)

Como atualizar o valor de δ

Fora isso, ao inserirmos o pontoi,

se necessário, devemos atualizamos o valor deδ.

Como encontrar os pontos próximos do pontoi na ABBB?

Em que ordem guardamos os pontos na ABBB?

Ordenados pela suay-coordenada.

Como isso nos ajuda?

Com que pontos queremos calcular a distância comi?

Compredecessores esucessores

cujay-coordenada difira de menos queδ.

(15)

Como atualizar o valor de δ

Fora isso, ao inserirmos o pontoi,

se necessário, devemos atualizamos o valor deδ.

Como encontrar os pontos próximos do pontoi na ABBB?

Em que ordem guardamos os pontos na ABBB?

Ordenados pela suay-coordenada.

Como isso nos ajuda?

Com que pontos queremos calcular a distância comi? Compredecessores esucessores

cujay-coordenada difira de menos queδ.

(16)

Algoritmo de linha de varredura

Distância-SweepLine(P,n)

1 MergeSort(P,n) pontos ordenados pelax-coordenada 2 δ ←dist(P[1],P[2])

3 CrieABBB(T) Insira(T,1) Insira(T,2) 4 j ←1

5 para i ←3até n faça 6 x←P[i].x

7 enquantoj <i e x−P[j].x ≥δ faça 8 Remova(T,j)

9 j ←j +1

10 Insira(T,i)

11 Atualiza(P,T,i,δ) 12 devolva δ

Consumo de tempo: O(nlgn) se o Atualiza(P,T,i,δ) for O(lgn).

(17)

Algoritmo de linha de varredura

Distância-SweepLine(P,n)

1 MergeSort(P,n) pontos ordenados pelax-coordenada 2 δ ←dist(P[1],P[2])

3 CrieABBB(T) Insira(T,1) Insira(T,2) 4 j ←1

5 para i ←3até n faça 6 x←P[i].x

7 enquantoj <i e x−P[j].x ≥δ faça 8 Remova(T,j)

9 j ←j +1

10 Insira(T,i)

11 Atualiza(P,T,i,δ) 12 devolva δ

Consumo de tempo: O(nlgn) se o Atualiza(P,T,i,δ) for O(lgn).

(18)

Algoritmo de linha de varredura

Distância-SweepLine(P,n)

1 MergeSort(P,n) pontos ordenados pelax-coordenada 2 δ ←dist(P[1],P[2])

3 CrieABBB(T) Insira(T,1) Insira(T,2) 4 j ←1

5 para i ←3até n faça 6 x←P[i].x

7 enquantoj <i e x−P[j].x ≥δ faça 8 Remova(T,j)

9 j ←j +1

10 Insira(T,i)

11 Atualiza(P,T,i,δ) 12 devolva δ

Consumo de tempo: O(nlgn) se o Atualiza(P,T,i,δ) for O(lgn).

(19)

Atualização do δ

Atualiza(P,T,i,δ) 1 j ←Predecessor(T,i)

2 enquanto j 6=NILe P[i].y−P[j].y < δfaça 3 d ←dist(P[i],P[j])

4 sed < δentãoδ ←d

5 j ←Predecessor(T,j)

6 j ←Sucessor(T,i)

7 enquanto j 6=NILe P[j].y−P[i].y < δfaça 8 d ←dist(P[i],P[j])

9 sed < δentãoδ ←d

10 j ←Sucessor(T,j)

Qual é o consumo de tempo? O(lgn)

pois há no máximo 4 predecessores e 4 sucessores a serem testados.

(20)

Atualização do δ

Atualiza(P,T,i,δ) 1 j ←Predecessor(T,i)

2 enquanto j 6=NILe P[i].y−P[j].y < δfaça 3 d ←dist(P[i],P[j])

4 sed < δentãoδ ←d

5 j ←Predecessor(T,j) 6 j ←Sucessor(T,i)

7 enquanto j 6=NILe P[j].y−P[i].y < δfaça 8 d ←dist(P[i],P[j])

9 sed < δentãoδ ←d

10 j ←Sucessor(T,j)

Qual é o consumo de tempo? O(lgn)

pois há no máximo 4 predecessores e 4 sucessores a serem testados.

(21)

Atualização do δ

Atualiza(P,T,i,δ) 1 j ←Predecessor(T,i)

2 enquanto j 6=NILe P[i].y−P[j].y < δfaça 3 d ←dist(P[i],P[j])

4 sed < δentãoδ ←d

5 j ←Predecessor(T,j) 6 j ←Sucessor(T,i)

7 enquanto j 6=NILe P[j].y−P[i].y < δfaça 8 d ←dist(P[i],P[j])

9 sed < δentãoδ ←d

10 j ←Sucessor(T,j) Qual é o consumo de tempo?

O(lgn)

pois há no máximo 4 predecessores e 4 sucessores a serem testados.

(22)

Atualização do δ

Atualiza(P,T,i,δ) 1 j ←Predecessor(T,i)

2 enquanto j 6=NILe P[i].y−P[j].y < δfaça 3 d ←dist(P[i],P[j])

4 sed < δentãoδ ←d

5 j ←Predecessor(T,j) 6 j ←Sucessor(T,i)

7 enquanto j 6=NILe P[j].y−P[i].y < δfaça 8 d ←dist(P[i],P[j])

9 sed < δentãoδ ←d

10 j ←Sucessor(T,j)

Qual é o consumo de tempo? O(lgn)

pois há no máximo 4 predecessores e 4 sucessores a serem testados.

(23)

Geometria Computacional

Aula 14

Par de Pontos Mais Próximos Sec 13.7 do livro de Kleinberg e Tardos

(24)

Par de pontos mais próximos

Problema: Dados n pontos no plano,

determinar dois deles que estão à distância mínima.

Esta aula: algoritmo aleatorizado cujo

Esta aula: consumo esperado de tempo é O(n). Hipótese simplificadora:

todos os pontos estão no quadrado[0,1]×[0,1].

(25)

Par de pontos mais próximos

Problema: Dados n pontos no plano,

determinar dois deles que estão à distância mínima.

Esta aula: algoritmo aleatorizado cujo

Esta aula: consumo esperado de tempo éO(n).

Hipótese simplificadora:

todos os pontos estão no quadrado[0,1]×[0,1].

(26)

Par de pontos mais próximos

Problema: Dados n pontos no plano,

determinar dois deles que estão à distância mínima.

Esta aula: algoritmo aleatorizado cujo

Esta aula: consumo esperado de tempo éO(n).

Hipótese simplificadora:

todos os pontos estão no quadrado[0,1]×[0,1].

(27)

Esboço do algoritmo

Problema: Dados n pontos no quadrado[0,1]×[0,1], determinar dois deles que estão à distância mínima.

Dividimos o quadrado em quadradinhos δ2 ×δ2: Sejaδ =dist(p1,p2) e Qi,k = 2,(i+1)δ2

× 2 ,(k+1)δ2 , parai,k =0, . . . ,N, onde N=d2/δe.

Paraj ←3 até n faça:

Seja S o conjunto de pares(i,k) tais que existe um pontop` com ` <j no quadradoQi,k. Calcule(r,s) tal que pj está emQr,s.

Para cada(i,k) emS tal que|r−i| ≤2 e|s−k| ≤2 calculedist(pj,p`) onde` <j e p` ∈Qi,k

e atualize δ quando necessário. Devolvaδ.

(28)

Esboço do algoritmo

Problema: Dados n pontos no quadrado[0,1]×[0,1], determinar dois deles que estão à distância mínima.

Dividimos o quadrado em quadradinhos δ2 ×δ2: Sejaδ =dist(p1,p2) e Qi,k = i2δ,(i+1)δ2

× 2 ,(k+1)δ2 , parai,k =0, . . . ,N, onde N=d2/δe.

Paraj ←3 até n faça:

Seja S o conjunto de pares(i,k) tais que existe um pontop` com ` <j no quadradoQi,k. Calcule(r,s) tal que pj está emQr,s.

Para cada(i,k) emS tal que|r−i| ≤2 e|s−k| ≤2 calculedist(pj,p`) onde` <j e p` ∈Qi,k

e atualize δ quando necessário. Devolvaδ.

(29)

Esboço do algoritmo

Problema: Dados n pontos no quadrado[0,1]×[0,1], determinar dois deles que estão à distância mínima.

Dividimos o quadrado em quadradinhos δ2 ×δ2: Sejaδ =dist(p1,p2) e Qi,k = i2δ,(i+1)δ2

× 2 ,(k+1)δ2 , parai,k =0, . . . ,N, onde N=d2/δe.

Paraj ←3 até n faça:

Seja S o conjunto de pares(i,k) tais que existe um pontop` com ` <j no quadradoQi,k.

Calcule(r,s) tal que pj está emQr,s.

Para cada(i,k) emS tal que|r−i| ≤2 e|s−k| ≤2 calculedist(pj,p`) onde` <j e p` ∈Qi,k

e atualize δ quando necessário. Devolvaδ.

(30)

Esboço do algoritmo

Problema: Dados n pontos no quadrado[0,1]×[0,1], determinar dois deles que estão à distância mínima.

Dividimos o quadrado em quadradinhos δ2 ×δ2: Sejaδ =dist(p1,p2) e Qi,k = i2δ,(i+1)δ2

× 2 ,(k+1)δ2 , parai,k =0, . . . ,N, onde N=d2/δe.

Paraj ←3 até n faça:

Seja S o conjunto de pares(i,k) tais que existe um pontop` com ` <j no quadradoQi,k. Calcule(r,s) tal quepj está emQr,s.

Para cada(i,k) emS tal que|r−i| ≤2 e|s−k| ≤2 calculedist(pj,p`) onde` <j e p` ∈Qi,k

e atualize δ quando necessário.

Devolvaδ.

(31)

Esboço do algoritmo

Problema: Dados n pontos no quadrado[0,1]×[0,1], determinar dois deles que estão à distância mínima.

Dividimos o quadrado em quadradinhos δ2 ×δ2: Sejaδ =dist(p1,p2) e Qi,k = i2δ,(i+1)δ2

× 2 ,(k+1)δ2 , parai,k =0, . . . ,N, onde N=d2/δe.

Paraj ←3 até n faça:

Seja S o conjunto de pares(i,k) tais que existe um pontop` com ` <j no quadradoQi,k. Calcule(r,s) tal quepj está emQr,s.

Para cada(i,k) emS tal que|r−i| ≤2 e|s−k| ≤2 calculedist(pj,p`) onde` <j e p` ∈Qi,k

e atualize δ quando necessário.

Devolvaδ.

(32)

Consumo de tempo estimado

Como fazer para o consumo esperado de tempo serO(n)?

Que ED usar para armazenarS? Que operações sofreS?

Por iteração, uma inserção e algumas consultas. Em algumas iterações,S muda totalmente... Seria bom se...

inserções e buscas consumissem tempo (esperado)O(1). Que ED atinge isso? Hashing!

(33)

Consumo de tempo estimado

Como fazer para o consumo esperado de tempo serO(n)?

Que ED usar para armazenarS?

Que operações sofreS?

Por iteração, uma inserção e algumas consultas. Em algumas iterações,S muda totalmente... Seria bom se...

inserções e buscas consumissem tempo (esperado)O(1). Que ED atinge isso? Hashing!

(34)

Consumo de tempo estimado

Como fazer para o consumo esperado de tempo serO(n)?

Que ED usar para armazenarS? Que operações sofreS?

Por iteração, uma inserção e algumas consultas. Em algumas iterações,S muda totalmente... Seria bom se...

inserções e buscas consumissem tempo (esperado)O(1). Que ED atinge isso? Hashing!

(35)

Consumo de tempo estimado

Como fazer para o consumo esperado de tempo serO(n)?

Que ED usar para armazenarS? Que operações sofreS?

Por iteração, uma inserção e algumas consultas.

Em algumas iterações,S muda totalmente...

Seria bom se...

inserções e buscas consumissem tempo (esperado)O(1). Que ED atinge isso? Hashing!

(36)

Consumo de tempo estimado

Como fazer para o consumo esperado de tempo serO(n)?

Que ED usar para armazenarS? Que operações sofreS?

Por iteração, uma inserção e algumas consultas.

Em algumas iterações,S muda totalmente...

Seria bom se...

inserções e buscas consumissem tempo (esperado)O(1).

Que ED atinge isso? Hashing!

(37)

Consumo de tempo estimado

Como fazer para o consumo esperado de tempo serO(n)?

Que ED usar para armazenarS? Que operações sofreS?

Por iteração, uma inserção e algumas consultas.

Em algumas iterações,S muda totalmente...

Seria bom se...

inserções e buscas consumissem tempo (esperado)O(1).

Que ED atinge isso?

Que ED atinge isso? Hashing!

(38)

Consumo de tempo estimado

Como fazer para o consumo esperado de tempo serO(n)?

Que ED usar para armazenarS? Que operações sofreS?

Por iteração, uma inserção e algumas consultas.

Em algumas iterações,S muda totalmente...

Seria bom se...

inserções e buscas consumissem tempo (esperado)O(1).

Que ED atinge isso? Hashing!

(39)

Primeira tentativa

Distância(P,n)

1 δ ←dist(P[1],P[2])

2 seja(i`,k`)tal que P[`]∈Qi`,k` para `=1,2

3 Crie-Hashing(H) Insira(H,i1,k1,P[1]) Insira(H,i2,k2,P[2])

4 para j ←3 até n faça

5 seja(r,s) tal queP[j]∈Qr,s 6 parat,u ← −2até 2faça 7 se Pertence(H,r+t,s+u)

8 entãosejaP[`]∈Qr+t,s+u com ` <j

9 se δ>dist(P[j],P[`]) entãoδ←dist(P[j],P[`]) 10 seδ foi alterado nessa iteração

11 entãoReconstrua(H,P,j) 12 senão Insira(H,r,s,P[j]) 13 devolva δ

Consumo de tempo esperado: O(n)exceto pela linha 11.

(40)

Primeira tentativa

Distância(P,n)

1 δ ←dist(P[1],P[2])

2 seja(i`,k`)tal que P[`]∈Qi`,k` para `=1,2

3 Crie-Hashing(H) Insira(H,i1,k1,P[1]) Insira(H,i2,k2,P[2]) 4 para j ←3 até n faça

5 seja(r,s) tal queP[j]∈Qr,s 6 parat ← −2até 2faça 7 para u← −2até 2 faça 8 se Pertence(H,r+t,s +u)

4 para j ←3 até n faça

5 seja(r,s) tal queP[j]∈Qr,s

6 parat,u ← −2até 2faça 7 se Pertence(H,r+t,s+u)

8 entãosejaP[`]∈Qr+t,s+u com ` <j

9 se δ>dist(P[j],P[`]) entãoδ←dist(P[j],P[`]) 10 seδ foi alterado nessa iteração

11 entãoReconstrua(H,P,j) 12 senão Insira(H,r,s,P[j]) 13 devolva δ

Consumo de tempo esperado: O(n)exceto pela linha 11.

(41)

Primeira tentativa

Distância(P,n)

1 δ ←dist(P[1],P[2])

2 seja(i`,k`)tal que P[`]∈Qi`,k` para `=1,2

3 Crie-Hashing(H) Insira(H,i1,k1,P[1]) Insira(H,i2,k2,P[2]) 4 para j ←3 até n faça

5 seja(r,s) tal queP[j]∈Qr,s 6 parat,u ← −2até 2faça 7 se Pertence(H,r+t,s+u)

8 entãosejaP[`]∈Qr+t,s+u com ` <j

9 se δ>dist(P[j],P[`]) entãoδ←dist(P[j],P[`]) 10 seδ foi alterado nessa iteração

11 entãoReconstrua(H,P,j) 12 senão Insira(H,r,s,P[j]) 13 devolva δ

Consumo de tempo esperado: O(n)exceto pela linha 11.

(42)

Primeira tentativa

Distância(P,n)

1 δ ←dist(P[1],P[2])

2 seja(i`,k`)tal que P[`]∈Qi`,k` para `=1,2

3 Crie-Hashing(H) Insira(H,i1,k1,P[1]) Insira(H,i2,k2,P[2]) 4 para j ←3 até n faça

5 seja(r,s) tal queP[j]∈Qr,s 6 parat,u ← −2até 2faça 7 se Pertence(H,r+t,s+u)

8 entãosejaP[`]∈Qr+t,s+u com ` <j

9 se δ>dist(P[j],P[`]) entãoδ←dist(P[j],P[`])

10 seδ foi alterado nessa iteração 11 entãoReconstrua(H,P,j) 12 senão Insira(H,r,s,P[j]) 13 devolva δ

Consumo de tempo esperado: O(n)exceto pela linha 11.

(43)

Primeira tentativa

Distância(P,n)

1 δ ←dist(P[1],P[2])

2 seja(i`,k`)tal que P[`]∈Qi`,k` para `=1,2

3 Crie-Hashing(H) Insira(H,i1,k1,P[1]) Insira(H,i2,k2,P[2]) 4 para j ←3 até n faça

5 seja(r,s) tal queP[j]∈Qr,s 6 parat,u ← −2até 2faça 7 se Pertence(H,r+t,s+u)

8 entãosejaP[`]∈Qr+t,s+u com ` <j

9 se δ>dist(P[j],P[`]) entãoδ←dist(P[j],P[`]) 10 seδ foi alterado nessa iteração

11 entãoReconstrua(H,P,j) 12 senãoInsira(H,r,s,P[j]) 13 devolva δ

Consumo de tempo esperado: O(n)exceto pela linha 11.

(44)

Primeira tentativa

Distância(P,n)

1 δ ←dist(P[1],P[2])

2 seja(i`,k`)tal que P[`]∈Qi`,k` para `=1,2

3 Crie-Hashing(H) Insira(H,i1,k1,P[1]) Insira(H,i2,k2,P[2]) 4 para j ←3 até n faça

5 seja(r,s) tal queP[j]∈Qr,s 6 parat,u ← −2até 2faça 7 se Pertence(H,r+t,s+u)

8 entãosejaP[`]∈Qr+t,s+u com ` <j

9 se δ>dist(P[j],P[`]) entãoδ←dist(P[j],P[`]) 10 seδ foi alterado nessa iteração

11 entãoReconstrua(H,P,j) 12 senãoInsira(H,r,s,P[j]) 13 devolva δ

Consumo de tempo esperado: O(n)exceto pela linha 11.

(45)

Versão final

Distância(P,n)

1 Embaralhe(P,n) permutação aleatória dos pontos dados

2 δ ←dist(P[1],P[2])

3 seja(i`,k`)tal que P[`]∈Qi`,k` para `=1,2

4 Crie-Hashing(H) Insira(H,i1,k1,P[1]) Insira(H,i2,k2,P[2]) 5 para j ←3 até n faça

6 seja(r,s) tal queP[j]∈Qr,s

7 parat,u ← −1até 1faça 8 se Pertence(H,r+t,s+u)

9 entãosejaP[`]∈Qr+t,s+u com ` <j

10 seδ <dist(P[j],P[`]) entãoδ←dist(P[j],P[`]) 11 seδ foi alterado nessa iteração

12 entãoReconstrua(H,p,j) 13 senãoInsira(H,r,s,P[j]) 14 devolva δ

Qual é o consumo de tempo esperado?

(46)

Versão final

Distância(P,n)

1 Embaralhe(P,n) permutação aleatória dos pontos dados

2 δ ←dist(P[1],P[2])

3 seja(i`,k`)tal que P[`]∈Qi`,k` para `=1,2

4 Crie-Hashing(H) Insira(H,i1,k1,P[1]) Insira(H,i2,k2,P[2]) 5 para j ←3 até n faça

6 seja(r,s) tal queP[j]∈Qr,s

7 parat,u ← −1até 1faça 8 se Pertence(H,r+t,s+u)

9 entãosejaP[`]∈Qr+t,s+u com ` <j

10 seδ <dist(P[j],P[`]) entãoδ←dist(P[j],P[`]) 11 seδ foi alterado nessa iteração

12 entãoReconstrua(H,p,j) 13 senãoInsira(H,r,s,P[j]) 14 devolva δ

Qual é o consumo de tempo esperado?

(47)

Consumo de tempo

SejaX o número de inserções em H.

O consumo de tempo é proporcional aE[X].

SejaXj a variável binária que vale 1 sse SejaXj a linha 12 foi executada na iteraçãoj.

X =

n

X

j=1

(1+ (j−1)Xj) ≤ n+

n

X

j=1

jXj

Mas então

E[X] ≤ n+

n

X

j=1

jE[Xj] = n+

n

X

j=1

j Pr{Xj =1}. Note quePr{Xj =1} ≤2/j, logo E[X]≤n+2n=3n.

(48)

Consumo de tempo

SejaX o número de inserções em H.

O consumo de tempo é proporcional aE[X].

SejaXj a variável binária que vale 1 sse SejaXj a linha 12 foi executada na iteraçãoj.

X =

n

X

j=1

(1+ (j−1)Xj) ≤ n+

n

X

j=1

jXj

Mas então

E[X] ≤ n+

n

X

j=1

jE[Xj] = n+

n

X

j=1

j Pr{Xj =1}. Note quePr{Xj =1} ≤2/j, logo E[X]≤n+2n=3n.

(49)

Consumo de tempo

SejaX o número de inserções em H.

O consumo de tempo é proporcional aE[X].

SejaXj a variável binária que vale 1 sse SejaXj a linha 12 foi executada na iteraçãoj.

X =

n

X

j=1

(1+ (j−1)Xj) ≤ n+

n

X

j=1

jXj

Mas então

E[X] ≤ n+

n

X

j=1

jE[Xj] = n+

n

X

j=1

j Pr{Xj =1}.

Note quePr{Xj =1} ≤2/j, logo E[X]≤n+2n=3n.

(50)

Consumo de tempo

SejaX o número de inserções em H.

O consumo de tempo é proporcional aE[X].

SejaXj a variável binária que vale 1 sse SejaXj a linha 12 foi executada na iteraçãoj.

X =

n

X

j=1

(1+ (j−1)Xj) ≤ n+

n

X

j=1

jXj

Mas então

E[X] ≤ n+

n

X

j=1

jE[Xj] = n+

n

X

j=1

j Pr{Xj =1}.

Note quePr{Xj =1} ≤2/j, logo E[X]≤n+2n=3n.

(51)

Variância

Em posição geral, não há

dois pares distintos de pontos da coleção a uma mesma distância.

Neste caso,Pr{Xj =1}=2/j e E[X] =3n.

Var(X) = E[(X−3n)2]

= E[X2−3nX +9n2]

= E[X2]−3nE[X] +9n2

= E[X2].

Lembre-se que X =

n

X

j=1

(1+ (j −1)Xj) ≤ n+

n

X

j=1

jXj.

LogoE[X2] =E[(n+Pn

j=1jXj)2].

(52)

Variância

E[X2] ≤ E[(n+

n

X

j=1

jXj)2]

= E[n2+2n

n

X

j=1

jXj + (

n

X

j=1

jXj)2]

= n2+4n2+E[(

n

X

j=1

jXj)2].

Note queXj2 =Xj e queXj e Xi são independentes sei 6=j.

Portanto,

E[X2] ≤ 5n2+

n

X

j=1

E[j2Xj] +2

n−1

X

i=1 n

X

j=i+1

ijE[XiXj]

= 5n2+

n

X

j=1

j2E[Xj] +2

n−1

X

i=1 n

X

j=i+1

ijE[Xi]E[Xj].

(53)

Variância

E[X2] ≤ 5n2+

n

X

j=1

j2Pr{Xj =1}

+2

n−1

X

i=1 n

X

j=i+1

ij Pr{Xi =1}Pr{Xj =1}

= 5n2+

n

X

j=1

(2j) +2

n−1

X

i=1 n

X

j=i+1

4

= 5n2+2

n

X

j=1

j+4 n n−1

= 5n2+n(n+1) +4 n n−1

= 10n2−3n.

Referências

Documentos relacionados

Desde o início, ofereceram-se para me buscar no aero- porto, para tratar todas as burocracias comigo, e isso é importante, porque, como vim sozinha, não fiquei tão perdi-

Observação: as características de qualidade, quantidade e distribuição acima descritas, são comuns não só para os canários amarelos, mas também para os amarelos marfins,

Leve, Moderado e Pesado, permitindo uma melhor distribuição de peso na plantadeira, tornando uniforme a pressão dos carrinhos e rodados ao solo, atendendo dessa forma desde o

Sabemos que na geometria a menor distância entre dois pontos é dada por uma reta, já na geometria analítica esses pontos são representados por coordenadas no sistema

Segundo Rousseau (1992) apud Zuim (2006), dentre as várias formas de se definir o conceito de EAD, nota-se o elemento comum de que os agentes educacionais, separados

A situação começou a ser alarmante para as autoridades nacionais e, apesar de ainda rica em recursos florestais (mais de 55% da superfície total), a Guiné-Bissau está

As empresas se comprometem a descontar dos seus empregados, ASSOCIADOS OU NÃO, a Contribuição Con- federativa pelo percentual de 1,5% (hum e meio pôr cento) incidente sobre o

 Para operações celebradas ao abrigo da alínea a) do nº 10 do Capítulo I: a pagar postecipadamente com cobrança anual, a cargo do beneficiário, calculada nos termos do Anexo