• Nenhum resultado encontrado

Algoritmos Sweep-Line e a Distˆancia de Manhattan

N/A
N/A
Protected

Academic year: 2022

Share "Algoritmos Sweep-Line e a Distˆancia de Manhattan"

Copied!
39
0
0

Texto

(1)

Algoritmos Sweep-Line e a Distˆ ancia de Manhattan

Lu´ıs Fernando Schultz Xavier da Silveira 4 de mar¸co de 2011

Resumo

Dada uma lista denretˆangulos no plano com os lados alinhados aos eixos, ´e poss´ıvel computar a ´area da uni˜ao destes retˆangulos e um ponto coberto por uma quantidade m´axima deles emO(nlogn) atrav´es de algoritmos sweep-line.

Definindo por diamante o lugar geom´etrico dos pontos que distam n˜ao mais do que uma certa distˆancia de uma certa origem, onde a no¸c˜ao de distˆancia ´e dada pela distˆancia de Manhattan, tamb´em ´e poss´ıvel, dada uma lista dendiamantes, calcular a ´area da uni˜ao dos diamantes e exibir um ponto de cobertura m´axima por estes diamantes emO(nlogn). Isto pode ser feito rotacionando o plano em 45 graus, pois esta transforma¸c˜ao mapeia diamantes em quadrados ao mesmo tempo em que ela preserva a ´area da uni˜ao e estabelece uma correspondˆencia bijetiva entre pontos de cobertura m´axima.

Quando observamos o plano como umgrid infinito de c´elulas, a defini¸c˜ao an´aloga para um retˆangulo ´e a de uma matriz finita de c´elulas e a defini¸c˜ao an´aloga para um diamante ´e a do conjunto de c´elulas que distam n˜ao mais do que uma certa distˆancia de uma certa c´elula de origem na distˆancia de Manhattan. No entanto, embora a vers˜ao do problema para retˆangulos ainda admita a mesma solu¸c˜ao que o caso anterior, a vers˜ao para diamantes n˜ao mais admite a redu¸c˜ao `a vers˜ao para retˆangulos, uma vez que n˜ao ´e verdade que a rota¸c˜ao dogrid em 45 graus mapeia diamantes em quadrados.

Felizmente, ainda ´e poss´ıvel resolver o problema para n diamantes em O(nlogn) atrav´es de uma redu¸c˜ao ao caso dos retˆangulos. Por´em, esta redu¸c˜ao ´e um pouco mais complexa que a anterior.

O objetivo deste trabalho ´e apresentar esta redu¸c˜ao e implementar rotinas para resolver este problema.

Sum´ ario

1 Cr´editos 2

2 Introdu¸c˜ao 2

3 Enunciando os Problemas 3

3.1 Grids, Retˆangulos, Diamantes e ´Areas . . . 3

3.2 Coberturas . . . 4

3.3 Os Problemas para Retˆangulos . . . 4

3.4 Os Problemas para Diamantes . . . 4

4 Solu¸c˜oes Sweep-Line para os Problemas para Retˆangulos 5 4.1 A Id´eia dos AlgoritmosSweep-Line . . . 5

4.2 Eventos eSweep-Lines . . . 5

4.3 Os Algoritmos . . . 6

4.4 O Papel de Estruturas de Dados nos AlgoritmosSweep-Line. . . 9

4.5 Compress˜ao de Coordenadas . . . 10

(2)

4.5.1 Defini¸c˜ao . . . 10

4.5.2 C´alculo . . . 11

4.5.3 Aplica¸c˜oes . . . 13

4.6 Arvores de Segmentos . . . .´ 14

4.6.1 Introdu¸c˜ao . . . 14

4.6.2 Arvores de Segmentos para o Problema CCMR . . . .´ 15

4.6.3 Arvores de Segmentos para o Problema AUR . . . .´ 18

4.6.4 An´alise de Complexidade . . . 23

4.6.5 Implementa¸c˜oes Iterativas . . . 25

4.7 Alternativas `as ´Arvores de Segmentos . . . 28

5 Uma Redu¸c˜ao dos Problemas dos Diamantes aos dos Retˆangulos 30 6 Implementa¸c˜ao em C 33 6.1 Defini¸c˜oes . . . 33

6.2 Utilit´arios . . . 34

6.3 Ordena¸c˜ao . . . 34

6.4 Compress˜ao de Coordenadas . . . 35

6.5 Gera¸c˜ao de Eventos . . . 36

6.6 Arvores de Segmentos . . . .´ 36

6.7 CCMR e AUR . . . 37

6.8 O Programa Principal . . . 38

1 Cr´ editos

As seguintes pessoas deram uma contribui¸c˜ao importante ao conte´udo deste trabalho:

• Joel Uchoa: propˆos o problema do c´alculo do n´umero de diamantes que cobrem a c´elula mais coberta por diamantes no grid como uma quest˜ao para a prova de sele¸c˜ao dos participantes brasileiros na Olimp´ıada Internacional de Inform´atica (IOI) 2010.

• Wanderley Guimar˜aes: realizou nossa primeira implementa¸c˜ao do algoritmo aqui proposto para resolver este problema e observou que, com ligeiras modifica¸c˜oes, ele poderia ser transformado num algoritmo que resolve o problema do c´alculo da ´area da uni˜ao de diamantes nogrid.

2 Introdu¸ c˜ ao

Diversos problemas fundamentais em geometria computacional admitem solu¸c˜oes eficientes atrav´es de algoritmos sweep-line. Por exemplo, o problema do c´alculo dos m pontos de intersec¸c˜ao determinados porn segmentos de reta no plano pode ser resolvido emO(m+nlogn)[12], o problema da exibi¸c˜ao de dois pontos de distˆancia m´ınima dentrenpontos no plano pode ser resolvido em O(nlogn)[12], o problema da constru¸c˜ao do diagrama de Voronoi de n pontos no plano pode ser resolvido em O(nlogn)[9] e o problema da constru¸c˜ao do casco convexo de um conjunto denpontos no plano admite uma solu¸c˜ao muito mais compacta e simples [1], ainda emO(nlogn), do que o tradicionalGraham-Scan [10].

Dois outros problemas s˜ao de fundamental importˆancia para este trabalho. Dada uma lista denretˆangulos nogrid (ou no plano com os lados alinhados aos eixos), eles se referem ao c´alculo da ´area da uni˜ao destes retˆangulos e da

(3)

exibi¸c˜ao de uma c´elula nogrid (ou de um ponto no plano) que pertence a uma quantidade m´axima de retˆangulos.

Ambos os problemas podem ser resolvidos emO(nlogn) atrav´es de algoritmossweep-line [12].

