
Geometria Computacional
Departamento de Ciência da Computação – IME/USP
Segundo Semestre de 2011
Lista 7
1. Ajuste todos os algoritmos para fecho convexo vistos em aula para que funcionem
sem a hipótese simplificadora, ou seja, para que funcionem mesmo que a coleção de
pontos dada tenha vários pontos colineares. Teste cada um dos algoritmos resultan-
tes dos seus ajustes com uma entrada que consiste de npontos colineares.
2. [O’Rourke 3.4.1.1 – Embrulho: melhor caso] Determine o melhor caso do algoritmo
Embrulho, ou seja, encontre um conjunto de npontos no plano tal que o consumo
de tempo do algoritmo seja o menor possível em função de npara tal conjunto.
Quanto é este consumo de tempo em função do n?
3. [O’Rourke 3.4.1.2 – Embrulho: melhorias] Durante a execução do algoritmo Em-
brulho, algumas vezes é possível determinar alguns pontos que não podem ser
vértices do fecho convexo e portanto podem ser eliminados “on the fly”. Determine
algumas regras para identificar tais pontos. Qual é o conjunto de pontos que exige
mais trabalho do seu novo algoritmo?
4. [O’Rourke 3.5.6.1 – Graham: pior caso] Construa um conjunto de pontos para o
qual o enquanto da linha 5 do algoritmo de Graham faça o maior número possível
de iterações.
5. Implemente o algoritmo Incremental e veja como é o seu consumo de tempo
quando a entrada é um conjunto de npontos escolhidos uniformemente ao acaso no
quadrado [0 . . 1] ×[0 . . 1]. Experimentalmente qual é o seu consumo de tempo em
função de n?
6. [O’Rourke 3.7.1.3 – Incremental: versão ótima] Modifique o algoritmo Incre-
mental de tal forma que a sua complexidade de tempo seja reduzida para, no pior
caso, O(nlg n).
[Sugestão. Em um pré-processamento, ordene os pontos dados pela X-coordenada de tal
forma que o teste de pertinência possa ser evitado. Examine os pontos nesta ordem.]
7. [O’Rourke 3.4.1.4 – QuickHull: pior caso] Construa um conjunto de npontos, para
um ngenérico, para o qual o algoritmo QuickHull consome tempo quadrático.
8. [O’Rourke 3.4.1.5 – QuickHull: pior caso] Argumente que o QuickHull, como
o algoritmo Embrulho, é sensível à saída e consome tempo O(nh), onde né o
número de pontos e hé o número de pontos na fronteira do fecho convexo.
9. [O’Rourke 3.4.1.6 – QuickHull: estudo experimental] Implemente o QuickHull
e veja como é o seu consumo de tempo quando a entrada é um conjunto de npontos
escolhidos uniformemente ao acaso no quadrado [0 . . 1]×[0 . . 1]. Experimentalmente
qual é o seu consumo de tempo em função de n?
10. [O’Rourke 3.4.1.7 – QuickHull: consumo esperado de tempo] Argumente que o
consumo esperado de tempo do QuickHull éO(n)quando este executa com uma
instância que consiste de npontos escolhidos uniformemente ao acaso no quadrado
[0 . . 1] ×[0 . . 1].
1