

Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostilas de Ciência da Computação da Universidade de São Paulo, Geometria Computacional, Análise de Algoritmos, Exercícios Lista 2
Tipologia: Exercícios
1 / 2
Esta página não é visível na pré-visualização
Não perca as partes importantes!


Departamento de Ciˆencia da Computa¸c˜ao Primeiro semestre de 2011
se existe uma coordenada x na qual ela ´e a mais alta. Intuitivamente, isso corresponde a uma parte de Li ser vis´ıvel se vocˆe olhar para baixo a partir de y = ∞. Escreva um algoritmo O(n lg n) que recebe uma seq¨uˆencia de n retas, como descrito acima, e devolve a subseq¨uˆencia delas que ´e vis´ıvel.
l r
h
Figura 1: Silhueta (l, h, r) de um pr´edio.
Considere uma cole¸c˜ao S = {(l 1 , h 1 , r 1 ),... , (ln, hn, rn)} com a silhueta de n pr´edios. Para cada n´umero positivo x, denote por Sx o conjunto {i : 1 ≤ i ≤ n e li ≤ x ≤ ri}. Denote ainda por h(Sx) o n´umero max{hi : i ∈ Sx}. O skyline de S ´e uma seq¨uˆencia (x 0 , t 1 , x 1 ,... , tk, xk) tal que
0 2 4 6 8 1012141618 2022 24 10 15 1822
Figura 2: Cole¸c˜ao de silhuetas S = {(15, 7 , 20), (4, 8 , 10), (18, 9 , 21), (2, 4 , 11), (7, 3 , 17), (6, 6 , 9), (14, 2 , 22)} e seu skyline (0, 0 , 2 , 4 , 4 , 8 , 10 , 4 , 11 , 3 , 15 , 7 , 18 , 9 , 21 , 2 , 22).
(a) Escreva um algoritmo que recebe o skyline de uma cole¸c˜ao S 1 de silhuetas de pr´edios e o skyline de uma cole¸c˜ao S 2 de silhuetas de pr´edios e devolve o skyline de S 1 ∪ S 2. Seu algoritmo deve consumir tempo O(n), onde n = |S 1 ∪ S 2 |. Explique por que seu algoritmo faz o que promete e por que consome o tempo pedido. (b) Escreva um algoritmo que recebe um inteiro n e uma cole¸c˜ao S de n silhuetas de pr´edios e devolve o skyline de S. Seu algoritmo deve consumir tempo O(n lg n). Explique por que seu algoritmo faz o que promete e por que consome o tempo pedido.