Diamantes s˜ao o lugar geom´etrico dos pontos que distam n˜ao mais do que uma certa distˆancia, o raio do diamante, de uma certa origem em rela¸c˜ao `a distˆancia de Manhattan. Mais especificamente, se a origem for (x0, y0) e o raio forr, o diamante ser´a o conjunto{(x, y) :|x−x0|+|y−y0|6r}.A figura 1 mostra o formato geral de diamantes no plano e nogrid.

Figura 1: Um diamante no plano e um diamante de raio 3 nogrid, respectivamente.

No plano, diamantes podem ser facilmente transformados em quadrados atrav´es de uma rota¸c˜ao de 45 graus. Por causa disto, o problema de, dada uma lista de ndiamantes no plano, computar a ´area da uni˜ao destes diamantes e um ponto que pertence a uma quantidade m´axima deles pode ser facilmente reduzido ao problema an´alogo para retˆangulos. Diamantes no grid, contudo, n˜ao admitem uma transforma¸c˜ao simples, no nosso conhecimento, para que a vers˜ao do problema nogrid possa ser reduzida de forma similar.

Nas pr´oximas se¸c˜oes n´os iremos definir os problemas de computar a ´area da uni˜ao e uma c´elula de cobertura m´axima para retˆangulos e diamantes nogrid de forma formal, iremos apresentar as solu¸c˜oessweep-line para os problemas dos retˆangulos no grid (que na verdade s˜ao essencialmente as mesmas para retˆangulos no plano) e iremos derivar uma transforma¸c˜ao efetiva, embora n˜ao t˜ao simples quanto uma rota¸c˜ao, para que possamos converter o problema dos diamantes no grid no problema dos retˆangulos no grid. Ao final, iremos ainda apresentar implementa¸c˜oes na linguagem C de rotinas que resolvem estes problemas.

3 Enunciando os Problemas

Nesta se¸c˜ao iremos enunciar formalmente os problemas de calcular a ´area da uni˜ao e uma c´elula de cobertura m´axima em suas vers˜oes para retˆangulos e diamantes, ambos nogrid.

3.1 Grids, Retˆ angulos, Diamantes e ´ Areas

O grid ´e o conjunto dos pontos do plano de coordenadas inteiras, Z2. No entanto, ´e comum interpretar o grid, ao menos para fins de visualiza¸c˜ao do conceito de ´area, como uma associa¸c˜ao entre pontos (x, y)∈Z2 do plano e regi˜oes da forma [x, x+ 1]×[y, y+ 1], denominadas c´elulas.

Defini¸c˜ao 1. Denotaremos o conjunto dos n´umeros inteiros entre a∈Zeb∈Zpor [a..b] ={x∈Z:a6x6b}.

Note que [a..b] ={}sea > b.

Defini¸c˜ao 2. Umretˆangulo´e um subconjunto dogridda forma[x0..x1]×[y0..y1], ondex0, y0, x1, y1∈Z,x06x1

ey06y1.

Defini¸c˜ao 3. Um diamante´e um subconjunto do gridda forma

D((x0, y0), r) ={(x, y)∈Z2:|x−x0|+|y−y0|6r}, onde(x0, y0)∈Z2 ´e o centrodo diamante er∈N´e seuraio.

(4)

Defini¸c˜ao 4. A ´areade um subconjunto finitoX do grid´e A(X) = #X, a cardinalidade deX.

A ´area ´e interpretada mais facilmente entendendoX como um conjunto de c´elulas, todas de ´area unit´aria.

3.2 Coberturas

SejaR= [R0, R1, . . . , Rn−1] uma lista finita densubconjuntos de um certo conjunto Ω6={}.

Defini¸c˜ao 5. O n´umero de coberturas dex∈ΩporR´e

ρR(x) = #{i∈[0..n−1] :x∈Ri}.

Defini¸c˜ao 6. O n´umero m´aximo de coberturas de um elemento deΩ porR´e ρR = max

x∈ΩR(x)}.

Este n´umero est´a bem definido porqueρR(x) ´e limitado superiormente pornpara todox∈Ω6={}.

Defini¸c˜ao 7. O conjunto dos elementos cobertos pork∈Nelementos deR´e σR(k) ={x∈Ω :ρR(x) =k}.

Defini¸c˜ao 8. O conjunto dos elementos de cobertura m´axima (em rela¸c˜ao a R) ´e σRRR).

3.3 Os Problemas para Retˆ angulos

O problema do c´alculo da ´area da uni˜ao de retˆangulos no grid (AUR) pode ser descrito da seguinte forma: na entrada ser˜ao dados um n´umero natural n ∈ N e n qu´adruplas de n´umeros inteiros (x0,i, y0,i, x1,i, y1,i) ∈ Z4, i∈[0..n−1], satisfazendox0,i6x1,i ey0,i6y1,ipara todoi, e na sa´ıda ser´a pedido o n´umero natural

A

n−1

[

i=0

[x0,i..x1,i]×[y0,i..y1,i]

! .

J´a o problema do c´alculo de uma c´elula de cobertura m´axima por retˆangulos nogrid (CCMR) pode ser descrito de forma similar: na entrada ser˜ao dados um n´umero naturalnenqu´adruplas de n´umeros inteiros (x0,i, y0,i, x1,i, y1,i)∈ Z4,i∈[0..n−1], satisfazendox0,i6x1,iey0,i6y1,i para todoi, e na sa´ıda ser´a pedida uma c´elula (x, y)∈Z2do grid satisfazendo (x, y)∈σRZ2, ondeR= [R0, R1, . . . , Rn−1] ´e uma lista de nretˆangulos tais queRi = [x0,i..x1,i]× [y0,i..y1,i] para todoi.

3.4 Os Problemas para Diamantes

O problema do c´alculo da ´area da uni˜ao de diamantes nogrid (AUD) pode ser definido da seguinte maneira: na entrada ser˜ao apresentados um n´umero naturaln∈Nentriplas de n´umeros (xi, yi, ri)∈Z×Z×N,i∈[0..n−1], e na sa´ıda ser´a requisitado o n´umero natural

A

n−1

[

i=0

D((xi, yi), ri)

! .

Ainda, o problema do c´alculo de uma c´elula de cobertura m´axima por diamantes no grid (CCMD) pode ser especificado como segue: na entrada ser˜ao colocados um n´umero naturaln∈Nentriplas de n´umeros (xi, yi, ri)∈ Z×Z×N, i ∈[0..n−1], e na sa´ıda ser´a pedida uma c´elula (x, y)∈ Z2 dogrid satisfazendo (x, y) ∈σZR2, onde R= [R0, R1, . . . , Rn−1] ´e uma lista dendiamantes nogrid tais queRi=D((xi, yi), ri) para todoi.

(5)

4 Solu¸ c˜ oes Sweep-Line para os Problemas para Retˆ angulos

Nesta se¸c˜ao iremos mostrar como os problemas AUR e CCMR podem ser eficientemente resolvidos atrav´es de algoritmos sweep-line. Partes dos algoritmos descritos aqui ser˜ao deixadas em aberto at´e que tenhamos realizado um estudo de ´arvores de segmentos na se¸c˜ao 4.6.

4.1 A Id´ eia dos Algoritmos Sweep-Line

Algoritmos sweep-line em geral se baseiam em invariantes que as instˆancias do problema obedecem em um dos semi-planos determinados por uma reta (asweep-line, que ´e usualmente vertical) e em estrat´egias eficientes para manter essas invariantes mediante o deslocamento desta reta.

Por exemplo, no caso do problema AUR, podemos considerar a ´area α da uni˜ao da intersec¸c˜ao dos retˆangulos com o conjunto das c´elulas de abscissa menor que um certo valor x0. Se asweep-line se deslocar para uma nova abscissax1 (x06x1) e o conjuntoY das ordenadas das c´elulas que est˜ao na uni˜ao dos retˆangulos e possuem como abscissa a abscissa dasweep-linen˜ao variar conforme asweep-linese desloca assumindo coordenadas em [x0..x1−1], temos que a ´area da uni˜ao da intersec¸c˜ao dos retˆangulos com o conjunto das c´elulas de abscissa menor quex1ser´a α+ (x1−x0)×#Y. A figura 2 ilustra esta id´eia.

Figura 2: A ´area adicionada quando asweep-line se desloca dex0parax1.

4.2 Eventos e Sweep-Lines

Se imaginamos que uma linha, a sweep-line, se desloca da esquerda para a direita por todo o plano, ´e natural a no¸c˜ao de evento. Um evento ocorre quando a sweep-line encontra um lado vertical de um dos retˆangulos. Na realidade, se estamos trabalhando no grid, um evento ocorre quando a sweep-line, que ´e uma coluna infinita de c´elulas, cobre a primeira coluna de um retˆangulo (um evento de entrada) ou deixa de cobrir a ´ultima coluna de um retˆangulo (um evento de sa´ıda).

Mais ainda, eventos possuem um ordenamento natural dado pelo “tempo” de ocorrˆencia dos mesmos. ´E processando eventos nessa ordem que os algoritmossweep-line ir˜ao se desenrolar.

Defini¸c˜ao 9. O espa¸co de eventos´e o conjunto

E ={(x, a, b, t)∈Z×Z×Z× {+,−}:a6b}.

(6)

Um evento ´e um elemento e= (x, a, b, t)∈ E. Chamaremos de a abscissa do evento o valor x, de o intervalo de ordenadasdo evento o conjunto [a..b] e de otipodo evento o s´ımbolot. Set= +, diremos que o evento ´e um evento de entradae se t=−, diremos que o evento ´e um evento de sa´ıda.

Defini¸c˜ao 10. Aordem de execu¸c˜aode eventos ´e um ordenamento parcial ≺⊆ E × E definido por (x, a, b, t)≺(x0, a0, b0, t0)⇐⇒x < x0.

Seja ent˜aoR= [R0, R1, . . . , Rn−1] uma lista denretˆangulos nogrid, onde Ri = [x0,i..x1,i]×[y0,i..y1,i] para cada i∈[0..n−1].

Defini¸c˜ao 11. Definimos umalista de eventos geradosporRcomo um ordenamento da lista[e0, e1, . . . , e2n−1] pelo ordenamento parcial≺, onde

e2i = (x0,i, y0,i, y1,i,+) e e2i+1= (x1,i+ 1, y0,i, y1,i,−) para todo i∈[0..n−1].

4.3 Os Algoritmos

Aqui iremos definir formalmente os algoritmos que iremos empregar para resolver os problemas AUR e CCMR.

Come¸camos mostrando um algoritmo para gerar uma lista de eventos paraR.

Gera-Lista-de-Eventos(R):

1 E ←uma lista de 2nelementos 2 para ide0at´en−1fa¸ca 3 E2i←(x0,i, y0,i, y1,i,+) 4 E2i+1←(x1,i+ 1, y0,i, y1,i,−) 5 ordene E por≺

6 retorneE

Dado que podemos ordenar um vetor de nelementos emO(nlogn) como descrito em [2], este algoritmo pode ser implementado emO(nlogn) tamb´em.

Agora iremos exibir um algoritmo para resolver o problema AUR.

Area-da-Uni˜´ ao-de-Retˆangulos(R):

1 E←Gera-Lista-de-Eventos(R) 2 S←uma lista vazia

3 α←0

4 para i de 0 at´e 2n−2 fa¸ca 5 (x, a, b, t)←Ei

6 set= + ent~ao

7 insere (a, b) emS

8 sen~ao

9 remove uma c´opia de (a, b) deS 10 (x0, a0, b0, t0)←Ei+1

11 α←α+ (x0−x)·# [

(a,b) emS

[a..b]

12 retornea

O estado deste algoritmo durante sua execu¸c˜ao ´e composto duas vari´aveis: S eα. S´e uma lista de pares ordenados representando intervalos n˜ao-vazios de n´umeros inteiros eα´e um n´umero natural. Inicialmente, ´e computada uma lista de eventos E gerada por R. A principal invariante deste algoritmo ´e que, toda a vez que ele chega na linha 4, antes de testar a condi¸c˜ao doloop, a ´area da uni˜ao das intersec¸c˜oes dos retˆangulos em Rcom o conjunto das c´elulas de coordenadasxmenores quexi, ondexi´e a abscissa doi-´esimo evento emE, ´e igual aα. Ainda, ir´a valer

(7)

que sempre quexi < xi+1, quando o algoritmo estiver executando a linha 11, o conjunto das ordenadas das c´elulas na uni˜ao dos retˆangulos emRde abscissaxser´a o mesmo para todoxsatisfazendoxi6x < xi+1 e este conjunto poder´a ser expresso como a uni˜ao dos intervalos emS.

Brevemente demonstraremos a corretude deste algoritmo com base no que foi descrito anteriormente. Por´em, antes disso, cabe dizer que ´e poss´ıvel implement´a-lo emO(nlogn) se utilizarmos uma estrutura de dados apropriada para manter a listaS. Mais detalhes de como isto pode ser feito est˜ao nas se¸c˜oes 4.4, 4.5 e 4.6.

Teorema 1. O algoritmo Area-da-Uni˜´ ao-de-Retˆangulos(R)corretamente computa a ´area da uni˜ao da lista de retˆangulosR.

Demonstra¸c˜ao. Ap´os o c´alculo de uma lista de eventos gerados por R na linha 1, defina xi como a abscissa do eventoEi.

A demonstra¸c˜ao ser´a baseada na seguinte invariante deloop: toda vez que o algoritmo passa pela linha 4 (antes de executar a compara¸c˜ao doloop), ´e v´alido queα= #Ai, onde

Ai =

 (x, y)∈

n−1

[

j=0

Rj :x < xi

 .

Como a lista E est´a ordenada por ≺, x0 6xi para todoi. Ainda, cada c´elula (x, y) de um retˆangulo ´e tal que xu6x < xv para ´ındices uev, e assimx06x, donde conclu´ımos queA0={}. Mas como inicializamosαcomo 0 na linha 3, temos que come¸camos a invariante corretamente.

Suponha agora que a invariante valha quando entramos na linha 4 para um determinado valor dei. Sexi=xi+1, temos que o valor deαficar´a o mesmo e, por defini¸c˜ao,Ai=Ai+1, e assim a invariante ser´a trivialmente mantida.

Suponha ent˜ao, sem perda de generalidade, que xi < xi+1. Considere ent˜ao que o algoritmo foi executado at´e a linha 11 (n˜ao a tendo executado ainda). Seja ent˜ao

C(x) =

y∈Z: (x, y)∈

n−1

[

j=0

Rj

 .

Chamaremos deC(x) o corte dos retˆangulos na abscissax.

Gostar´ıamos de demonstrar queC(x) =C(xi) para todoxsatisfazendoxi 6x < xi+1. Fixe ent˜ao umxsatisfazendo esta restri¸c˜ao. Vamos mostrar quey ∈ C(x)⇐⇒y∈ C(xi) para todoy∈Z. Suponha ent˜ao quey∈ C(xi). Existe ent˜ao um retˆanguloRj tal que (xi, y)∈Rj. Logox0,j 6xi6x1,j. Masx1,j >xi+1−1, pois do contr´ario o evento de sa´ıda deRj teria abscissax1,j+ 1, masxi< x1,j+ 1< xi+1, contradizendo a listaE estar ordenada por≺(este evento deveria vir antes do eventoi+ 1 e depois do eventoi). Logox0,j 6xi6x6x1,j, poisx < xi+16x1,j+ 1.

Assim a c´elula (x, y) tamb´em pertence aRj ey∈ C(x). A prova dey∈ C(x) =⇒y∈ C(xi) ´e an´aloga.

Agora mostraremos que

C(xi) = [

(a, b) emS

[a..b].

Para isso, considere um retˆangulo Rj. Se x1,j < xi, temos que seu evento de sa´ıda tem abscissa x1,j + 1 6xi e portanto j´a foi processado. Assim, a c´opia que seu evento de entrada deixou emS j´a foi retirada. Similarmente, sex0,j > xi, seu evento de entrada ainda n˜ao foi processado e assim seu evento de sa´ıda ainda n˜ao foi processado.

Portanto nenhum evento gerado por este retˆangulo afetou a lista S ainda. Finalmente, se x0,j 6xi 6x1,j, seu evento de entrada (abscissax0,j 6xi) j´a foi processado mas seu evento de sa´ıda (abscissax1,j+ 1> xi) ainda n˜ao e, portanto, S cont´em uma c´opia do intervalo de ordenadas [ai..bi] de Rj. Assim, conclu´ımos que S ´e uma lista contendo uma c´opia de cada intervalo de ordenadas de retˆangulos que intersectam{(xi, y) :y∈Z}, a sweep-line, e assim o resultado segue.

Para manter a invariante, precisamos somar emαo valor #B, onde

B=

 (x, y)∈

n−1

[

j=0

Rj:xi6x < xi+1

 ,

(8)

poisAi∩B={}eAi∪B =Ai+1. Mas

#B=

xi+1−1

X

x=xi

#

y∈Z: (x, y)∈

n−1

[

j=0

Rj

=

xi+1−1

X

x=xi

#C(x) = (xi+1−xi)#C(xi).

E isso mostra que o assinalamento deαna linha 11 preserva o invariante.

Dessa forma acabamos de demonstrar que este invariante deloop´e preservado durante toda a execu¸c˜ao do algoritmo e assim que, em particular, ele vale na passagem pela linha 4 quandoi= 2n−1.

Por´em, por um argumento similar ao que fizemos no in´ıcio da demonstra¸c˜ao, n˜ao h´a c´elula na uni˜ao dos retˆangulos com abscissa maior ou igual ax2n−1, e assim

#A2n−1= #

n−1

[

j=0

Rj.

Mas comoα= #A2n−1, temos que o algoritmo retorna o valor correto na linha 12, e isso conclui a sua prova de corretude.

Iremos agora exibir um algoritmo para tratar do problema CCMR.

C´elula-de-Maior-Cobertura(R):

1 E←Gera-Lista-de-Eventos(R) 2 S←uma lista vazia

3 ρ←0

4 (x, y)←(0,0)

5 para i de 0 at´e 2n−2 fa¸ca 6 (x, a, b, t)←Ei

7 set= + ent~ao

8 insere (a, b) emS

9 sen~ao

10 remove uma c´opia de (a, b) deS 11 (x0, a0, b0, t0)←Ei+1

12 sex6=x0 ent~ao

13 ρ0 ←ρZS

14 seρ0> ρent~ao

15 ρ←ρ0

16 x←x

17 y←algu´em emσSZ 18 retorna(x, y)

Os coment´arios e a demonstra¸c˜ao da corretude deste algoritmo a seguir ser˜ao an´alogos aos do algoritmo anterior.

O estado deste algoritmo ´e constitu´ıdo de quatro vari´aveis: S, ρ, x e y. S ´e uma lista de pares ordenados representando intervalos n˜ao-nulos de n´umeros inteiros,ρ´e um n´umero natural e (x, y)∈Z2 s˜ao as coordenadas de uma c´elula do grid. No in´ıcio do algoritmo ´e calculada uma lista de eventosEgerada porR. A invariante mais importante que este algoritmo ir´a manter ´e que, toda vez que ele passa pela linha 5 (antes de testar a condi¸c˜ao do loop), (x, y) ´e um ponto coberto por uma quantidade m´axima de elementos na lista da intersec¸c˜ao dos retˆangulos em Rcom o conjunto de c´elulas dogrid com abscissa xmenor do que xi, xi sendo a abscissa do i-´esimo evento deE, e ρ´e a quantidade destes elementos cobrindo (x, y). Ainda, sempre quexi < xi+1 para algum i, quando o algoritmo estiver passando pela linha 12 (antes de execut´a-la), a lista dos intervalos de ordenadas das c´elulas de um retˆangulo de Rque possuem abscissaxser´a, a menos de uma permuta¸c˜ao, a mesma para todo xsatisfazendo xi6x < xi+1. Al´em disso, esta lista ser´a, ap´os os intervalos vazios serem removidos, uma permuta¸c˜ao deS.

Antes de provarmos que este algoritmo funciona corretamente, cabe dizer que se utilizarmos uma estrutura de dados apropriada para implementar a lista S, podemos fazer com que ele execute emO(nlogn). Mais detalhes de como isso pode ser feito est˜ao nas se¸c˜oes 4.4, 4.5 e 4.6.

Teorema 2. O algoritmo C´elula-de-Maior-Cobertura(R)corretamente computa uma c´elula emσRZ2.

(9)

Demonstra¸c˜ao. Ap´os a execu¸c˜ao da linha 1, onde obtemos uma listaE de eventos gerados por R, definaxi como a abscissa doi-´esimo evento.

A demonstra¸c˜ao ter´a como base a seguinte invariante deloop: toda vez que o algoritmo passa pela linha 5 (antes de executar a compara¸c˜ao doloop), ´e v´alido que

ρ=ρZA2

i e (x, y)∈σAZ2

i, ondeAi´e a lista denelementos

{(x, y)∈Rj:x < xi}n−1j=0 .

Como E foi ordenado por≺, xi 6xi+1 para todo i. Al´em disso, pelo modo como foram gerados os eventos, cada c´elula (x, y) de um retˆangulo ´e tal quexu6x < xvpara ´ındicesuev, e assimx06x, e portanto a listaAicont´em apenas intervalos vazios no in´ıcio do algoritmo. Dessa forma, a inicializa¸c˜ao deρcomo 0 e a de (x, y) como um ponto qualquer s˜ao suficientes para come¸car a invariante corretamente.

Suponha ent˜ao que a invariante valha quando entramos na linha 5 para um determinado valor dei. Sexi=xi+1, a listaAi n˜ao muda incrementandoi(Ai=Ai+1) e, pela checagem feita na linha 12, os valores deρ,x eytamb´em n˜ao. Portanto nesse caso a invariante ´e mantida trivialmente.

Suponha ent˜ao, sem perda de generalidade, quexi < xi+1. Considere ent˜ao que o algoritmo executou at´e a linha 12 (exclusive). Defina

C(x) ={y∈Z: (x, y)∈Rj}n−1j=0 .

Por um argumento completamente an´alogo ao empregado no teorema 1, C(x) = C(xi) para todo xsatisfazendo xi6x < xi+1.

O que gostar´ıamos de mostrar agora ´e que se removermos todos os intervalos vazios da listaC(xi), obteremos uma permuta¸c˜ao da lista S. Para isso, considere um retˆangulo Rj. Se x1,j < xi, o retˆangulo Rj j´a teve seus dois eventos processados, n˜ao contribuindo nenhum intervalo para S, e assim marcamos para remo¸c˜ao em C(xi) seu j-´esimo elemento. Similarmente, sex0,j > xi, o evento de entrada (e logo o de sa´ıda) do retˆanguloRj ainda n˜ao foi processado, e assim ele tamb´em n˜ao contribuiu nenhum intervalo paraS e podemos marcar oj-´esimo elemento deC(xi) para remo¸c˜ao.

Remova agora os elementos marcados deC(xi). Vamos mostrar que esta lista resultante ´e uma permuta¸c˜ao da lista dos intervalos em S. Seja ent˜aoj tal quex0,j 6xi6x1,j. O evento de entrada deste retˆangulo (abscissax0,j) foi processado mas seu evento de sa´ıda (abscissax1,j+ 1> xi) ainda n˜ao. Assim, ele contribui um intervalo [y0,j..y1,j] paraS. E comoS n˜ao possui outros intervalos (analisamos todas as possibilidades para Rj), o resultado segue.

Para manter a invariante, observe que uma c´elula (x0, y0) ∈σZA2

i+1 deve satisfazer ou x0 < xi ou xi 6x0 < xi+1. Dentre as c´elulas que satisfazemx0 < xi temos que (x, y) ´e uma c´elula coberta por uma quantidade m´axima de elementos. Agora considere quexi6x0< xi+1. Nesse caso, note queρZA2i+1ZA2

i+1\AiZC(x0)ZC(x

i)ZS. Como o teste executado na linha 14 ´e suficiente para discernir se existe uma c´elula emσZA2

i+1 com coordenada menor do que xi, a invariante ´e mantida. Isso ocorre porque se ela existir, nossa decis˜ao de manter (x, y) ser´a correta e, se ela n˜ao existir, a nova c´elula ter´a coordenada (xi, y0), ondey0∈σSZ, de forma queρZA2

i+1(xi, y0) =ρZC(x

i)(y0) = ρZS(y0) =ρZS e (xi, y0)∈σAZ2

i+1.

Assim, quando oloop acaba comivalendo 2n−1, a invariante nos mostra que (x, y)∈σZA22n−1, masA2n−1=R, pois todo retˆanguloRj emRsatisfazx1,j < x2n−1 e isso conclui a demonstra¸c˜ao.

4.4 O Papel de Estruturas de Dados nos Algoritmos Sweep-Line

Um ponto importante que ficou em aberto nos algoritmos Area-da-Uni˜´ ao-de-Retˆangulos e C´elula-de- Maior-Cobertura´e a representa¸c˜ao da listaS. Se ela for representada como uma simples sequˆencia de pares or- denados de n´umeros inteiros, as opera¸c˜oes de inser¸c˜ao e remo¸c˜ao (linhas 7 e 9 deArea-da-Uni˜´ ao-de-Retˆangulos e linhas 8 e 10 deC´elula-de-Maior-Cobertura) podem ser implementadas emO(1) eO(n), respectivamente.

Isso em si ´e ineficiente para nossos prop´ositos, pois dessa forma os dois algoritmos teriam como limite superior no seu tempo de execu¸c˜ao apenas O(n2), sem contar o tempo tomado pela opera¸c˜ao de c´alculo da cardinalidade da uni˜ao (linha 11 deArea-da-Uni˜´ ao-de-Retˆangulos) ou do c´alculo de ρZS e de um elemento de σSZ (linhas 13 e 17 deC´elula-de-Maior-Cobertura).

(10)

Ali´as, essas opera¸c˜oes s˜ao as mais dif´ıceis de se implementar eficientemente, visto que uma implementa¸c˜ao ingˆenua tem uma complexidade que depende (ao menos linearmente) da magnitude das coordenadas da entrada, algo que ´e altamente indesej´avel, pois estes valores podem ser muito grandes.

Os principais resultados que iremos demonstrar nesta se¸c˜ao s˜ao referentes a limites superiores para o tempo de execu¸c˜ao dos algoritmos que expusemos na se¸c˜ao anterior se pudermos assumir certos limites superiores para as principais opera¸c˜oes na listaS. Com eles, poderemos nos preocupar, daqui em diante, apenas em implementar S eficientemente, deixando para tr´as a natureza geom´etrica dos problemas.

Teorema 3. Suponha que exista uma implementa¸c˜ao deStal que as opera¸c˜oes de inser¸c˜ao de um intervalo, remo¸c˜ao de uma c´opia de um intervalo existente e c´alculo da cardinalidade da uni˜ao dos intervalos possam ser implementadas todas em O(logn). Ent˜ao, com essa implementa¸c˜ao, o algoritmo Area-da-Uni˜´ ao-de-Retˆangulos roda em O(nlogn).

Demonstra¸c˜ao. O loop da linha 4 tem O(n) itera¸c˜oes, sendo que em cada uma delas cada opera¸c˜ao descrita ´e executada no m´aximo uma vez.

Teorema 4. Suponha que exista uma implementa¸c˜ao deStal que as opera¸c˜oes de inser¸c˜ao de um intervalo, remo¸c˜ao de uma c´opia de um intervalo existente, c´alculo deρZS e c´alculo de um elemento emσSZ possam ser implementadas emO(logn). Ent˜ao, com essa implementa¸c˜ao, o algoritmoC´elula-de-Maior-Coberturaroda em O(nlogn).

Demonstra¸c˜ao. O loop da linha 5 tem O(n) itera¸c˜oes, sendo que em cada uma delas cada opera¸c˜ao descrita ´e executada no m´aximo uma vez.

4.5 Compress˜ ao de Coordenadas

Em v´arios algoritmos, n˜ao s´o geom´etricos, a habilidade de indexar valores por coordenadas ´e essencial. T´ecnicas modernas de implementa¸c˜ao dearrays associativos tornam isso poss´ıvel, usualmente custandoO(logn) por mape- amento dentro de um espa¸co den coordenadas. Contudo, para a maioria das aplica¸c˜oes, a constante envolvida na nota¸c˜aoOdestas t´ecnicas ´e muito alta, al´em de suas implementa¸c˜oes serem n˜ao-triviais em geral.

O que descreveremos aqui ´e um m´etodo para utilizar o conhecido problema da ordena¸c˜ao para possibilitar uma vers˜ao um pouco mais restrita deste tipo de mapeamento. Os algoritmos envolvidos s˜ao, portanto, bem estudados e altamente eficientes.

4.5.1 Defini¸c˜ao

Defini¸c˜ao 12. Seja a0, a1, . . . , an−1 ∈Z uma sequˆencia finita de n coordenadas inteiras. Uma compress˜ao de coordenadasparaa0, a1, . . . , an−1 ´e um par de fun¸c˜oes(ϕ, ξ)da forma

ϕ: [0..n−1] −→ [0..n−1]

i 7−→ ϕ(i) e ξ: Im(ϕ) −→ Z

y 7−→ ξ(y)

satisfazendo as seguintes condi¸c˜oes:

• Preserva¸c˜ao da ordem: para todos i, j∈[0..n−1],ai< aj ⇐⇒ϕ(i)< ϕ(j).

• Compacidade: existe m∈[0..n]tal queIm(ϕ) = [0..m−1].

• Consistˆencia: para todoi∈[0..n−1],ξ(ϕ(i)) =ai.

Proposi¸c˜ao 1. Seja (ϕ, ξ) uma compress˜ao de coordenadas para a0, a1, . . . , an−1 ∈ Z. Ent˜ao, para todos x, y ∈ Im(ϕ),x < y⇐⇒ξ(x)< ξ(y).

Demonstra¸c˜ao. Sejamiej tais quex=ϕ(i) e y=ϕ(j). Ent˜aox < y⇐⇒ϕ(i)< ϕ(j)⇐⇒ai< aj⇐⇒ξ(ϕ(i))<

ξ(ϕ(j))⇐⇒ξ(x)< ξ(y).

(11)

A id´eia ´e que uma compress˜ao de coordenadas mapeia as coordenadasa0, a1, . . . , an−1em um conjunto “pequeno”

e cont´ıguo de n´umeros inteiros, nominalmente algum conjunto da forma [0..m−1] para algum m ∈ [0..n], que pode ser usado como o conjunto de entradas de um vetor. A compress˜ao de coordenadas precisa preservar a ordem relativa das coordenadas e, al´em disso, deve ser poss´ıvel obter as coordenadas originais a partir das coordenadas comprimidas. Note, no entanto, que n˜ao ´e poss´ıvel obter as coordenadas comprimidas a partir das coordenadas originais: devemos usar um ´ındice de uma coordenada original.

A figura 3 mostra um exemplo de compress˜ao de coordenadas.

Figura 3: Uma compress˜ao de coordenadas para uma sequˆencia de 11 elementos. A tabela define a sequˆencia e a fun¸c˜aoϕ. A fun¸c˜aoξest´a ilustrada graficamente. Seu dom´ınio, o intervalo [0..m−1] comm= 8, est´a representado em baixo de seu contradom´ınio, os n´umeros inteiros. O dom´ınio e a imagem deξest˜ao hachurados.

4.5.2 C´alculo

Como as fun¸c˜oesϕeξ s˜ao fun¸c˜oes de dom´ınios da forma [0..k−1] para determinados valores dek, ´e natural que, em nossos algoritmos, representemos estas duas fun¸c˜oes como vetores. Assim sendo, podemos exibir um algoritmo para computar uma compress˜ao de coordenadas, mas primeiro precisamos das seguintes defini¸c˜oes.

Defini¸c˜ao 13. Asfun¸c˜oes projec˜aoem Z2 s˜ao

π0: Z2 −→ Z

(x, y) 7−→ x e π1: Z2 −→ Z (x, y) 7−→ y.

Defini¸c˜ao 14. O ordenamento parcial de pares de n´umeros inteiros≺0⊆Z2×Z2 ´e definido por(a, b)≺0 (x, y)⇐⇒

a < x.

Consideremos ent˜ao o seguinte algoritmo.

(12)

Compress˜ao-de-Coordenadas(a0, a1, . . . , an−1):

1 para i de 0 at´e n−1 fa¸ca 2 bi←(ai, i)

3 ordeneb0, b1, . . . , bn−1 pelo ordenamento parcial≺0 4 m←0

5 i←0

6 enquanto i6=n fa¸ca

7 j←i

8 enquanto j6=n∧π0(bi) =π0(bj) fa¸ca 9 ϕ(π1(bj))←m

10 j←j+ 1

11 ξ(m)←π0(bi)

12 m←m+ 1

13 i←j

14 retorne (m, ϕ, ξ)

Antes de demonstrar que ele est´a correto, vamos considerar sua eficiˆencia. Durante a execu¸c˜ao das linhas de 7 a 13, o valor dei´e incrementado no n´umero de vezes que oloop da linha 8 ´e executado. Como esteloop´e executado no m´ınimo uma vez (a condi¸c˜ao ´e sempre verdadeira parai=j), o valor deisempre ´e incrementado em ao menos um.

Assim, as linhas 9 e 10 s˜ao executadas precisamentenvezes e as linhas 7, 8, 11, 12 e 13 s˜ao executadas no m´aximo nvezes. Portanto oloop da linha 6 roda emO(n). Al´em disso, oloop da linha 1 obviamente roda em O(n), o que faz a ordena¸c˜ao na linha 3, que roda emO(nlogn), dominar o custo do algoritmo. Temos ent˜ao que o algoritmo como um todo roda emO(nlogn).

A demonstra¸c˜ao da corretude deste algoritmo se dar´a atrav´es do seguinte resultado.

Teorema 5. Se (m, ϕ, ξ) ´e retornado por uma chamada a Compress˜ao-de-Coordenadas(a0, a1, . . . , an−1), ent˜ao (ϕ, ξ)´e uma compress˜ao de coordenadas paraa0, a1, . . . , an−1 eIm(ϕ) = [0..m−1].

Demonstra¸c˜ao. Durante esta demonstra¸c˜ao os valores deb0, b1, . . . , bn−1ser˜ao considerados ordenados por≺0assu- mindo que o algoritmo j´a passou pela linha 3. Defina ent˜aoXi={π1(b0), π1(b1), . . . , π1(bi−1)}. Iremos demonstrar a seguinte invariante de loop: toda vez que o algoritmo passa pela linha 6, antes de executar a compara¸c˜ao, s˜ao v´alidas as seguintes afirma¸c˜oes, considerando os valores atuais dei em.

• ϕj´a foi definida no dom´ınioXi eξj´a foi definida no dom´ınio [0..m−1].

• Para todos os valoresp, q∈Xi, ap< aq ⇐⇒ϕ(p)< ϕ(q).

• Im(ϕ) = [0..m−1] = Dom(ξ).

• Para todop∈Xi,ξ(ϕ(p)) =ap.

• Oui∈ {0, n} ouπ0(bi−1)< π0(bi).

Na primeira vez que o algoritmo passa pela linha 6, temos i=m= 0, ent˜ao as afirma¸c˜oes acima s˜ao triviais, pois Xi = [0..m−1] = Im(ϕ) = Dom(ξ) ={}.

Suponha ent˜ao que o algoritmo esteja na linha 6 e estas condi¸c˜oes se verifiquem. Vamos mostrar que se ele retornar a esta linha as condi¸c˜oes ainda ser˜ao verificadas. Podemos ent˜ao assumir, sem perda de generalidade, que i6=n, uma vez quei=nimplica que oloop ser´a cancelado.

Definak= 1 + max{j ∈[i..n−1] :π0(bi) =π0(bj)}. Claramente,π0(bi) =π0(bi+1) =· · ·=π0(bk−1) e ouk=nou π0(bk−1)< π0(bk). Quando o algoritmo executar as linhas de 7 a 13, antes de retornar `a linha 6, as seguintes a¸c˜oes ser˜ao executadas:

• ϕ(p) ser´a definida parap∈ {π1(bi), π1(bi+1), . . . , π1(bk−1)}=Xk\Xi comom.

• ξ(m) ser´a definida comoπ0(bi).

• m ser´a incrementado.

(13)

• i se tornar´ak.

Portanto, para manter a invariante precisamos provar que:

• ϕestar´a definida emXk eξestar´a definida em [0..m].

• Sep, q∈Xk masp6∈Xi ouq6∈Xi, ent˜aoap < aq ⇐⇒ϕ(p)< ϕ(q).

• Im(ϕ) = [0..m] = Dom(ξ).

• Para todop∈Xk\Xi, ξ(ϕ(p)) =ap.

• Ouk=nouπ0(bk−1)< π0(bk).

A primeira afirma¸c˜ao ´e trivial. A segunda pode ser mostrada da seguinte forma. Seja p, q∈ Xk comp=π1(bx) e q = π1(by). Suponha primeiro que 0 6 x < i 6 y < k de forma que p ∈ Xi mas q 6∈ Xi. Neste caso, pela defini¸c˜ao de b0, b1, . . . , bn−1, temos que ap = π0(bx) e aq = π0(by). Pela quinta hip´otese da invariante, π0(bx) < π0(bi) = · · · = π0(by) = · · · = π0(bk−1), donde ap = π0(bx) < π0(by) = aq. Mas ϕ(p) < m = ϕ(q), pois m´e sempre incrementado durante o curso do algoritmo e seu valor atual s´o foi usado para definirϕ(x) para x∈Xk\Xi, o que prova este caso. Suponha agora que i6p, q < k, ou seja,p, q∈Xk\Xi. Temos, similarmente, queap0(bx) =π0(by) =aq e tamb´em temos que ϕ(p) =m=ϕ(q), o que prova esta afirma¸c˜ao.

A terceira afirma¸c˜ao tamb´em ´e trivial. Para demonstrar a quarta afirma¸c˜ao, observe que sep∈Xk\Xi,ϕ(p) =m e assimξ(ϕ(p)) =ξ(m) =π0(bi) =· · ·=π0(bx) =ap, ondep=π1(bx). Logo,ξ(ϕ(p)) =ap para todop∈Xk\Xi, o que prova o resultado.

A quinta e ´ultima afirma¸c˜ao ´e simples: sek6=n, ent˜aoπ0(bk−1) =π0(bk) contradiz a maximalidade dek, conforme sua defini¸c˜ao.

Com a invariante demonstrada, podemos olhar para o que ocorre ap´os a ´ultima itera¸c˜ao do algoritmo, ou seja, quandoi=n. Especificamente, a primeira, segunda, terceira e quarta afirma¸c˜oes s˜ao precisamente a defini¸c˜ao de (ϕ, ξ) ser uma compress˜ao de coordenadas paraa0, a1, . . . , an−1, pois, visto que x7→π1(bx) ´e uma permuta¸c˜ao de [0..n−1] (pela defini¸c˜ao deb0, b1, . . . , bn−1), temos queXn= [0..n−1].

Finalmente, o fato de Im(ϕ) = [0..m−1] pode ser extra´ıdo da terceira afirma¸c˜ao da invariante.

4.5.3 Aplica¸c˜oes

A compress˜ao de coordenadas ´e uma t´ecnica que pode ser utilizada para reduzir problemas a casos particulares em que estruturas de dados eficientes podem ser utilizadas. Por exemplo, considere o problema do c´alculo do n´umero de subsequˆencias crescentes de uma determinada sequˆencia a0, a1, . . . , an−1 (possivelmente m´odulo algum valor para limitar a magnitude da resposta). Se (ϕ, ξ) ´e uma compress˜ao de coordenadas paraa0, a1, . . . , an−1, ent˜ao o n´umero de subsequˆencias crescentes ´e igual paraa0, a1, . . . , an−1eϕ(a0), ϕ(a1), . . . , ϕ(an−1). Contudo, temos queϕ(ai)< n para todo i, e assim podemos indexar as coordenadas, possibilitando uma solu¸c˜ao eficiente em O(nlogn) atrav´es do uso de ´arvores de Fenwick [8][11].

O que se pode observar deste exemplo ´e que a compress˜ao de coordenadas ´e um artif´ıcio muito ´util para lidar com problemas onde a ordem dos elementos ´e o que importa, n˜ao a magnitude deles. ´E um exerc´ıcio interessante demonstrar que o n´umero de retˆangulos que cobrem um ponto coberto por uma quantidade m´axima de retˆangulos numa lista finita de retˆangulos n˜ao varia se as coordenadas no eixoxe no eixoydos retˆangulos forem comprimidas.

Um resultado ligeiramente diferente ser´a demonstrado no final desta se¸c˜ao.

As estruturas de dados que iremos utilizar para resolver os problemas AUR e CCMR s´o s˜ao realmente eficientes se pudermos assumir que as coordenadas y dos eventos est˜ao contidas em um intervalo de n´umeros inteiros de comprimentoO(n). Se isso n˜ao se verificar, elas ser˜ao em geral terr´ıvelmente ineficientes.

Mas os problemas que iremos resolver tratam de coordenadasygerais. Assim, ´e o prop´osito desta se¸c˜ao estabelecer um resultado que nos possibilitar´a reduzir o problema CCMR a uma vers˜ao onde as coordenadasys˜ao limitadas, de forma que nossa estrutura de dados seja eficiente o suficiente para aplicarmos o teorema 4. O problema AUR tem uma redu¸c˜ao um pouco mais complicada, pois ela est´a fortemente ligada `a estrutura de dados que iremos utilizar, e assim n´os iremos postergar esta redu¸c˜ao at´e que tenhamos tratado dela com mais propriedade.

(14)

Teorema 6. Seja R = [R0, R1, . . . , Rn−1] uma lista de n retˆangulos onde Ri = [x0,i..x1,i]×[y0,i..y1,i]. Sejam a0, a1, . . . , a2n−1 ∈Z definidos por a2i =y0,i ea2i+1 =y1,i para todo i ∈[0..n−1]. Seja (ϕ, ξ) uma compress˜ao de coordenadas para a0, a1, . . . , a2n−1. Defina ent˜aoR0 = [R00, R01, . . . , R0n−1]como uma lista de nretˆangulos onde Ri0 = [x0,i..x1,i]×[ϕ(2i)..ϕ(2i+ 1)]. Ent˜ao ρZR2ZR20 e, se(x, y)∈σRZ20,(x, ξ(y))∈σZR2.

Demonstra¸c˜ao. Seja (x, y)∈ σZR20 um ponto coberto pelos retˆangulos R0i0, R0i1, . . . , R0ik−1, onde k = ρZR20 e ip 6=iq

sempre quep6=q, 06p, q < k. Sejaj =ip para algump∈[0..k−1]. (x, y)∈R0j ´e equivalente a x0,j 6x6x1,j

eϕ(2j)6y6ϕ(2j+ 1). Comoϕ(2j)6y 6ϕ(2j+ 1) e a imagem de ϕ´e cont´ıgua, y∈Im(ϕ). Dessa forma, pela proposi¸c˜ao 1, temos que

ϕ(2j)6y6ϕ(2j+ 1) ⇐⇒ ξ(ϕ(2j))6ξ(y)6ξ(ϕ(2j+ 1))

⇐⇒ a2j 6ξ(y)6a2j+1

⇐⇒ y0,j 6ξ(y)6y1,j, o que mostra que (x, ξ(y))∈Rj.

Assim, conseguimos um ponto, nominalmente (x, ξ(y)), coberto por ao menos k =ρZR20 retˆangulos de R, o que ´e suficiente para conclu´ırmos queρZR2ZR20. Dessa forma, se pudermos provar queρZR2ZR20, teremos conclu´ıdo a demonstra¸c˜ao, poisρZR2(x, ξ(y))>ρZR20ZR2 =⇒(x, ξ(y))∈σRZ2.

De fato, seρZR2= 0, o resultado ´e imediato. SeρZR2 6= 0 e (x, y)∈σRZ2 de forma queρZR2(x, y) =ρZR2, ent˜ao existeRi

emRtal quey>y0,i, pois do contr´arioρZR2(x, y) = 0. Assim podemos definiry0= max (

y0

n−1

[

i=0

{y0,i, y1,i}:y06y )

. Se (x, y)∈Ri para algum i, x0,i 6x6x1,i ey0,i 6y0 6y 6 y1,i, de forma que (x, y0) ∈Ri, o que mostra que ρZR2(x, y0)>ρZR2(x, y) =ρZR2. Mas, pela defini¸c˜ao dey0, existej∈[0..2n−1] tal queaj =y0. Assim,

(x, ϕ(j))∈R0i ⇐⇒ x0,i6x6x1,i∧ϕ(2i)6ϕ(j)6ϕ(2i+ 1)

⇐⇒ x0,i6x6x1,i∧a2i6aj6a2i+1

⇐⇒ x0,i6x6x1,i∧y0,i6y06y1,i,

o que ´e verdadeiro. Dessa forma, o ponto (x, ϕ(y)) pertence a R0i sempre que (x, y) ∈ Ri, o que mostra que ρZR20ZR2, como desej´avamos.

Por causa deste resultado, podemos desenvolver um algoritmo que, emO(nlogn) comprime as coordenadas no eixo y dos retˆangulos e ent˜ao executa C´elula-de-Cobertura-M´axima com a nova lista de retˆangulos, tamb´em em O(nlogn). A diferen¸ca ´e que agora a nossa estrutura de dados poder´a assumir que as coordenadas y dos eventos est˜ao no intervalo [0..2n−1], como quer´ıamos.

4.6 Arvores de Segmentos ´

4.6.1 Introdu¸c˜ao

Arvores de segmentos s˜´ ao estruturas de dados gerais, simples de programar, flex´ıveis e eficientes que operam sobre mon´oides. Contudo, infelizmente um estudo padr˜ao sobre estas ´arvores n˜ao cabe aqui porque suas estruturas gerais tiveram de ser enormemente modificadas para que elas fossem utiliz´aveis nos problemas que iremos resolver. Dessa forma apresentaremos duas vers˜oes destas estruturas de dados voltadas especificamente aos problemas CCMR e AUR.

Antes, no entanto, gostar´ıamos de descrever a estrutura geral das ´arvores de segmentos. ´Arvores de segmentos s˜ao formadas por um n´umero fixo mde folhas e m−1 n´os internos, cada um com exatamente dois filhos. Ainda, h´a uma restri¸c˜ao de que m deve ser uma potˆencia de 2, digamos m= 2k para algum k∈N. Podemos denominar os elementos da ´arvore por t1, t2, . . . , tm−1, tm, tm+1, . . . , t2m−1, onde os elementost1, t2, . . . , tm−1 s˜ao n´os internos e os elementostm, tm+1, . . . , t2m−1 s˜ao folhas. Ainda, de acordo com o estudo deheaps realizado em [3], o pai de um elementoticomi6= 1 ´e o elementotbi2ce os filhos do elementoticomi < ms˜ao os elementost2iet2i+1. Finalmente, quando nos referirmos aointervalo determinadopor um elementoti, estamos nos referindo ao conjunto cont´ıguo

(15)

Ii dos ´ındices das folhas que tˆem como ancestral o n´o ti menosm. Especificamente, o intervalo determinado pelo n´o ti ´e o conjunto

Ii=

m(i−2h)

2h ..m(i+ 1−2h)

2h −1

,

onde h´e a altura do elemento ti (sua distˆancia at´e a raiz da ´arvore). Os extremos deste intervalo s˜ao n´umeros inteiros porque 2h dividem= 2k, sendoka altura das folhas.

A figura 4 ilustra uma ´arvore de segmentos.

1

2 3

4 5 6 7

8 9 10 11 12 13 14 15

Figura 4: Uma ´arvore de segmentos comm= 8.

4.6.2 Arvores de Segmentos para o Problema CCMR´

A ´arvore de segmentos que iremos utilizar para resolver o problema CCMR ´e uma estrutura de dados que guarda intervalos de n´umeros inteiros. Em virtude da nossa compress˜ao de coordenadas no eixoydos retˆangulos da entrada, podemos assumir que estes intervalos de n´umeros inteiros tˆem extremos no intervalo [0..2n−1]. Na realidade, devido

`

a forma das ´arvores de segmentos, iremos assumir apenas que eles tˆem extremos no intervalo [0..2k−1], ondek∈N

´

e o menor n´umero natural tal quem= 2k>2n.

Inicialmente vamos estabelecer qual a invariante que nossa ´arvore de segmentos deve seguir.

Defini¸c˜ao 15. Uma ´arvore de segmentos t1, t2, . . . tm−1, tm, tm+1, . . . , t2m−1 ´e correta com respeito `a lista S de intervalos de n´umeros inteiros com extremos no intervalo[0..m−1]se

• A cada n´oti estiverem associados valores ci, mi∈N.

• Se definirmos Σ(i)como

dlog2(i+1)e−1

X

w=0

cb2iwc,

ent˜ao, para cada folhati,i>m,Σ(i) =ρZS(i−m).

• Para cada n´oti,mi= max

j∈Ii

ρZS(j) −Σ(i).

Intuitivamente, uma ´arvore de segmentos ´e correta com respeito a S se, para cada folha, a soma dos valoresci no caminho da raiz at´e a folha (incluindo ambos) ´e o n´umero de intervalos em S que cobrem a coordenada da folha e, para cada n´o ti, mi ´e o n´umero de intervalos que cobrem a coordenada mais coberta por intervalos em S no intervalo determinado pelo n´o menos a soma dosci no caminho da raiz at´e o n´o interno (incluindo ambos).

Um fato interessante ´e que na ´arvore n˜ao fica registrada a listaS: ela apenas ´e nossa referˆencia de quais intervalos foram inseridos mas n˜ao removidos da estrutura. Este fato ´e de suma importˆancia e est´a resumido no seguinte resultado.

Lema 1. SejamS eS0 duas listas de intervalos de n´umeros inteiros de extremos em[0..m−1]com a propriedade de queρZS(i) =ρZS0(i)para todo i∈[0..m−1]. Ent˜ao uma ´arvore de segmentost1, t2, . . . tm−1, tm, tm+1, . . . , t2m−1

´

e correta com rela¸c˜ao aS se, e somente se, ela for correta com rela¸c˜ao a S0.

(16)

Demonstra¸c˜ao. Trivial, pois a invariante ´e expressa apenas em termos deρZS(i) para coordenadasi∈[0..m−1].

Do jeito que a invariante foi proposta, podemos inicializar esta ´arvore de segmentos para que ela fique correta em rela¸c˜ao `a lista vazia simplesmente fazendoci =mi= 0 para todos os valores dei∈[1..2m−1]. J´a para adicionar ou remover segmentos, precisamos primeiro definir a seguinte subrotina.

CCMR-Auxiliar(r, i, j, a, b, δ) : 1 se a6b ent~ao

2 se a=i∧b=j−1 ent~ao

3 cr←cr

4 sen~ao

5 k← i+j2

6 CCMR-Auxiliar(2r, i, k, a,min{b, k−1}, δ) 7 CCMR-Auxiliar(2r+ 1, k, j,max{a, k}, b, δ) 8 mr←max{m2r+c2r, m2r+1+c2r+1}

Com este procedimento, que iremos discutir logo em seguida, podemos implementar a inser¸c˜ao e a remo¸c˜ao na

´

arvore de segmentos como segue.

CCMR-Insere(a, b):

1 CCMR-Auxiliar(1,0, m, a, b,1) CCMR-Remove(a, b):

2 CCMR-Auxiliar(1,0, m, a, b,−1)

Dedicaremos o restante desta se¸c˜ao a demonstrar que os procedimentos acima est˜ao corretos e a mostrar como implementar as linhas 13 e 17 deC´elula-de-Maior-Coberturaeficientemente. A an´alise de complexidade deles ser´a deixada para depois, visto que a estrutura dos algoritmos an´alogos para o problema AUR ´e muito parecida e compensa unificarmos as demonstra¸c˜oes.

Teorema 7. Sejam t1, t2, . . . , tm−1, tm, tm+1, . . . , t2m−1 uma ´arvore de segmentos correta em rela¸c˜ao a uma lista S de intervalos de n´umeros inteiros com extremos em [0..m−1], r ∈ [1..2m−1], [i..j−1] = Ir e [a..b] ⊆ Ir. Ent˜ao, ap´os uma execu¸c˜ao de CCMR-Auxiliar(r, i, j, a, b,1), a ´arvore de segmentos estar´a correta em rela¸c˜ao `a listaS mais uma c´opia do intervalo[a..b]exceto por valores demα comtαascendente estrito detr, isto ´e, podemos modificar estes valores de forma que a ´arvore fique correta. Ainda, se a listaScontiver uma c´opia do intervalo[a..b], ap´os uma execu¸c˜ao deCCMR-Auxiliar(r, i, j, a, b,−1), se todos os valores deci com i∈[1..2m−1]terminarem n˜ao-negativos, ent˜ao a ´arvore de segmentos resultante estar´a correta com rela¸c˜ao `a lista S menos uma c´opia do intervalo[a..b]exceto tamb´em pelos valores demα comtα ascendente estrito detr, isto ´e, podemos modificar estes valores de forma que a ´arvore fique correta.

Demonstra¸c˜ao. A prova ser´a por indu¸c˜ao emr, mas esta ser´a uma indu¸c˜ao ligeramente diferente do usual. Iremos assumir que o resultado vale para todor0 > re iremos prov´a-lo parar, sem casos base.

Para tal, considere uma execu¸c˜ao deCCMR-Auxiliar(r, i, j, a, b, δ) onder∈[1..2m−1], [i..j−1] =Ir, [a..b]⊆ Ir, δ ∈ {−1,1} e, caso δ =−1, existe uma c´opia de [a..b] na lista S. Se [a..b] = {}, a inser¸c˜ao ou remo¸c˜ao de uma c´opia deste intervalo n˜ao surte qualquer efeito sobre o valor deρZS(x) para qualquer coordenadax∈[0..m−1], e portanto, pelo lema 1, a invariante ´e mantida caso simplesmente n˜ao fa¸camos nada. Mas comoa > b, temos que a condi¸c˜ao na linha 1 deCCMR-Auxiliarn˜ao ´e satisfeita, e de fato o algoritmo n˜ao faz nada. Inclusive, a ´arvore resultante ´e correta mesmo sem alterar os valores de mαcomtα ascendente estrito detr.

Suponha ent˜ao que [a..b]6={}. A condi¸c˜ao na linha 1 ser´a satisfeita, o que nos permite assumir que o algoritmo passar´a ent˜ao pela linha 2. Se [a..b] = Ir = [i..j−1], ent˜ao a = i e b = j−1. Neste caso, com a inser¸c˜ao deste intervalo todos os valores xem Ir ter˜ao ρZS(x) incrementado em 1, e, com sua remo¸c˜ao, todos estes valores ser˜ao decrementados em 1. Assim sendo, como essas coordenadas s˜ao precisamente as coordenadas cujas folhas s˜ao descendentes (inclusive) detr, ´e suficiente incrementar o valor decrem δ. Mas ´e exatamente isto que o algoritmo faz, pois a condi¸c˜ao na linha 2 ´e satisfeita. Note quecr ficar negativo ´e um evento previsto pela hip´otese indutiva.

Agora note que se tα ´e descendente (inclusive) de tr, o valor de max

j∈Iα

ρZS(j) ´e aumentado em δ, mas mα n˜ao

Referências

Documentos relacionados

São considerados custos e despesas ambientais, o valor dos insumos, mão- de-obra, amortização de equipamentos e instalações necessários ao processo de preservação, proteção

Aos sete dias do mês de janeiro do ano 2002, o Perito Dr. OSCAR LUIZ DE LIMA E CIRNE NETO, designado pelo MM Juiz de Direito da x.ª Vara Cível da Comarca do São Gonçalo, para proceder

hospitalizados, ou de lactantes que queiram solicitar tratamento especial deverão enviar a solicitação pelo Fale Conosco, no site da FACINE , até 72 horas antes da realização

• Quando o navegador não tem suporte ao Javascript, para que conteúdo não seja exibido na forma textual, o script deve vir entre as tags de comentário do HTML. &lt;script Language

São por demais conhecidas as dificuldades de se incorporar a Amazônia à dinâmica de desenvolvimento nacional, ora por culpa do modelo estabelecido, ora pela falta de tecnologia ou

Em uma projeção de tempo de 10 anos, todas as estratégias de uso de sêmen sexado proporcionariam resultado econômico inferior ao da estratégia de uso de sêmen

Quando contratados, conforme valores dispostos no Anexo I, converter dados para uso pelos aplicativos, instalar os aplicativos objeto deste contrato, treinar os servidores

No código abaixo, foi atribuída a string “power” à variável do tipo string my_probe, que será usada como sonda para busca na string atribuída à variável my_string.. O