Vous êtes sur la page 1sur 90

GEOMETR

IA COMPUTACIONAL
Notas del curso 98/99
Gregoria Blanco Viejo
Departamento de Matematica Aplicada
Escuela Universitaria de Inform atica
Universidad Politecnica de Madrid

Indice de Materias

Indice i
Pr ologo iii
Agradecimientos v
1 Introduccion a la Geometra Computacional 1
1.1 Que es la Geometra Computacional? . . . . . . . . . . . . . . . . . . . . . 1
1.2 Algunas aplicaciones de la Geometra Computacional. . . . . . . . . . . . . 5
1.2.1 Fuentes bibliogr acas . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Terminologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.1 Familias notables de polgonos . . . . . . . . . . . . . . . . . . . . . 12
1.3.2

Area signada de un tri angulo . . . . . . . . . . . . . . . . . . . . . . 15
1.3.3 Lecturas complementarias . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Cierre convexo 19
2.1 Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Cierre convexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 Algoritmos para calcular envolventes convexas . . . . . . . . . . . . . . . . . 23
2.3.1 Marcha de Jarvis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.2 Scan de Graham . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 Complejidad de un problema . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5 Lecturas complementarias recomendadas . . . . . . . . . . . . . . . . . . . . 34
3 Cierre convexo de un polgono 35
3.1 Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Cierre convexo de un polgono . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3 Algoritmos de Lee y Melkman . . . . . . . . . . . . . . . . . . . . . . . . . . 39
i

ii

INDICE DE MATERIAS
3.3.1 Algoritmo de Lee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.2 Algoritmo de Melkman . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4 Referencias y lecturas complementarias recomendadas . . . . . . . . . . . . 45
4 Diametro y calibres 47
4.1 Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 Di ametro de una nube de puntos . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3 Di ametro de un polgono convexo . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3.1 N umero de parejas de antpodas de un convexo . . . . . . . . . . . . 50
4.3.2 C alculo de las parejas de antpodas . . . . . . . . . . . . . . . . . . . 53
4.3.3 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.4 Otras aplicaciones de la rotaci on de calibres . . . . . . . . . . . . . . . . . . 59
4.4.1 Anchura de una nube de puntos . . . . . . . . . . . . . . . . . . . . 59
4.4.2 Rectangulo de area mnima que contiene a una nube . . . . . . . . . 62
4.5 Referencias y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . 66
5 Triangulaciones 67
5.1 Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2 Problema de la galera de arte . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3 Triangulaci on de un polgono . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3.1 Grafo dual de una triangulaci on . . . . . . . . . . . . . . . . . . . . 73
5.4 Algoritmos de triangulaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.4.1 Triangulaci on de polgonos especiales . . . . . . . . . . . . . . . . . . 76
5.4.2 Algoritmo de Mehlhorn . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.5 Referencias y lecturas complementarias . . . . . . . . . . . . . . . . . . . . . 85

Pr ologo
Estas notas son el resultado de seis a nos de docencia en Geometra Computacional en la
Escuela Universitaria de Inform atica de la Universidad Politecnica de Madrid. Recoge
parcialmente el temario de la asignatura de libre elecci on que con este nombre aparece en
el curriculum de Ingeniera Tecnica de Sistemas. No pretende ser mas que unas notas de
clase y una modesta gua en la b usqueda bibliogr aca para los estudiantes a los que va des-
tinado este curso, siempre teniendo en cuenta sus conocimientos previos en matematicas,
algortmica y estructuras de datos.
G. Blanco
iii

iv

INDICE DE MATERIAS

Agradecimientos
Quisiera agradecer, en primer lugar, a los estudiantes del curso 98/99, por su labor cons-
tante en la caza de imprecisiones y erratas, y por su indomable rebelda ante la terrible
frase esto es obvio. Al profesor Gregorio Hern andez Pe nalver por su paciente lectura, sus
nas sugerencias y sus acertadas crticas, siempre constructivas. Y por ultimo, al profesor
Jes us Garca L opez de Lacalle el apoyo constante y los sabios consejos que suele brindarme
en la revisi on de cuanto material elaboro.
G. Blanco
v

Tema 1
Introduccion a la Geometra
Computacional
1.1 Que es la Geometra Computacional?
La Geometra Computacional es una disciplina que se ocupa del dise no y an alisis de al-
goritmos que resuelven problemas geometricos. En ella concurren elementos puramente
matematicos con cuestiones y herramientas propias de la inform atica. Se desprende por
tanto, que es un campo bastante reciente (20 30 a nos). Sin embargo, sus antecedentes
pueden encontrarse en la Grecia Cl asica, hace 2600 a nos, donde los problemas geometricos
que se planteaban los matematicos de la epoca eran abordados desde el punto de vista
constructivo, es decir algortmico.
Tomemos en consideracion, por ejemplo, un problema planteado en aquellos tiempos.
Supongamos que tenemos dos granjas A y B en el campo y un camino r que, respectiva-
mente, se pueden representar por los dos puntos y la recta de la gura. Se quiere ir de la
granja A a la granja B para llevar ciertos suministros pero antes hay que pasar por cierto
almacen situado en un punto C del camino. Se trata de encontrar la posici on de C que
minimice la longitud del trayecto, es decir, la suma de las distancias de A a C y de C a B.
A
B
C ?
r
A'
A
B
C
r
d
d
d'
1
1
1
1
d'
d'
d
2
2
C'
Ilustraci on de la prueba de que el camino ACB es mnimo (Teorema de Heron).
Una soluci on constructiva consiste en detallar los pasos y c alculos que se han realizar
para obtener la posici on de C. En este caso seran:
Paso 1: Hallar el punto simetrico A

de A respecto de r.
Paso 2: Trazar el segmento A

B.
Paso 3: La interseccion de A

B y r es el punto C buscado.
1

2 TEMA 1: INTRODUCCI

ON A LA GEOMETRA COMPUTACIONAL
Y todos los calculos y construcciones pueden realizarse usando s olo regla y comp as.
Evidentemente, el paso de herramientas de c alculo tales como la regla y el compas
utilizadas por los griegos al ordenador electr onico digital, supone grandes cambios en el
caracter y en el planteamiento de los problemas geometricos que se estudian. El ordenador
aporta la capacidad de manejar un n umero grande de datos (elementos geometricos) y
la rapidez en el c alculo. De hecho, son caractersticas habituales en los problemas que se
abordan en Geometra Computacional el tratamiento de objetos geometricos relativamente
simples: puntos, polgonos, segmentos, rectas, etc. pero en un gran n umero de ellos.
Por ejemplo, consideremos el problema, en cierto modo recuerda al anterior, de situar
el almacen entre n granjas pero ahora de manera que se minimice la distancia entre el
almacen y la granja m as lejana. Si se representan las granjas como puntos en el plano, el
problema se traduce en terminos geometricos en como encontrar el crculo (en particular
su centro que es lo que nos interesa) de area mnima (o radio mnimo) que contenga a
todos los puntos.
Crculo de area mnima que contiene una nube de puntos.
Frecuentemente se tiene que un mismo problema puede resolverse mediante distintos
algoritmos y es preciso establecer criterios que nos permita decidir cual es mejor. En
general se atiende a razones de economa en cuanto al n umero de operaciones que necesita
el algoritmo para resolver el problema. La complejidad de un algoritmo no es sino una
medida del coste que supone su ejecucion tanto en tiempo (o n umero de operaciones
elementales que ha de realizar) como en espacio (o unidades de memoria requeridas para
almacenar y manipular los datos a lo largo de la ejecuci on) y vendr a dada en funci on del
n umero de datos de entrada.
El estudio de la complejidad de un algoritmo puede llevarse a cabo principalmente bajo
dos puntos de vista:
Complejidad en el peor de los casos.
Complejidad en media (o esperada).
La primera consiste en medir la complejidad del algoritmo atendiendo a su ejecuci on
cuando trata los datos del problema en el caso m as desfavorable, entendiendose por desfa-
vorable el m as costoso.
La segunda consiste en medir la complejidad haciendo un promedio entre todos los
casos (favorables y no favorables) atendiendo a la probabilidad de que aparezcan como
entrada. Para ello se supone que los datos de entrada vienen dados conforme a cierta
distribuci on de probabilidad y se estudia cu al es el tiempo esperado de ejecucion.

1.1. QU

E ES LA GEOMETRA COMPUTACIONAL? 3
Si n es el tama no del conjunto de datos de entrada de un determinado algoritmo, sus
complejidades en tiempo y en espacio son funciones positivas de n y, en cuanto a su an alisis,
se esta especialmente interesado en su comportamiento asintotico, es decir, en saber como
se comportan para valores grandes de n.
La notaci on que utilizaremos en el estudio asint otico de estas funciones es la estandar
propuesta por Knuth:
Si f(n) y g(n) dos funciones positivas se dir a que
1. f es o grande de g y se notar a f(n) = O(g(n)) si existen una constante C > 0 y
un n umero natural n
0
> 0 tales que
f(n) < Cg(n) n n
0
2. f es omega de g y se notar a f(n) = (g(n)) si g(n) = O(f(n))
3. f es theta de g y se notar a f(n) = (g(n)) si f(n) = O(g(n)) y f(n) = (g(n)).
Observese que
Si lim
f(n)
g(n)
= L IR entonces, si L = 0, f(n) = (g(n)), y si L = 0, f(n) = O(g(n)).
La igualdad en esta notaci on (por ejemplo f(n) = O(g(n))) no es simetrica y para
evitar confusiones en algunos libros se sustituye por el smbolo . Hecha esta
aclaracion, conamos en que tal confusi on no se produzca.
Queda por determinar que se entiende por elemental en cuanto al tipo de opera-
ciones que se pueden realizar a lo largo de un algoritmo. Evidentemente es una cuesti on
que depende directamente de cu an sosticada sea la maquina de c alculo a utilizar. Para
ilustrarlo consideremos por ejemplo el siguiente problema:
Dado un segmento AB y un punto C, trasladar el segmento hasta que C sea uno de
sus extremos.
C
D
A
B
Traslacion de un segmento con regla y comp as.
Supongamos en primer lugar que disponemos para su resoluci on de una regla (ilimitada
y sin graduar) y un comp as, y consideremos en segundo lugar que en vez de tener el compas

4 TEMA 1: INTRODUCCI

ON A LA GEOMETRA COMPUTACIONAL
usual tenemos uno con la propiedad de que al levantarlo del papel colapsa, es decir, es
incapaz de mantener la abertura en el aire. Dependiendo de las operaciones b asicas o
primitivas que estas herramientas nos permiten podemos obtener sendos algoritmos para
resolver el problema. Evidentemente el n umero de pasos necesarios en uno o en otro sera
menor cuanto m as potentes sean las maquinas.
Algoritmo 1: (Regla y compas usual)
Paso 1: Pinchando el comp as en A y abriendolo hasta B tomar la longitud del segmento
AB.
Paso 2: Trazar una circunferencia de centro C y radio AB.
Paso 3: Tomar la longitud del segmento AC.
Paso 4: Hallar la intersecci on D entre la circunferencia del paso 2 y la que tiene por centro
B y radio la longitud del segmento AC.
Paso 5: Trazar el segmento CD.
Algoritmo 2: (Regla y compas colapsante)
Paso 1: Trazar el segmento BC.
Paso 2: Trazar la circunferencia con centro B y radio la longitud de BC.
Paso 3: Trazar la circunferencia con centro C y radio la longitud de BC.
Paso 4: Trazar la recta que pasa por los dos puntos de intersecci on entre las dos circun-
ferencias anteriores y llamar M (el punto medio del segmento BC) a la inter-
seccion entre esta recta y el segmento BC.
Paso 5: Trazar la recta que pasa por M y A.
Paso 6: Trazar la circunferencia con centro M y radio la longitud de MA y llamar D a
la interseccion de esa circunferencia y la recta del paso 5.
Paso 7: Trazar el segmento CD.
Otro ejemplo podemos encontrarlo en uno de los tres problemas cl asicos griegos que
consista en la triseccion del angulo, es decir dado un angulo cualquiera dar un algoritmo
que permita dividirlo en tres partes iguales. Este problema qued o abierto hasta el siglo
pasado en que se demostro que no era posible resolverlo con las m aquinas de c alculo
propuestas: regla y comp as. La razon b asicamente esta en que para poderlo resolver es
preciso calcular la raz c ubica de 3, y la extracci on de races c ubicas de n umeros no es una
operaci on que pueda resolverse con regla y comp as. Los n umeros que se pueden construir
con regla y comp as son aquellos que se obtienen de intersecar rectas y circunferencias,
es decir de resolver ecuaciones de primer y segundo grado (normalmente con coecientes
racionales), por tanto nunca aparecen races c ubicas de n umeros racionales.
Todo esto nos conduce a la necesidad de especicar el tipo de operaciones primitivas
que nos estan permitidas por la m aquina. A dicha descripci on o especicacion junto con
el coste que requiere cada una de las operaciones se denomina modelo de computaci on. El
mas popular en Geometra Computacional es el modelo RAM (random access machine) y
sus primitivas son:

1.2. ALGUNAS APLICACIONES DE LA GEOMETRA COMPUTACIONAL. 5
Operaciones aritmeticas (suma, resta, producto y divisi on).
Comparacion entre n umeros reales (=, <, >).
Acceso a memoria.
A menudo se utiliza otro modelo RAM m as potente en el que se admiten tambien como
primitivas el c alculo de logaritmos, races k-esimas, o funciones trigonometricas.
En cuanto al coste en tiempo de las operaciones, supondremos que cada una puede
ejecutarse en una unidad de tiempo y en cuanto al coste de espacio, supondremos que un
n umero real es almacenado en una posici on de memoria que ocupa una unidad.
1.2 Algunas aplicaciones de la Geometra Computa-
cional.
Uno de los aspectos mas interesantes de la Geometra Computacional es la gran aplica-
bilidad de sus resultados.
Tal y como se explica en [NH], el signicado del termino computaci on se ha expandido
notoriamente desde la introducci on de los ordenadores, har a ahora unos cincuenta a nos.
Atendiendo a los objetos que procesan, destacan tres tipos de aplicaciones de los orde-
nadores. La primera generaci on va a ser la de los calculos numericos, aplicados sobre todo
a problemas cientcos y tecnicos. La segunda, propiciada por necesidades m as comerciales
y administrativas, incorporaba largas listas de datos (por ejemplo alfabeticos), con vistas
a como leer, almacenar, modicar, seleccionar, e imprimir esos datos.
Todo esto naturalmente pervive, y con fuerza, pero vivimos una tercera generaci on de
aplicaciones dominada por el procesamiento de informaci on geometrica y gr aca, presente
en areas tan diversas como son la medicina, la cartografa, el control de robots o el dise no
artstico. La Geometra Computacional ha emergido, ciertamente, por la necesidad de dar
respuesta a esta nueva y creciente demanda.
Se podra decir que las aplicaciones van a preceder la disciplina, y ahora que esta tiene
ya un n ucleo teorico solidamente constitudo, como sus vertientes pr acticas corresponden
a tecnologa de maxima vanguardia, la demanda de resultados contin ua con la misma
fuerza y exigencia que al principio. Por eso diremos que, en Geometra Computacional,
las aplicaciones tienen un protagonismo esencial.
Dentro de los campos de aplicacion m as directamente relacionados con la disciplina
destacaremos la Informatica Gr aca, el Dise no y Fabricaci on Asistida por Ordenador
(CAD/CAM), la Caracterizaci on y Reconocimiento Autom atico de Formas (Pattern Recog-
nition), el Dise no VLSI, la visi on Articial, la Cartografa y la Rob otica.
A continuaci on mostramos algunos problemas particulares que se plantean en algu-
nas de estas areas, y en las que se han realizado contribuciones (en algunos casos, muy
importantes) por parte de la Geometra.

6 TEMA 1: INTRODUCCI

ON A LA GEOMETRA COMPUTACIONAL
Gracos por Ordenador
Lo que se entiende hoy por Gr acos por Ordenador (o Inform atica Gr aca), pese a ser
una rama de Inform atica que tambien se ocupa de los fenomenos geometricos desde el punto
de vista del calculo, es un area bien distinta de la Geometra Computacional. Mientras
que esta se ocupa de proporcionar los fundamentos te oricos involucrando el estudio de
algoritmos y de estructuras de datos para hacer c alculos geometricos, la Inform atica Gr aca
se ocupa del desarrollo pr actico del software, hardware y algoritmos necesarios para crear
gr acos en la pantalla del ordenador.
Sin embargo, ambas tienen algunas tecnicas similares (otras muy distintas), y sin duda
alguna, se inuencian mutuamente. Desde el ambito de los inform atica gr aca se dan a
conocer problemas pr acticos a la comunidad de estudiosos de la Geometra Computacional,
y la Geometra Computacional aporta algoritmos r apidos que los resuelven. Se espera
que la Geometra Computacional haga grandes mejoras a los algoritmos est andar usados
en gr acos por ordenador. La Geometra Computacional tambien proporciona nuevas
maneras de pensar los problemas a los programadores de gr acos.
Una cuestion muy importante en inform atica gr aca es la representacion realista de
escenas complejas. Uno de los requisitos es la eliminacion de lneas y supercies ocultas a
partir de un modelo tridimensional. Las primeras soluciones razonablemente satisfactorias
van a iniciar areas importantes de investigaci on dentro de la geometra computacional,
concretamente los problemas de interseccion. Los resultados de estas investigaciones han
dado nuevas aplicaciones en inform atica gr aca. De modo que hay una interacci on continua
en este problema como en otros muchos otros.
Ocultaci on de lneas.
Otros problemas fundamentales que aparecen en Gr acos son: el trazado de rayos, la
aproximaci on de contornos mediante poligonales y la triangulaci on de polgonos. En todos
ellos la Geometra Computacional ha realizado recientemente contribuciones signicativas.
Por ejemplo consideremos lo siguiente.
A
C
D
B
C
(a) Cuatro c amaras colocadas en A, B, C y D bastan para vigilar esta galera.
(b) Regi on visible por la c amara C.

1.2. ALGUNAS APLICACIONES DE LA GEOMETRA COMPUTACIONAL. 7
En una habitaci on poligonal (galera de arte) en el plano se colocan cuatro c amaras de
manera que se pueda vigilar con ellas toda la sala. Si se est a interesado en averiguar cu al
es la region que es visible por una sola c amara esto es equivalente a eliminar las porciones
del polgono que quedan ocultas. Uno de los algoritmos est andar usado para resolver este
problema de lneas ocultas en el plano es el debido a Freeman y Loutrel hace m as de diez
a nos antes de lo que se atribuye como el nacimiento de la Geometra Computacional. Dicho
algoritmo corre en tiempo O(n
2
) donde n es el n umero de lados del polgono. Utilizando
tecnicas desarrolladas para el dise no de algoritmos en Geometra Computacional, ElGindy
y Avis consiguieron un algoritmo para este problema que corre en tiempo ( optimo) O(n),
cuando n es grande esto supone una mejora sustancial en la velocidad de ejecuci on.
Fabricacion industrial
Veamos algunos ejemplos en este campo.
Modelado por inyecci on.
Una de las tecnicas utilizadas en la fabricaci on industrial de objetos consiste en utilizar
moldes en los que se inyectan ciertos materiales lquidos que al solidicar dan lugar al objeto
requerido con la forma imprimida por el molde. Durante la inyecci on del lquido, el molde
es colocado en una posicion favorable de manera que no aparezcan defectos en la supercie
tales comos burbujas de aire y se garantice un llenado completo. Dos de los problemas
que surgen en este contexto son: dado un objeto tridimensional como molde , establecer si
existe una orientaci on que permite el llenado del molde usando s olo un punto de inyecci on
y determinar una orientaci on que permita el llenado m as completo. Habitualmente en la
pr actica se sigue un proceso de prueba y error utilizando ciertas tecnicas intuitivas.
Punto de inyeccin
Gravedad
Modelado por inyecci on.
Para intentar evitar este tipo de proceso de prueba y error, se han estudiado los aspectos
geometricos y computacionales del modelado por inyecci on y se han dise nado algoritmos
ecientes para resolver estos problemas cuando el molde es un polgono en el plano y para
cuando el molde es de cierta clase de poliedros en el espacio.
Estereolitografa.
Otra tecnica de fabricaci on de objetos es la denominada estereolitografa. Consiste en
un tanque de pl astico lquido fotosolidicable, una mesa controlada por ordenador cuyo

8 TEMA 1: INTRODUCCI

ON A LA GEOMETRA COMPUTACIONAL
soporte puede ser movido hacia arriba y hacia abajo dentro del tanque, y un l aser por
encima del tanque que puede iluminar la supercie del lquido y puede moverse en un
plano horizontal. El sistema funciona de la siguiente manera: al principio la mesa est a
justo bajo la supercie del pl astico y el laser es controlado para moverse de manera que la
luz incida sobre la supercie del pl astico y dibuje la secci on base del objeto a construir.
Cuando la luz del l aser entra en contacto con el pl astico, este solidica y as se forma la
primera seccion del objeto y queda sobre la mesa. En el siguiente paso, la mesa es bajada
una peque na cantidad y el l aser dibuja la siguiente secci on del objeto. La luz del l aser
penetra en el lquido lo justo para que esta secci on quede soldada a la obtenida en el paso
anterior. Este proceso es repetido hasta que el objeto quede formado completamente.
El problema que aqu aparece es el de decidir si el dise no de un objeto tridimensional
es o no factible para un sistema CAD/CAM desarrollado y patentado por 3D Systems of
Sylmar, CA que emplea este proceso de estereolitografa.
A este respecto, se ha obtenido una caracterizacion de los objetos poliedricos que pueden
ser construidos usando esta tecnica, y tambien se han dise nado algoritmos ecientes para
determinar cuando un objeto poliedrico es factible o no.
Lser
A
T
S
L
Formaci on de un objeto mediante tecnicas estereolitogracas.
Robotica
Una de las principales aplicaciones de Geometra Computacional tiene que ver con
problemas de rob otica. Mencionemos aqu dos de ellos: la planicaci on de movimientos y
el ensamblaje automatico.
En el primero, el problema tpico involucra un robot, generalmente modelizado como
un punto, un disco, o un polgono en dos dimensiones, o bien como un poliedro en tres
dimensiones que ha de moverse en el espacio entre una coleccion de obst aculos. Aqu,

1.2. ALGUNAS APLICACIONES DE LA GEOMETRA COMPUTACIONAL. 9
una de las preguntas usuales es puede moverse el robot desde un punto A a otro B sin
colisionar con los obst aculos? Si es as, se debera encontrar la trayectoria m as corta.
B
A A
B
Localizacion de una trayectoria libre de colisiones.
El ensamblaje autom atico es un caso especial de problema de planicacion de movimien-
tos en el que consideramos una coleccion de objetos y nos preguntamos si puede ser sepa-
rada en partes o unir en una conguraci on determinada y si es as, que tipo de movimientos
(giros, traslaciones, etc.) garantizan esa respuesta. Una pregunta tpica es si una coleccion
de objetos pueden ser separados moviendo s olo un objeto cada vez y s olo una vez. Esto
siempre es cierto para objetos convexos en el plano (no lo es en el espacio) y la gura
muestra un ejemplo de conguraci on de objetos que s olo se puede separar moviendo si-
mult aneamente dos de las tres piezas que la componen.
1.2.1 Fuentes bibliogracas
[AG] B. Asberg, G. Blanco, P. Bose, J. Garca L opez, M. Overmars, G. Toussaint, G.
Wilfong, B. Zhu: Feasibility of Design in Stereolithography. LNSC 761.
[Bo] P. Bose: Geometric and Computational Aspects of Injection Molding. Pro. Third
International Conf. on CAD and Computer Graphics, Agosto 1993, Beijing, China,
pp. 237 - 242.
[Bo] P. Bose: Geometric and Computational Aspects of Manufacturing Process. Tesis
doctoral, T. R. n
o

95-02, School of Computer Science, McGill University, Montreal


(Canad a).
[H] F. Hurtado: La Geometria Computacional una geometria del nostre temps. Informe
Tecnico del Dep. de Matem`atica Aplicada II, U.P.C.
[NH] J. Nievergelt, K. Hinrichs: Algorithms & Data Structures. Prentice Hall, 1993.
[PS] F. Preparata, I. Shamos: Computational Geometry. An Introduction. Springer Ver-
lag, 1985.
[To] G. Toussaint: Scanning the Issue. Proceedings of the IEE, vol. 80, n
o

9, Septiembre
1992.

10 TEMA 1: INTRODUCCI

ON A LA GEOMETRA COMPUTACIONAL
1.3 Terminologa
A continuaci on introduciremos algunos de los elementos b asicos en Geometra Computa-
cional. Tal y como se ha visto en las secciones anteriores, el objetivo es resolver problemas
geometricos desde el punto de vista algortmico. Y por tanto, se est a especialmente intere-
sado en objetos geometricos susceptibles de tratamiento computacional, es decir aquellos
que admitan una descripci on nita.
Salvo raras excepciones nos limitaremos a la geometra del plano, aunque muchas de
las deniciones y resultados que veremos pueden extenderse de manera natural al espacio.
El elemento geometrico mas sencillo es el punto, que en el plano vendr a dado por un
par ordenado de n umeros reales, generalmente sus coordenadas cartesianas. La recta que
pasa por dos puntos, p, q, es el lugar geometrico de los puntos
x = p +

pq / IR.
El rayo que emana de p y pasa por q es la semirrecta de puntos
x = p +

pq / 0.
El segmento de extremos p y q es el conjunto
pq = {p +

pq / 0 1} = {(1 )p + q / 0 1}.
p
q
p
q
p
q
Recta, rayo, segmento.
Un conjunto ordenado de n puntos distintos en el plano (v
1
, v
2
, . . . , v
n
) determina una
(cadena) poligonal que es la uni on de los segmentos v
1
v
2
, v
2
v
3
, . . . , v
n1
v
n
. A estos seg-
mentos se les llama lados y a sus extremos vertices de la poligonal. Lados adyacentes en
una poligonal son aquellos que son consecutivos en la lista ordenada de segmentos anterior.
Una poligonal simple es aquella en la que dos lados, si se cortan, lo hacen exactamente
en uno de sus extremos y ademas son adyacentes.
(a) (b)
v
8
v
7
v
10
v
9
v
11
v
8
v
5
v
4
v
3
v
2
v
6
v
1
v
12
v
13
v
5
v
4
v
3
v
2
v
6 v
7
v
1
(a) Cadena poligonal (no simple). (b) Poligonal simple.

1.3. TERMINOLOGA 11
Una poligonal cerrada determinada por (v
1
, v
2
, . . . , v
n
) es la uni on de segmentos
v
1
v
2
, v
2
v
3
, . . . , v
n1
v
n
, v
n
v
1
.
Una poligonal cerrada simple determina una curva de Jordan
1
que divide al plano en
tres regiones: una interior a la curva, otra exterior, y la propia curva. Se llama polgono
al conjunto de puntos de la regi on interior junto con los puntos de la poligonal cerrada.
El interior del polgono P, Int(P), es el conjunto de puntos de la regi on interior. La
frontera del polgono, Fr(P) o P, es el conjunto de puntos de la poligonal cerrada
simple. Y el exterior del polgono, Ext(P), es el conjunto de puntos de la regi on exterior.
v
10
v
8
v
9
v
5
v
4
v
3
v
2
v
6
v
7
v
1
v
11
Ext(P)
Int(P)
Fr(P)
Poligonal cerrada simple y divisi on del plano que origina.
Un polgono queda perfectamente determinado por el conjunto de sus vertices ordena-
dos seg un aparecen al recorrer su frontera, y una orientacion que nos permita conocer
donde queda su interior al recorrer su frontera. As, si recorremos la frontera en sentido
horario dejaremos el interior a nuestra derecha, en cambio si la recorremos en sentido an-
tihorario lo dejaremos a la izquierda. Caben pues dos orientaciones posibles para recorrer
la frontera: la negativa (horaria) y la positiva (antihoraria).
(a) (b)
v
10
v
8
v
9
v
5
v
4
v
3
v
2
v
6
v
7
v
1
v
11
v
10
v
8
v
9
v
5
v
4
v
3
v
2
v
6
v
7
v
1
v
11
(v
1
, v
2
, . . . , v
11
) describe a P con orientaci on positiva (a), y (v
1
, v
11
, v
10
, . . . , v
2
) lo hace con
orientaci on negativa (b).
Salvo que se indique lo contrario, supondremos siempre que un polgono viene dado
por una lista cclica con sus vertices ordenados con orientaci on positiva. Y la notaremos
simplemente (v
1
, v
2
, . . . , v
n
), entendiendo que el siguiente a v
n
es v
1
. La estructura de datos
mas adecuada para representarla es la lista circular doblemente enlazada.
1
Curva cerrada sin autointersecciones.

12 TEMA 1: INTRODUCCI

ON A LA GEOMETRA COMPUTACIONAL
1.3.1 Familias notables de polgonos
En la pr actica se ha comprobado que determinados algoritmos que se ejecutan sobre
polgonos tienen un mejor rendimiento, en cuanto a velocidad, si el polgono de entrada
tiene ciertas buenas propiedades. Otras veces, los problemas reales involucran polgonos
con caractersticas especiales y resulta mas facil encontrar algoritmos que resuelvan esos
problemas para dichos polgonos que para polgonos generales.
A continuaci on veremos algunos tipos especiales de polgonos.
Un polgono P es convexo si para todo x, y P el segmento xy P.
x
y
x
y
(a) (b)
(a) Polgono convexo. (b) Polgono no convexo: x e y no se ven.
Esta propiedad de contener al segmento que une dos puntos admite una interpretaci on
curiosa en terminos de visibilidad: x, y P se ven interiormente si xy P, o lo que
es lo mismo, xy Ext(P) = . An alogamente se dice que se ven exteriormente si
xy Int(P) = .
Un polgono P es estrellado si existe un punto x P tal que para todo y P el
segmento xy P.
Es decir, existe un punto en P que ve interiormente a todo el polgono.
(a)
x
x
x
(b)
(a) Polgonos estrellados. (b) Polgonos no estrellados.
El n ucleo de un polgono P, ker(P), es el conjunto de puntos de P que ven interior-
mente a P.
De modo que, en terminos del n ucleo,
P es convexo si, y solo si, ker(P) = P, y
P es estrellado si, y solo si, ker(P) = .

1.3. TERMINOLOGA 13
Estrellados y sus respectivos n ucleos (mas sombreados).
Si uno de los vertices del polgono est a en el n ucleo, entonces se dice que es un abanico.
Un polgono debilmente visible desde un lado es aquel en el que hay un lado l del
polgono tal que para cada punto y del polgono existe un punto x l que ve interiormente
a y.
x x' x''
l
Todo punto de P se ve desde alg un punto de l, en particular desde x, x

o x

.
En terminos de iluminaci on se interpreta de la siguiente manera. Para iluminar el
interior de un polgono estrellado basta colocar una bombilla en un punto de su n ucleo, y
para un debilmente visible desde un lado, bastara con colocar una barra uorescente a lo
largo del lado l.
Un polgono P debilmente visible desde el exterior, se abreviar a DVE, es aquel
en el que para todo x Fr(P) existe un rayo r que emana de x tal que r Int(P) = .
La interpretaci on en terminos de visibilidad o vigilancia es la siguiente. Supongamos
que el polgono representa una fortaleza y un guardia patrulla a lo largo del muro exterior
(la frontera). Ser DVE signica que en cada posici on de su recorrido siempre hay una
direccion en la que se ve el horizonte.
(a) (b)
x
(a) Polgono DVE. (b) Polgono no DVE: desde x no se ve el horizonte en ninguna direcci on.
En terminos de iluminaci on, consideremos una circunferencia sucientemente grande
para que contenga totalmente al polgono. Para iluminar el muro exterior de la fortaleza (o

14 TEMA 1: INTRODUCCI

ON A LA GEOMETRA COMPUTACIONAL
edicio de interes turstico) basta con colocar un uorescente circular sobre la circunferencia
anterior.
Un polgono P se dice que es monotono respecto de una direccion D si toda recta r
ortogonal a la recta D verica que
r P =

o bien
un intervalo cerrado en r (Obs.: un punto lo es).
r
1
r
2
r
3
r
4
D
D
P mon otono respecto a D.
r
D
r'
P no mon otono respecto a D. Tanto r como r

interseca a P en mas de un intervalo.


Se dice que P es monotono, si lo es respecto de alguna direccion.
Tambien puede darse una denici on alternativa atendiendo s olo a la frontera de P: un
polgono es monotono cuando su frontera se puede descomponer en dos cadenas mon otonas
respecto a la misma direccion. Entendiendo por cadena poligonal mon otona respecto a D
si cualquier recta ortogonal a D que interseca a la cadena lo hace en un punto o en un
lado.
(a) (b)
r
1
r
2
r
3
r
4
D
r
D
(a) Cadena mon otona respecto a D. (b) Cadena no mon otona respecto a D.

1.3. TERMINOLOGA 15
1.3.2

Area signada de un triangulo
Consideremos tres puntos en el plano p
1
= (x
1
, y
1
), p
2
= (x
2
, y
2
), p
3
= (x
3
, y
3
). El area del
tri angulo que determinan (vease la gura) viene dado por

Area =
1
2
|p
1
p
2
| |p
1
p
3
| sen
p
1
p
3
p
2
p
1
p
3
p
2

i
j
k
p
1
p
2
p
3
p
1
Ahora bien, |p
1
p
2
| |p
1
p
3
| sen =
1
2


p
1
p
2

p
1
p
3
, es decir, es el modulo del producto
vectorial de

p
1
p
2
y

p
1
p
3
. Recordando que, si

i ,

j , y

k son los vectores de la base
canonica en el espacio entonces

p
1
p
2

p
1
p
3
=

i

j

k
x
2
x
1
y
2
y
1
0
x
3
x
1
y
3
y
1
0

x
2
x
1
y
2
y
1
x
3
x
1
y
3
y
1

k =

x
2
x
1
y
2
y
1
x
3
x
1
y
3
y
1

k
Y usando de nuevo las propiedades de los determinantes

x
2
x
1
y
2
y
1
x
3
x
1
y
3
y
1

1 0 0
x
1
x
2
x
1
x
3
x
1
y
1
y
2
y
1
y
3
y
1

1 1 1
x
1
x
2
x
3
y
1
y
2
y
3

Por tanto

p
1
p
2

p
1
p
3
=

1 1 1
x
1
x
2
x
3
y
1
y
2
y
3

k
Y el area del tri angulo:

Area =
1
2
abs

1 1 1
x
1
x
2
x
3
y
1
y
2
y
3

Sin embargo, nos vamos a jar en el determinante

1 1 1
x
1
x
2
x
3
y
1
y
2
y
3

. Su signo es el del
vector

p
1
p
2

p
1
p
3
y por tanto se rige por la conocida regla del sacacorchos. Aqu nos va
a servir para determinar la orientaci on del tri angulo p
1
p
2
p
3
.

16 TEMA 1: INTRODUCCI

ON A LA GEOMETRA COMPUTACIONAL
p
1
p
3
p
2
i
j
k
p
1
p
2
p
3
p
1
i
j
k
p
1
p
3
p
2
p
1
p
2
p
3
p
1
Se dene el area signada del tri angulo p
1
p
2
p
3
como
(p
1
, p
2
, p
3
) =
1
2

1 1 1
x
1
x
2
x
3
y
1
y
2
y
3

Seg un lo visto anteriormente, (p


1
, p
2
, p
3
) > 0 signica que la lista (p
1
, p
2
, p
3
) describe
la frontera del tri angulo con orientaci on positiva y en cambio si (p
1
, p
2
, p
3
) < 0, lo har a
con orientaci on negativa.
2.1 Aplicaciones del area signada
En realidad el c alculo de areas signadas tiene tantas y tan variadas aplicaciones que casi
puede considerarse como una operaci on primitiva en Geometra Computacional. Veamos
aqu las mas elementales y sobre las que se basaran todas las dem as aplicaciones.
Localizacion de un punto respecto de una recta. Si consideramos la recta que
pasa por los puntos p
1
y p
2
y queremos saber donde se encuentra un tercer punto
q basta calcular el area signada (p
1
, p
2
, q). Si es positiva, q esta en el semiplano
izquierdo determinado por la recta orientada seg un

p
1
p
2
. Si es negativa, est a en el
derecho, y si es cero esta en la recta.
p
1
q
p
2
q'
q''
(p
1
, p
2
, q) > 0, (p
1
, p
2
, q

) < 0 y (p
1
, p
2
, q

) = 0
Comparaci on de un angulo con . Para comparar con un angulo dermi-
nado por dos segmentos, no es preciso calcular previamente dicho angulo, si no que
basta calcular un area signada. La siguiente gura muestra c omo reducir el pro-
blema al caso anterior. La ventaja de hacerlo as radica en que se sustituye el uso
de funciones trigonometricas que, ademas de ser mas complejas, generalmente dan
soluciones aproximadas, por el uso de operaciones elementales: sumas, productos,
divisiones y restas, que pueden realizarse de manera exacta.

1.3. TERMINOLOGA 17
p
1
p
2
p
3

Clasicar vertices en un polgono. Un vertice de un polgono se dice que es


convexo cuando el angulo interior que determinan los dos lados concurrentes en el
es menor o igual que , y un vertice concavo es aquel que no es convexo.
v
10
v
8
v
9
v
5
v
4
v
3
v
2
v
6
v
7
v
1
Los vertices solidos son convexos, los huecos concavos.
Si el polgono P viene determinado por la lista de sus vertices (v
1
, . . . , v
n
) con
orientaci on positiva, el signo de (v
i1
, v
i
, v
i+1
) determina que tipo de vertice es
v
i
. Si es mayor o igual a cero es convexo y si es menor que cero concavo. Si la
orientaci on de P fuese negativa las desigualdades simplemente se invertiran.
1.3.3 Lecturas complementarias
Captulos 1,2,3 y 4 del libro Introduction to Algorithms de T. H. CORMEN, C. E.
LEISERSON, y R. L. RIVEST.
Captulo 1 del libro Computational Geometry. Algorithms and Applications de M.
BERG, M. KREVELD, M. OVERMARS, y O. SCHWARZKOPF.

Tema 2
Cierre convexo
2.1 Introduccion
Quiz a uno de los ejemplos mas reveladores de la utilidad de la estructura geometrica que
se introduce en este tema es el siguiente. Supongamos que tenemos n puntos en el plano
dados por sus coordenadas y queremos encontrar la mayor distancia determinada por dos
de ellos.
(a) Puntos que dan la m axima distancia. (b) Envolvente convexa.
Desde luego, hay una soluci on inmediata que se deriva de la nitud del conjunto: para
cada dos puntos se halla la distancia que determinan y de todos los valores obtenidos nos
quedamos con el mayor. El coste operativo de esta solucion sera O(n
2
) ya que el n umero de
posibles pares es

n
2

=
n(n1)
2
. Aparte del alto coste, que como veremos es sustancialmente
mejorable, hay una objeci on de fondo que puede hacerse a este algoritmo y es que no utiliza
la geometra del problema: lo mismo podra aplicarse a cacular el maximo valor de los
elementos de una matriz nn. Y sin embargo, pueden explotarse propiedades geometricas
como que la mayor distancia no se puede dar entre puntos cualesquiera sino entre puntos
exteriores de la nube, o de manera m as precisa: entre vertices de la envolvente convexa.
Este objeto geometrico admite una denici on intuitiva muy f acil de entender: supon-
gamos que tenemos en cada uno de los puntos del conjunto un clavo y los rodeamos con
una goma el astica que al soltar se ci ne a los clavos. Ese resultado nal es la envolvente
convexa de la nube de puntos. Y utilizando esto, tal y como veremos en el tema 4, puede
encontrarse un algoritmo optimo que resuelve nuestro problema en tiempo O(nlog n). Es
decir que sobre una nube de mil puntos el primer algoritmo requerira un n umero de
operaciones del orden de un mill on mientras que con el segundo sera del orden de unos
miles. Una rebaja bastante dr astica que se acent ua m as cuantos mas puntos haya en la
nube.
19

20 TEMA 2: CIERRE CONVEXO
2.2 Cierre convexo
Denicion 2.2.1 Un conjunto de puntos A en el espacio afn IR
d
se dice que es convexo
si para todo x, y A, el segmento xy A.
Ejemplos 2.2.1
1. En el plano son convexos:
(a) Un punto, una recta, una semirrecta, un segmento, un semiplano, el plano.
(b) Tambien un crculo, un polgono convexo, la regi on superior delimitada por el
grafo de una funci on convexa, por ejemplo f(x) = x
2
(una par abola), etc.
(a) Convexos en el plano. (b) No convexos.
2. No lo son en cambio: una circunferencia, un par de puntos, etc.
3. En el espacio tridimensional son convexos: los planos, los semiespacios, los poliedros
convexos, las bolas (esferas macizas), la region superior delimitada por el grafo de
una funci on convexa, por ejemplo f(x, y) = x
2
+ y
2
(un paraboloide de revoluci on),
etc.
(a) Convexos en el espacio. (b) No convexos.
Proposicion 2.2.2 Si A y B son convexos entonces A B es convexo. Y en general la
intersecci on de una familia (nita o no) de convexos es un convexo.
Dem: Sean x, y AB. El segmento xy esta contenido en A porque en particular x, y A
y porque A es convexo. Por el mismo razonamiento xy B, luego xy A B.
QED

2.2. CIERRE CONVEXO 21
Denicion 2.2.3 El cierre convexo de un conjunto S es el menor convexo que contiene
a S. Lo notaremos CH(S) (del ingles convex hull).
La existencia del cierre convexo de cualquier conjunto S IR
d
viene garantizada por
la siguiente proposici on.
Proposicion 2.2.4 CH(S) =

C(
C, donde ( = C convexo /S C.
Dem: En primer lugar hay que observar que ( ,= ya que IR
d
( (es un convexo que
contiene a S). Por la proposici on anterior,

C(
C es un conjunto convexo, por su propia
denici on contiene a S, y adem as cualquier convexo D que contenga a S obviamente

C(
C D porque D (. Luego es el menor convexo que contiene a S.
QED
Estamos especialmente interesados en estudiar que ocurre cuando el conjunto S esta
formado por un n umero nito de puntos en el plano.
Denicion 2.2.5 Dado un conjunto S en el plano y un punto p S, se dice que una recta
que pasa por p es soporte de S si todos los puntos de S quedan en uno de los semiplanos
cerrados
1
que dicha recta determina.
S
r
1
r
2
r
3
Las rectas r
1
y r
2
son soporte de S pero r
3
no.
Proposicion 2.2.6 Si P es un polgono convexo cuyos vertices son puntos de S, entonces
P CH(S).
Dem: Sean q
1
, q
2
, . . . , q
m
los vertices de P. Como, para todo i, q
i
S CH(S) y CH(S)
convexo, todos los lados de P estan contenidos en CH(S), es decir, P CH(S). Para
comprobar nalmente que todo punto y P esta en CH(S), consideramos el segmento
q
1
x, con x P, que contiene a y (ver la siguiente gura). Como los extremos estan en
CH(S) y este es convexo, q
1
x CH(S) y en particular y CH(S).
QED
1
El semiplano junto con la recta.

22 TEMA 2: CIERRE CONVEXO
q
1
q
3
q
4
q
5
q
2
q
6
x
y
P
Ilustraci on de la prueba.
Proposicion 2.2.7 Si S es un conjunto de n de puntos entonces CH(S) es el polgono
convexo que contiene a S y cuyos vertices son puntos de S.

Este podra degenerar en un
solo punto, si n = 1, o en un segmento, si todos est an alineados.
Dem: Si P es un polgono convexo cuyos vertices son puntos de S y que contiene a S,
entonces:
CH(S) P, porque P es un convexo que contiene a S, y
P CH(S), porque P esta en las condiciones de la proposici on anterior.
Luego P = CH(S).
QED
En la pr actica, un polgono convexo viene determinado por su frontera. En el caso del
cierre convexo de S, a su frontera se denomina envolvente convexa. Si bien, abusando
de notaci on, tambien la notaremos CH(S).
A continuaci on veremos una serie de caracterizaciones de un polgono convexo en
terminos de lo que le ocurre a su frontera.
Teorema 2.2.8 (Caracterizaciones) Sea P un polgono que supondremos descrito me-
diante su frontera orientada positivamente.
1. P es convexo toda recta que pase por dos vertices consecutivos deja a P en el
semiplano de la izquierda (con la orientaci on inducida en la recta por P).
2. P es convexo toda recta que pase por dos vertices consecutivos deja al siguiente
vertice de P en el semiplano de la izquierda.
3. P es convexo todo angulo interior en cada vertice de P es menor o igual que .
4. P es convexo todo vertice admite una recta soporte de P que pasa por el.

2.3. ALGORITMOS PARA CALCULAR ENVOLVENTES CONVEXAS 23
v
1
v
5
v
4
v
3
v
2
v
6
v
1
v
5
v
4
v
3
v
2
v
6
v
1
v
5
v
4
v
3
v
2
v
6
v
1
v
5
v
4
v
3
v
2
v
6
>
>
<
<
>
<
<
v
1
v
5
v
4
v
3
v
2
v
6
v
1
v
5
v
4
v
3
v
2
v
6
Ilustraci on del teorema.
Todo este estudio nos servira para dise nar algoritmos que hallen la envolvente convexa
de un conjunto.
2.3 Algoritmos para calcular envolventes convexas
Comenzamos con un algoritmo que viene sugerido por el hecho de que los lados de la
envolvente convexa son segmentos de rectas soporte de S. Consiste pues en lo siguiente:
Para cada par de puntos de S, se comprueba si todos los demas estan en un mismo
semiplano de los dos que determina la recta que pasa por ellos. Si es as, determinan un
lado de la envolvente y sino no. Examinando exhaustivamente todos los pares obtenemos
todos los lados de la envolvente. Sin embargo, el conjunto de lados en s mismo no describe
la envolvente, sino que habra que ordenarlos para que aparecieran tal y como lo hacen al
recorrer la frontera. Esto se puede hacer f acilmente teniendo en cuenta que un polgono

24 TEMA 2: CIERRE CONVEXO
convexo es, en particular, un abanico desde cualquiera de sus vertices y por tanto todos
los demas aparecen en la frontera ordenados angularmente respecto a el. En denitiva el
coste total sera: O(n) para cada par de puntos, como hay

n
2

pares, encontrar el conjunto


de vertices costara O(n
3
). Despues ordenarlos sera en el peor de los casos O(nlog n).
Por tanto, este algoritmo, que podramos llamar de fuerza bruta, halla la envolvente en
tiempo O(n
3
).
A continuaci on veremos otros algoritmos mas renados. Conviene advertir que todos
ellos estan descritos suponiendo que en S no hay tres puntos alineados. Esto ser a sim-
plemente una restricci on inicial que evitar a que los detalles acerca de como resolver esos
casos oscurezcan las ideas principales de los algoritmos. Despues se indicara como tratar
esas situaciones alla donde afecten.
2.3.1 Marcha de Jarvis
El siguiente algoritmo tambien esta basado en localizacion de puntos de S que admiten
rectas soporte del conjunto. La diferencia esencial es que la b usqueda esta mejor organi-
zada. Ahora, en cada paso, partiendo de un vertice conocido de la envolvente se busca
otro vertice que con el determine una recta soporte de S.
Marcha de Jarvis: (Descripcion geometrica del algoritmo)
Paso 0 : Encontrar un vertice de la envolvente convexa. Lo llamaremos v
1
y a la recta
soporte que pasa por el, r
1
. Basta tomar el punto de S con abscisa mnima, la
recta vertical que pasa por el es soporte de S.
Paso 1 : Girar, en torno a v
1
, la recta r
1
en sentido positivo hasta que toque el primer punto
de S que encuentre en su recorrido: ser a el siguiente vertice de la envolvente que
llamaremos v
2
. A la recta que pasa por v
1
y v
2
la llamaremos r
2
.
En general, y hasta que volvamos a encontrarnos con v
1
:
Paso i : Girar, en torno a v
i
, la recta r
i
en sentido positivo hasta que toque el primer
punto de S que encuentre en su recorrido. Llamemos v
i+1
a ese punto, y r
i+1
a la
recta que pasa por v
i
y v
i+1
.
Final: Devolver la lista cclica con los puntos as obtenidos, C = (v
1
, v
2
, . . . , v
k
). Es la
envolvente convexa con orientaci on positiva.

2.3. ALGORITMOS PARA CALCULAR ENVOLVENTES CONVEXAS 25
v
1
v
2
v
1
v
4
v
3
v
2
v
1
v
3
v
2
v
1
v
5
v
4
v
3
v
2
v
6
v
7
v
1
Interpretaci on geometrica de la marcha de Jarvis.
La correccion del algoritmo se deriva de los siguientes hechos:
En cada paso i, (1 i k), se mantiene como invariante que el vertice v
i
es un
vertice de la envolvente convexa y que la recta r
i
es soporte de S.
Por tanto, la lista cclica resultante C = (v
1
, . . . , v
k
) satisface que la recta (orientada)
que pasa por dos vertices consecutivos v
i
v
i+1
, que no es otra que r
i+1
, deja a S a su
izquierda. En consecuencia, C es la frontera de un polgono convexo con vertices en
S y que contiene a S, luego C = CH(S).
Para analizar mejor la complejidad vamos a considerar una descripci on m as detallada
del algoritmo.
Marcha de Jarvis: (De nuevo)
Entrada: Lista con los puntos de S: S = (p
1
, . . . , p
n
).
Salida: Lista cclica con los vertices de la envolvente convexa de S: C = (v
1
, . . . , v
k
).

26 TEMA 2: CIERRE CONVEXO
Paso 0 : Encontrar el punto de S con abscisa mnima, si hubiera m as de uno, el de
menor ordenada: ser a v
1
que insertaremos en C inicialmente vaca.
Paso i : Localizar en S el punto de menor angulo positivo respecto a v
i
y el rayo que
emana de v
i
con la direcci on

v
i1
v
i
, si i ,= 1, y si i = 1, el rayo vertical que
emana de v
1
en la direcci onde . Ese punto ser a v
i+1
que si v
i+1
,= v
1
,
insertaremos en C y continuamos, y en caso contrario hemos acabado.
Estudio de la complejidad:
Localizar el mnimo entre n valores puede hacerse en tiempo O(n).
Para cada i, localizar el menor angularmente entre un total de n1 valores, tambien
puede hacerse en tiempo O(n).
Por tanto el tiempo total requerido es O(n k) donde k es el n umero de vertices en la
envolvente convexa, que en el peor de los casos es n y por tanto la complejidad del algoritmo
en el peor de los casos es O(n
2
).
Sin embargo, si el n umero de vertices en la envolvente es relativamente peque no respecto
de n, el algoritmo es realmente interesante. Tiene ademas otro interes teorico a nadido y
es que, para dise nar un buen algoritmo que calcule envolventes convexas de puntos en el
espacio, pueden extenderse las mismas ideas utilizadas en la marcha de Jarvis, en cambio,
esto no puede hacerse con otros de los algoritmos que veremos a continuacion, aunque sean
mas ecientes que la marcha de Jarvis.
En cuanto a la complejidad en espacio, claramente es O(n).
Por ultimo, cabe observar un par de detalles en cuanto al paso iesimo del algoritmo:
1. Para encontrar el mnimo angular no es preciso hallar ning un angulo: el c alculo
puede hacerse usando s olo areas signadas. En efecto, como la recta r
i
es soporte en
v
i
, todos los puntos de S quedan a la izquierda, y por tanto el angulo que forma cada
punto est a en el rango (0, ]. Por tanto para comparar dos angulos, los determinados
por p
j
y p
k
respectivamente (vease la gura), basta calcular un area signada pues
,
(

v
i
p
k
, r
i
) <
,
(

v
i
p
j
, r
i
) (v
i
, p
k
, p
j
) > 0
v
i
r
i
p
j
p
k
Comparaci on de angulos con areas signadas.
2. La otra cuesti on es que pasa si en el paso iesimo, cuando buscamos el siguiente
vertice de la envolvente convexa v
i+1
, hay varios puntos (alineados) que dan el menor
orden angular. Pues simplemente, de todos ellos nos quedamos con el que este mas
alejado de v
i
.

2.3. ALGORITMOS PARA CALCULAR ENVOLVENTES CONVEXAS 27
2.3.2 Scan de Graham
El siguiente algoritmo, as como todas sus variantes, esta basado fundamentalmente en dos
ideas acerca de un polgono convexo.
La primera tiene que ver con la secuencia de los vertices que describen su frontera. Las
condiciones para que un polgono sea convexo son tan fuertes que supone que esa secuencia
tenga propiedades muy especiales. Por ejemplo, un polgono convexo en particular es un
polgono estrellado y por tanto respecto a un punto del n ucleo (que puede ser cualquiera
del polgono) los vertices aparecen ordenados angularmente en la secuencia. O tambien
como el polgono es monotono respecto de cualquier direcci on, en particular respecto del
eje OX, su frontera puede descomponerse en dos cadenas mon otonas respecto de OX y en
cada una de ellas, los vertices estan ordenados por abscisas.
La segunda idea simplemente es que todos los vertices de un convexo son convexos.
As, en los siguientes algoritmos se pueden apreciar dos pasos:
1. Ordenaci on. Consiste en ordenar los puntos de S de modo que se obtenga una lista
cclica L con todos los puntos de S de manera que describe un polgono especial:
estrellado o mon otono.
2. Scan. Consiste en comprobar que en L cada punto forme con sus dos adyacentes en
L un angulo menor que . Si alguno no lo cumple se elimina y as se va depurando
L hasta que la lista resultante satisfaga esa condici on.
Algoritmo de Graham:
Entrada: Lista con los puntos (en posici on general) de S: S = (p
1
, . . . , p
n
).
Salida: Lista cclica doblemente enlazada con los vertices de la envolvente convexa
de S: C = (v
1
, . . . , v
k
).
Paso 1: Encontrar el punto de S con abscisa mnima, si hubiera m as de uno, el de
menor ordenada: ser a v
1
que insertaremos en C inicialmente vaca.
Paso 2: Ordenar angularmente el resto de puntos de S respecto a v
1
y en sentido
positivo respecto al rayo vertical que emana de el en direccion a . Sea
L = (v
1
, v
2
, . . . , v
n
) el resultado.
Paso 3: Insertar en C, originalmente vaca, v
1
y v
2
. Hacer q = v
2
.
Paso 4: (Scan) Desde i = 3 hasta n, hacer
1. p = ant(q) (anterior en C).
2. Mientras (p, q, v
i
) 0,
(a) Borrar q de C.
(b) Actualizar q = p y p = ant(q).
3. Insertar v
i
en C y actualizar q = v
i
.

28 TEMA 2: CIERRE CONVEXO
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
6
v
7
v
11
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
6
v
7
v
11
< ?
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ? v
6
>
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
v
6
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
7
v
11
< ?
v
6
>
>
>
Ilustraci on del algoritmo de Graham.

2.3. ALGORITMOS PARA CALCULAR ENVOLVENTES CONVEXAS 29
Nota: Conviene observar que con la ordenaci on angular respecto de v
1
, tanto v
2
como v
n
son vertices de la envolvente. Esto se ha tenido en cuenta en esta descripcion del algoritmo,
concretamente para que la funci on ant(q) en C este siempre bien denida y para ahorrarnos
la comprobaci on de que el angulo formado en v
n
con su anterior en C y con v
1
es menor
que . La ventaja que esto supone s olo es de limpieza de codigo.
Correcci on del algoritmo: Veamos que:
- Los puntos que elimina el algoritmo no son vertices del cierre convexo. En efecto,
como los puntos estan ordenados angularmente respecto a v
1
, cuando se elimina v
i
es porque el area signada (v
j
, v
i
, v
k
) 0, donde v
j
y v
k
son respectivamente puntos
menor y mayor angularmente que v
i
respecto a v
1
. Eso signica que v
i
esta en el
tri angulo que determinan v
1
, v
j
, v
k
y por tanto no es vertice del cierre convexo de S.
v
i
v
1
v
k
v
j
v
i
no esta en la envolvente.
- Al nalizar el algoritmo, C contiene los vertices de la envolvente convexa de S, orde-
nados con orientaci on positiva. En primer lugar, observemos que C es un subconjunto
ordenado de la lista de puntos ordenados angularmente respecto a v
1
(con orientaci on
positiva), por lo tanto, C describe la frontera de un polgono (estrellado desde v
1
)
con orientaci on positiva y cuyos vertices son puntos de S. Por otro lado, el bucle
principal se ocupaba de mantener invariante la siguiente propiedad: cualesquiera tres
puntos consecutivos en C: q
j1
, q
j
, q
j+1
, satisfacen que (q
j1
, q
j
, q
j+1
) > 0 es decir
que q
j
es un vertice convexo. Luego C es un polgono con todos sus vertices convexos,
y por tanto, C es convexo. Para concluir que C = CH(S) solo queda justicar que
S C. Supongamos que al nal del algoritmo se han eliminado m puntos de L,
(m 0). Fijemonos en el estado de la lista cada vez que se elimina uno de ellos.
Es decir, partimos de la lista L
0
= L y consideramos, cada vez que se produzca una
eliminaci on en el algoritmo de un punto v, la lista L
i
= L
i1
v. Cada una de
estas listas, L
0
, L
1
, . . . , L
m1
= C, describe la frontera de un polgono estrellado (los
vertices se mantienen ordenados angularmente respecto a v
1
). Ademas, al pasar de
una lista a otra borrando un vertice, tal y como muestra la gura anterior, da lugar
a otro estrellado mayor, es decir que, vistas como polgonos, L
i1
L
i
, para todo
1 i m 1. Por tanto se verica que: S L
0
L
1
. . . L
m1
= C. Y como
C es convexo, contiene a S y sus vertices son puntos de S, es CH(S).
Analisis de la complejidad: El paso 1 cuesta O(n) y el 2, O(nlog n). En cuanto al
scan, podemos analizarlo de la siguiente manera: partiendo de la lista (v
1
, v
2
, v
3
, . . . , v
n
), a
cada vertice v
i
, (i > 1), se le aplica un test de area signada con sus vecinos para averiguar

30 TEMA 2: CIERRE CONVEXO
si los tres forman en v
i
un angulo menor que . Luego, por lo pronto, tenemos n 1
calculos de areas signadas. Sin embargo, puede que sobre el mismo vertice v
i
, tengamos
que aplicar de nuevo el mismo test porque sus vecinos han cambiado. Esto sucede cada
vez que se borra un vertice de la lista porque el test de area signada aplicado sobre el
sali o negativo y aparecen ahora consecutivos en la lista puntos que antes no lo eran. En
denitiva, se revisita un vertice para aplicarle de nuevo el test si, y s olo si, previamente ha
sido borrado otro, y por tanto, globalmente, el n umero total de revisitaciones de vertices
esta acotado superiormente por el n umero de vertices que se han borrado. Como mucho
se pueden borrar n 3, luego el n umero maximo de test de areas signadas que se aplica
a lo largo del algoritmo es 2n 4. Por tanto el coste total de las operaciones aritmeticas
es O(n). Las otras operaciones sobre estructuras de datos pueden realizarse cada una en
tiempo constante, por ejemplo si se utiliza una pila para representar C, ademas, cada vez
que se trata un punto v
i
se realiza un n umero constante de operaciones. El n umero total de
veces que se tratan vertices es O(n), luego el coste total del scan es O(n) y el del algoritmo
es O(nlog n).
En cuanto al espacio requerido es O(n).
Nota: Veamos por ultimo c omo modicar el algoritmo para que funcione incluso aunque
en S haya m as de dos puntos alineados. Basta con que en el paso de ordenaci on angular,
cuando hay varios puntos con el mismo angulo, podemos olvidarnos de todos los inter-
medios y quedarnos s olo con el mas alejado a v
1
, porque seguro que no son vertices de
la envolvente. De las dem as alineaciones que pueden presentarse, aquellas en las que no
interviene v
1
, se ocupa el algoritmo tal y como esta trat andolas correctamente.
La ordenaci on angular no es estrictamente necesaria. A continuaci on veremos un par
de variantes del algoritmo de Graham que utilizan otro tipo de ordenaci on m as sencillo.
Variante del algoritmo de Graham:
Entrada: Lista con los puntos de S: S = (p
1
, . . . , p
n
).
Salida: Lista cclica doblemente enlazada C con los vertices de la envolvente convexa
de S orientada positivamente.
Paso 1: Ordenar lexicogr acamente los puntos de S obteniendo la lista L.
Paso 2: Aplicar el scan a L y obtener C
1
, que es cadena inferior de la envolvente
convexa.
Paso 3: Invertir el orden en L obteniendo L
/
y aplicar de nuevo el scan ahora a L
/
y obtener C
2
, que es cadena superior de la envolvente convexa.
Paso 4: Concatenar C
1
y C
2
adecuadamente (eliminando las repeticiones de los ex-
tremos) para obtener la lista C con los vertices de CH(S).

2.3. ALGORITMOS PARA CALCULAR ENVOLVENTES CONVEXAS 31
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
6
v
7
v
11
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
6
v
7
v
11
C
1
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
6
v
7
v
11
C
v
10
v
8
v
9
v
1
v
5
v
4
v
3
v
2
v
6
v
7
v
11
C
2
Ilustraci on del algoritmo: resultado de cada paso.
Otra variante m as debida a Akl-Toussaint. B asicamente es lo mismo pero, antes de
ordenar, localiza los puntos extremales: los de abscisa mnima y m axima, y los de ordenada
mnima y m axima. Estos puntos determinan un convexo contenido en el cierre que, en
principio, sera un cuadrilatero aunque dependiendo cu antos puntos extremales tenga S
podra ser desde un segmento hasta un octogono (vease la gura).
A
B
C
D
A
B
C
A
B
A
B C
D
E
F G
H
Depuraci on de puntos en el algoritmo de Akl-Toussaint.

32 TEMA 2: CIERRE CONVEXO
Lo primero que hace es eliminar los puntos de S que estan en el interior de ese convexo:
seguro que estos no determinan la envolvente convexa. Con los que quedan, se contin ua
con los pasos del algoritmo anterior.
Por ejemplo, si nos centramos con el caso del cuadril atero de la gura, hallaramos
cuatro listas: L
1
con los puntos de S que esten a la derecha de

AB, es decir los p S tales
que (A, B, p) 0; L
2
con los p S tales que (B, C, p) 0; L
3
con los p S tales que
(C, D, p) 0 y L
4
con los p S tales que (D, A, p) 0. A continuaci on, los puntos
de cada lista se ordenan lexicogr acamente (x < y) en orden creciente los de L
1
y L
2
y en
orden decreciente L
3
y L
3
. Sobre cada lista ordenada se aplica el scan y se obtienen cuatro
subcadenas de la envolvente convexa que concaten andolas adecuadamente dan CH(S).
La complejidad en el peor de los casos de este algoritmo sigue siendo O(nlog n) pues,
hallar los puntos extremales cuesta O(n) y para cada punto de S averiguar si est a en
un cuadril atero convexo puede hacerse en tiempo constante (son cuatro areas signadas).
De modo que el paso adicional dado en este algoritmo es O(n) y por tanto no supone,
asint oticamente, ning un coste adicional. El coste total del algoritmo se reducir a consi-
derablemente si fruto de esa operaci on inicial eliminamos gran parte de los puntos. Sera
el caso cuando los puntos estuvieran uniformente distribuidos en el plano, por ejemplo.
Sin embargo, tambien puede ocurrir que no se elimine ninguno y estamos igual que en el
algoritmo anterior. El interes de este algoritmo esta en que en media es bastante eciente.
2.4 Complejidad de un problema
En la seccion anterior hemos visto varios algoritmos que resuelven el problema de dados
n puntos en el plano encontrar su envolvente convexa. Se ha ido reduciendo la comple-
jidad hasta O(nlog n) y la pregunta natural es: cabe esperar que haya algoritmos m as
ecientes?, es posible reducir mas la complejidad a fuerza de ingenio o, por el contrario,
es in util seguir buscando en esa direcci on porque la propia naturaleza del problema y el
modelo de computacion impide que existan algoritmos m as ecientes?
Denicion 2.4.1 Sea T un problema acerca de un conjunto de datos de tama no n.
Se dice que la funci on f(n) es una cota superior de T, si existe un algoritmo /
que resuelve T y tiene complejidad T
/
(n) = O(f(n)).
Y se dice que f(n) es una cota inferior de T, si todo algoritmo / que resuelva T
tiene complejidad T
/
(n) = (f(n)).
Se dice que la complejidad de T es (f(n)) si f(n) es una cota superior e inferior
del problema. Si un algoritmo / que resuelve T tiene complejidad T
/
(n) = O(f(n)),
se dice que es optimo.
Por ejemplo, el problema de ordenar n n umeros reales tiene complejidad (nlog n), y
el algoritmo divide y vencer as que lo resuelve es optimo.

2.4. COMPLEJIDAD DE UN PROBLEMA 33
El encontrar cotas inferiores a un problema suele ser una cuesti on delicada y frecuente-
mente se utiliza la siguiente estrategia:
Supongamos que tenemos dos problemas T
1
y T
2
(ambos sobre n datos de entrada),
de manera que de uno de ellos, T
1
, conocemos una cota inferior f(n) y ademas sabemos
reducirlo al problema T
2
en tiempo g(n), con g(n) f(n)
2
. Esto quiere decir que
somos capaces de transformar en tiempo g(n) la entrada del problema T
1
en la entrada
del problema T
2
y, tambien, la soluci on de T
2
en una soluci on para T
1
. Esta situaci on se
nota as
T
1

g(n)
T
2
De modo que si consideramos cualquier algoritmo / que resuelva T
2
, podemos construir un
algoritmo B que resuelva T
1
, primero realizando la transformaci on citada y luego utilizando
/ para resolver T
2
. El coste de este algoritmo sera T
B
(n) = g(n) +T
/
(n).
Como conocemos una cota inferior de T
1
, sabemos que, necesariamente, T
B
(n) =
(f(n)). Es decir, existe C > 0 tal que T
B
(n) = g(n) + T
/
(n) C f(n). Como
g(n) f(n)), entonces T
/
(n) = (f(n)). Y por tanto f(n) tambien es una cota inferior
de T
2
.
Veamoslo aplicado al problema concreto que nos ocupa.
Teorema 2.4.2 El problema de encontrar la envolvente convexa de n puntos en el plano
se reduce en tiempo lineal al problema de ordenar n n umeros reales. Es decir,
Ordenar
n
Envolvente convexa
Dem:
Sea / un algoritmo que, dado un conjunto S de n puntos en el plano, calcula su
envolvente convexa. A partir de el construimos un algoritmo B que ordene un conjunto de
n n umeros reales, de la siguiente manera.
Entrada: El conjunto N = x
1
, . . . , x
n
de n umeros reales.
Salida: Lista con los n umeros ordenados: (x
(1)
, . . . , x
(n)
) de menor a mayor
3
.
Paso 1: Considerar los puntos del plano p
i
= (x
i
, x
2
i
) para todo i = 1..n. Son puntos
que estan en la par abola y = x
2
y como esta curva es la frontera de un
conjunto convexo, en la envolvente convexa de S = p
1
, . . . , p
n
aparecen
todos como vertices. Ver gura.
Paso 2: Aplicar el algoritmo B para hallar CH(S).

Este devolver a la lista cclica con
los vertices de la envolvente con orientaci on positiva: L = (p
(1)
, . . . , p
(n)
).
Paso 3: Localizar en L el punto de menor abscisa y rotar los elementos en L hasta
que aparezca como primer elemento. Supongamos que de entrada es p
(1)
.
Paso 4: Proyectar los puntos de L, en ese orden, sobre el eje OX: (x
(1)
, . . . , x
(n)
)
es la lista ordenada buscada.
2
El smbolo se lee mucho menor y signica que lim
g(n)
f(n)
= 0.
3
representa una permutaci on de los ndices. En el ejemplo de la gura: (1) = 5, (2) = 2, (3) = 6,
(4) = 1, (5) = 3, (6) = 4.

34 TEMA 2: CIERRE CONVEXO
2
y=x
x
1
x
2
x
3
x
4
x
5
x
6
p
5
p
2
p
3
p
4
p
1
p
6
Transformaci on del problema.
El tiempo de ejecuci on de / sera: (n) para el paso 1 m as el tiempo de ejecucion de
B, T
B
(n), m as (n) que se tarda en encontrar el mnimo y la rotaci on de L as como la
proyeccion, hace un total de: T
/
(n) = (n) +T
B
(n).
Como la complejidad del problema de ordenaci on es (nlog n), T
/
(n) = (nlog n).
Ademas, como n nlog n, necesariamente T
B
(n) = (nlog n).
QED
Corolario 2.4.3 La complejidad del problema de calcular la envolvente convexa de n pun-
tos en el plano es (nlog n).
En consecuencia todos los algoritmos que la calculen en tiempo O(nlog n), (Graham,
Akl-Toussaint, etc.), son optimos.
2.5 Lecturas complementarias recomendadas
Captulo 35, seccion 35.3, del libro Introduction to Algorithms de T. H. CORMEN,
C. E. LEISERSON, y R. L. RIVEST.
Captulo 3 del libro Computational Geometry in C de J. OROURKE.
Captulo 1 del libro Computational Geometry. Algorithms and Applications de M.
BERG, M. KREVELD, M. OVERMARS, y O. SCHWARZKOPF.
Algunos apartados del captulo 3 del libro Computational Geometry. An Introduc-
tion de F. PREPARATA, M. I. SHAMOS.

Tema 3
Cierre convexo de un polgono
3.1 Introduccion
En este tema abordaremos el calculo eciente de la envolvente convexa de un polgono
simple. Tal y como cabe suponer, el cierre convexo de un polgono coincide con el de sus
vertices, por lo que resulta inmediato reducirlo al problema del tema anterior, pagando
por su c alculo, eso s, un tiempo O(nlog n) si el polgono tiene n vertices.
P
Envolvente convexa del polgono P.
La cuestion fundamental que motiva el estudio de este problema es ver si se puede usar
la estructura que presentan ahora los datos para mejorar los algoritmos. El hecho de que
el conjunto de puntos vengan dados de modo que denen la frontera de un polgono simple
va a permitir reducir la complejidad de O(nlog n) a O(n).
3.2 Cierre convexo de un polgono
Proposicion 3.2.1 Si P es un polgono y S es el conjunto de sus vertices, entonces
CH(P) = CH(S).
Dem: Probemos cada una de las siguientes inclusiones:
CH(S) CH(P) Se tiene que S P CH(P) y como CH(P) es un conjunto
convexo y ademas contiene a S, entonces CH(S) CH(P).
CH(P) CH(S) CH(S) es un conjunto convexo por tanto contiene a todo segmento
determinado por dos puntos de el. En particular a todos los lados
de P. Luego P CH(S). Y si un polgono contiene a la frontera
de otro, lo contiene totalmente, luego P CH(S). Por ultimo,
como CH(S) es un convexo que contiene a P, necesariamente
debe contener a CH(P).
QED
35

36 TEMA 3: CIERRE CONVEXO DE UN POLGONO
Este resultado conduce a un algoritmo trivial que consiste en quedarnos con el conjunto
de vertices y hallar su cierre convexo como en el tema anterior. Pero la idea es intentar
aprovechar el que la entrada no es una nube de puntos arbitraria sino la lista de vertices
de un polgono, para poder rebajar la cota superior del problema de O(nlog n) a O(n). Y,
en efecto, esto se puede hacer.
Una primera aproximaci on es revisar atentamente el algoritmo de Graham que calcula
el cierre convexo de una nube de puntos S. Consta de dos pasos, la ordenaci on de los
puntos, y el scan. El proceso de ordenaci on angular puede entenderse como la obtenci on
de una poligonizaci on estrellada de la nube de puntos.
El segundo paso, el scan, act ua sobre la lista ordenada de puntos, es decir sobre el
polgono construdo, comprobando que, en cada vertice, el angulo interior es menor que
y en caso contrario toma las medidas oportunas de modo que, al nal, en la lista resultante
el angulo interior en cada vertice sea menor que .
A la vista de esto, resulta sumamente tentador, ahora que tenemos un polgono P al
que hay que calcular el cierre convexo, olvidarse del paso de ordenaci on, que es el mas
costoso, y aplicar directamente el paso de scan, que es lineal. Quedara como sigue.
Algoritmo de Graham
Paso 1: Localizar en P el punto x
min
, con el orden lexicogr aco, y hacerlo el primero de
la lista de vertices de P. Es decir, supongamos que v
1
es x
min
.
Paso 2: Aplicar a P el scan. En detalle sera:
1. Inicializar C conteniendo el punto v
1
.
2. (Scan) Desde i = 2 hasta n, hacer
(a) A nadir v
i
a C.
(b) Hacer q = v
i
y p = ant(q) (anterior en C).
(c) Mientras (p, q, v
i+1
) 0 y p = v
1
, (Obs.: v
n+1
= v
1
)
Borrar q de C.
Actualizar q = p y p = ant(q) (anterior en C).
(d) Si (p, q, v
i+1
) 0 y p = v
1
, entonces borrar q de C.
Paso 3: Devolver C.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
v
9
v
10
v
11
v
12
v
13
v
14
v
15
v
16
v
17
v
18
v
19
v
20
v
21
v
22
v
23
Algoritmo de Graham aplicado a un polgono.

3.2. CIERRE CONVEXO DE UN POLGONO 37
Sin embargo, este algoritmo tan sencillo no calcula correctamente el cierre convexo de
todos los polgonos simples, tal y como se puede observar en la siguiente gura.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
v
1
v
2
v
3
v
4
v
5
v
7
v
8
Resultado de aplicar el scan a otro polgono. No es la envolvente convexa pues ni siquiera es un polgono.
Como para ciertas familias especiales de polgonos (estrellados y mon otonos, por ejem-
plo), s va bien, por un lado convendra determinar para que familias de polgonos este
sencillo algoritmo funciona correctamente, y por otro lado queda pendiente encontrar un
algoritmo v alido para todo tipo de polgono simple.
El siguiente resultado da respuesta a la primera de las cuestiones.
Proposicion 3.2.2 Si P es un polgono DVE entonces el algoritmo de Graham anterior
calcula correctamente CH(P).
Dem: Por inducci on sobre el n umero de vertices de P.
- Para n = 3, el polgono en cuesti on es un tri angulo y el algoritmo no borra ning un
vertice y devuelve la lista original, que en efecto es CH(P).
- Supongamos que el algoritmo funciona correctamente para todo polgono DVE con
m vertices, (3 m < n). Sea P un polgono DVE con n vertices que identicaremos
con la lista ordenada de sus vertices (con orientacion positiva), (v
1
, . . . , v
n
), y supon-
dremos que v
1
ya es x
min
. Tal y como se observa en el algoritmo, en el transcurso del
paso 2, en la lista C se introducen todos los vertices de P (paso 2(a)) y se borran
algunos de ellos. Consideremos la lista L = (v
1
, . . . , v
n
) y analicemos sobre ella los
cambios (eliminacion de vertices) que se producen durante el scan.
Si en el paso 2, nunca se borran vertices signica que P es convexo ya que todos
sus angulos internos son menores que . El algoritmo devuelve P que coincide
con CH(P).
En otro caso, sea v
k
el primer vertice de P que el algoritmo debe borrar porque

(v
k1
, v
k
, v
k+1
) > .
v
1
v
k
v
k+1
v
k-1
v
k
es el primer vertice que borra el scan.

38 TEMA 3: CIERRE CONVEXO DE UN POLGONO
Consideremos la lista L

= L v
k
= (v
1
, . . . , v
k1
, v
k+1
, . . . , v
n
).
Si L

no fuera una poligonal simple, entonces habra dos lados que se interse-
can. Observese que L

tiene los lados de P salvo v


k1
v
k
y v
k
v
k+1
que han sido
sustituidos por el segmento v
k1
v
k+1
. Por tanto, dicha intersecci on solo puede
darse entre el lado nuevo v
k1
v
k+1
, y alg un otro lado l de P.
Ese lado l ha de estar en la cadena poligonal (v
k+1
, . . . , v
n
) (vease la gura) y
como P es DVE, para que el vertice v
k+1
pueda ver el exterior necesariamente
l ha de ser el lado v
k+1
v
k+2
tal y como aparece en la gura (b).
v
1
v
k
v
k+1
v
k-1
l
(a) (b)
v
1
v
k
v
k+1
v
k-1
v
k+2
P v
k
no es un polgono simple. Pero (a) es incompatible con que P sea DVE.
Si esto fuera as, entonces en el siguiente paso por el bucle del scan habra que
eliminar v
k+1
ya que (v
k1
, v
k+1
, v
k+2
) = 0. Y en cualquiera de los casos o bien
L

o bien L

= L

v
k+1
, es una poligonal cerrada simple.
Ademas el polgono P

que representan tambien es DVE. En efecto, sea x P

o bien es un punto de P, o bien est a en el segmento v


k1
v
k+1
. En el primer
caso es obvio que ve el exterior y en el segundo, si en cualquier direcci on x
no ve el exterior signica que todo rayo que emane de x interseca el interior
de P

en particular, partiendo del rayo que pasa por v


k1
y gir andolo en torno
a x en sentido positivo hasta el que pasa por v
k+1
, todos los rayos barridos
intersecan el interior de P

que en este caso coincidiran con puntos del interior


de P (Int(P

)=Int(P v
k1
v
k
v
k+1
)). Pero en ese caso, vease la gura, el punto
v
k
no vera el exterior en P y es imposible porque P es DVE.
v
k-1
v
1
v
k
v
k+1
x
P v
k
no es DVE, luego P tampoco.
En denitiva, cuando el algoritmo altera por primera vez la lista original L que
describe la frontera de un DVE con n vertices, lo hace eliminando un vertice
pero la lista resultante L

(o L

en caso de alineacion de vertices) describe de


nuevo un DVE, con menos vertices y a partir de aqu el algoritmo hara lo
mismo que si partiera de L

. De modo que como por hip otesis de induccion el


algoritmo funciona correctamente sobre polgonos DVE con menos de n vertices,
devolvera CH(P

) que coincide con CH(P). QED



3.3. ALGORITMOS DE LEE Y MELKMAN 39
3.3 Algoritmos de Lee y Melkman
El problema que presenta el algoritmo de Graham visto en la secci on anterior, es que
realiza un an alisis local de los vertices: se ocupa de garantizar que en la poligonal cerrada
que devuelve todos los vertices son convexos, sin embargo no hay garanta de que esa
secuencia ordenada de vertices describa la frontera de un polgono simple. A continuaci on
veremos dos algoritmos que, si bien usan tambien el scan para comprobar que lo que
se devuelve nalmente es una secuencia de vertices convexos, ademas vigilan que dena
un polgono simple. Ambos algoritmos calculan en tiempo lineal el cierre convexo de un
polgono simple.
El primero de ellos es el de Lee y basicamente consiste en aplicar el scan de Graham
pero manteniendo una referencia que nos permita advertir cuando estamos examinando
vertices que caen en los bolsillos del polgono (vease la gura) ya que estos son los que
pueden acarrear problemas en el algoritmo de Graham.
B
1
B
2
B
3
B
4
B
5
P
B
1
B
2
B
3
B
4
B
5
Los bolsillos de P son los polgonos B
1
, B
2
, B
3
y B
4
.
El segundo algoritmo es el de Melkman. Se trata de un algoritmo incremental que, en
principio, calcula el cierre convexo de una poligonal simple. Por supuesto tambien puede
aplicarse a un polgono ya que es un caso particular de poligonal.
3.3.1 Algoritmo de Lee
Sea P un polgono simple orientado positivamente. Los vertices mnimo y m aximo de
P con el orden lexicogr aco sobre sus coordenadas descomponen P en dos subcadenas
poligonales L
1
(de x
min
a x
max
) y L
2
(de x
max
a x
min
), y tambien a la envolvente convexa
de P en C
1
y C
2
que llamaremos respectivamente envolvente convexa inferior y envolvente
convexa superior de P.
El algoritmo de Lee halla por separado C
1
a partir de L
1
y C
2
a partir de L
2
, y nalmente
las concatena. As pues, examinemos solo como calcula C
1
.
Supongamos que L
1
= (p
1
, ...p
M
) con p
1
= x
min
y p
M
= x
max
. Sabemos que p
1
es el
primer vertice de C
1
y que p
M
sera el ultimo. Consideremos la recta que pasa por esos
dos puntos. Sea p
j
el primer vertice de L
1
que cae por debajo de esa recta, evidentemente
ninguno de los vertices (si es que hay alguno) comprendidos entre p
1
y p
j
son vertices de
la envolvente convexa de P, por tanto el primer candidato a seguir a p
1
en C
1
es p
j
.
Sean q
1
= p
1
, q
2
= p
j
, y la lista Q = (q
1
, q
2
). Esta lista Q posiblemente se vera
incrementada o modicada a lo largo del proceso conforme encontremos nuevos candidatos

40 TEMA 3: CIERRE CONVEXO DE UN POLGONO
o desechemos alguno de los ya considerados. Sea como fuere, Q describe una poligonal
simple que satisface dos propiedades que deseamos mantener invariantes:
1) todos los vertices de Q {p
M
} son convexos, y
2) si se prolongan indenidamente el primer y el ultimo lado de esta poligonal, todos
los vertices de P ya tratados quedan a la izquierda de esta poligonal generalizada.
En el momento en que nos hallamos esto es trivial: la poligonal generalizada consiste
en la recta que pasa por q
1
y q
2
y todos los vertices de P desde p
1
hasta p
j
estan a la
izquierda de esta recta (con la orientaci on inducida por la de P).
P
q
i
1
p q
1
=
q
i-1
2
q
p
M
Cadena poligonal Q generalizada al prolongar su primer y ultimo lado.
Supongamos que en un momento dado del proceso, Q tiene i elementos, (q
1
, q
2
, ...q
i
), y
supongamos que q
i
= p
k
. Si p
k+1
= p
M
entonces C
1
= (q
1
, q
2
, ...q
i
, p
M
). Si no es as, la
simplicidad del polgono obliga a que p
k+1
este en una de las regiones marcadas en la gura
siguiente.
La regi on 2 es el semiplano derecho de la recta (orientada) que pasa por q
i1
y q
i
. La
regi on 1 no existe en el caso de que q
i1
= p
k1
. Las regiones 3 y 4 estan denidas en
funci on de la posici on de p
k1
respecto al segmento orientado

q
i
p
M
. Si esta a su derecha,
la regi on 3 es la interseccion de los semiplanos izquierdos de

q
i1
q
i
y de

p
k1
q
i
, y no existe
regi on 4. En cambio si est a al izquierda, como en la gura, la regi on 3 es la interseccion
del semiplano izquierdo de

q
i1
q
i
y el derecho de

q
i
p
M
, y la regi on 4 es la interseccion de
los semiplanos izquierdos de

q
i
p
M
y de

p
k1
q
i
.
p
M
P
q
i
q
i-1
1
3
4
2
M aximo de regiones posibles donde localizar p
k+1
.
La forma de proceder en cada caso es la siguiente:
1. Si p
k+1
esta en la regi on 3, ser a el siguiente elemento de Q, es decir q
i+1
= p
k+1
. Y al
hacer esto se siguen manteniendo las propiedades de Q.

3.3. ALGORITMOS DE LEE Y MELKMAN 41
2. Si est a en la regi on 2, tambien a nadiremos a Q este punto pero al hacerlo quiz a ya
no todos los vertices de Q sean convexos de modo que lo que hay que hacer es borrar
los vertices no convexos de Q, siguiendo el mismo proceso de borrado que en el scan.
3. Si p
k+1
esta en la regi on 1, consideramos el primer vertice p de P posterior a p
k+1
que abandone esta regi on. Por la simplicidad de P, p ha de estar en la regi on 2 y se
procede como corresponde a esta region.
4. Si p
k+1
esta en la regi on 4, consideramos el primer vertice p de P posterior a p
k+1
que abandone esta regi on. De nuevo gracias a la simplicidad de P, p ha de estar en
la regi on 2 o en la 3, y en cada caso se procede como corresponde a dicha region.
p
M P
q
i-1
1
3
4
2
p
k+1
p
k-1
q
i
p
k
=
p
p
M P
q
i-1
1 3
4
2
p
k+1
q
i
p
k
=
p
M
P
q
i-1
1 3
4
2
p
k+1
q
i
p
k
=
p
M P
q
i-1
1
3
4
2
p
k+1
p
k-1
q
i
p
k
=
p
A continuaci on detallamos el algoritmo de Lee para calcular la envolvente convexa
inferior. De manera totalmente an aloga se calculara la superior y a partir de ambas la
envolvente convexa.
Algoritmo de Lee
Entrada: Un polgono simple P con orientaci on positiva de n vertices (en posicion
general) dados en una lista cclica.
Salida: Lista doblemente enlazada C con los vertices de la envolvente convexa inferior
de P.
Paso 1: Localizar en P los puntos x
min
y x
max
(puntos mnimo y m aximo con el
orden lexicogr aco de P).
Paso 2: Crear la lista doblemente enlazada L con los vertices de la subcadena poli-
gonal de P que va de x
min
a x
max
, incluidos ambos puntos.
Paso 3: Inicializar C conteniendo al punto q
0
.

Este es un punto articial que consi-
deramos para simplicar las siguientes instrucciones y que luego eliminare-
mos. Tal punto se construye a partir de las coordenadas de x
min
, sumando
una unidad a su ordenada. (Para la envolvente superior se obtiene a partir
de x
max
restando a su ordenada una unidad).

42 TEMA 3: CIERRE CONVEXO DE UN POLGONO
Paso 4: Comenzar con u := q
0
. (En adelante u representar a el anterior a q en L.)
Paso 5: Hacer q := x
min
y a nadirlo a C. Hacer p := q.
Paso 6: Mientras p = x
max
repetir:
1. Hacer p := POST(q, L)
2. Si (ANT(q, C), q, p) 0, entonces
Si (u, q, p) < 0, (p esta en la reg. 1)
Hacer x := ANT(q, C), e y := q.
En otro caso,
Hacer x := q, e y := x
max
. (por si p esta en la reg. 4)
Mientras (x, y, p) 0, hacer p := POST(p, L).
3. Mientras (ANT(q, C), q, p) 0 (p esta en 2 o en 3)
Borrar q de C y hacer q := ANT(q, C).
4. A nadir p a C haciendo u := ANT(p, L) y q := p.
Paso 7: Acabar devolviendo C (previa eliminaci on de q
0
).
3.3.2 Algoritmo de Melkman
Sea P = (p
1
, p
2
, , p
n
) una cadena poligonal simple. El algoritmo de Melkman para
calcular su envolvente convexa procede de manera que para cada i, se tiene el cierre
convexo C
i
de los i 1 primeros vertices de P, es decir, C
i
= CH({p
1
, . . . , p
i1
}) y se trata
de calcular la envolvente convexa de C
i
{p
i
}.
Esto se reduce a realizar dos operaciones bien diferenciadas:
1. Averiguar si p
i
C
i
.
2. En caso de que no sea as, p
i
sera vertice de la nueva envolvente convexa y habr a
que obtener C
i+1
sustituyendo cierta subcadena poligonal de la frontera de C
i
por el
vertice p
i
. Vease la gura.
p
i
C
i
Actualizacion de la envolvente convexa al a nadir un nuevo punto.
La operaci on de averiguar la posici on de un punto respecto a un polgono convexo,
puede realizarse muy f acilmente con el calculo de areas signadas, una por cada lado del
convexo.

3.3. ALGORITMOS DE LEE Y MELKMAN 43
Para la segunda operaci on, hay que trazar las rectas que pasan por p
i
y son soporte
del convexo, los vertices que quedan en el sector angular determinado por esas dos rectas
son los que hay que sustituir por p
i
en la nueva envolvente. Esto puede hacerse de manera
inmediata en tiempo lineal en el n umero de vertices del convexo.
De modo que la complejidad para este algoritmo incremental, en el peor de los casos,
sera T(i) = T(i 1) +O(i 1), para cada i, y entonces T(n) = O(n
2
).
En todo lo comentado no se ha hecho ning un uso de que los puntos no vienen dados
de cualquier manera sino formando una poligonal simple. El algoritmo aprovecha esas
propiedades geometricas para reducir el tiempo de la operaci on 1 a O(1) y la operaci on
2 a un tiempo proporcional al n umero de vertices que elimina, n
i
. De esta manera la
complejidad para cada i sera T(i) = T(i 1) +O(n
i
), y por tanto
T(n) = O

i=1
n
i

= O(n)
ya que el n umero de vertices eliminados en total es a lo mas n 3. Veamos como se
consigue.
Supongamos que adem as de C
i
tenemos el punto q que es el ultimo vertice tratado de
P que es vertice de C
i
. Sea p el vertice de P que sigue a q en P. Entonces averiguar la
posicion relativa de p respecto al polgono C
i
equivale a averiguar la posici on relativa de
P respecto a la region R
q
, que es la interseccion de los semiplanos determinados por las
rectas que pasan por q y, respectivamente, su anterior y su posterior en C
i
, y que contienen
a C
i
.
En efecto, resulta evidente que si p / R
q
entonces p / C
i
. Y la raz on de por que si
p R
q
necesariamente ha de estar en el polgono C
i
, radica en que P es una poligonal
simple, vease la siguiente gura.
p
C
i
q
R
q
p
C
i
q
R
q
El lado qp de P no puede atravesar el polgono C
i
porque si no P no sera simple.
Esto signica que para saber si p esta en C
i
, basta con el calculo de dos areas signadas
(tiempo constante).
Supongamos ahora que p esta dentro del polgono convexo C
i
, y sea p

el primer vertice
de P, posterior a p en la cadena poligonal, que queda fuera de C
i
, o lo que es equivalente
gracias de nuevo a la simplicidad de P, fuera de R
q
. Necesariamente este vertice, sale
atravesando uno de los lados adyacentes a q en C
i
(vease la siguiente gura). Observese
que el cierre convexo de todos los puntos tratados de P sigue siendo C
i
hasta que llega
p

y entonces la forma de proceder es la misma que si directamente p estuviera fuera de



44 TEMA 3: CIERRE CONVEXO DE UN POLGONO
C
i
, y es la siguiente. Tomando como referencia en C
i
el vertice q, avanzamos primero en
una direcci on y luego en la opuesta, comprobando uno a uno los vertices que encontramos
hasta encontrar los dos vertices que determinan sendas rectas soporte de C
i
que pasan por
p

. Avanzando en cada una de esas direcciones a partir, en ambos casos de q, cada vertice
o es el vertice deseado o es uno de los que quedan en la cadena de C
i
que hay que eliminar.
De modo que este proceso se puede organizar de la siguiente manera: si C es la lista con
los vertices de C
i
, sustituimos en ella el vertice q por la secuencia q, p

, q. A continuaci on
aplicamos el scan de Graham partiendo de p

primero en una direcci on y luego en la otra


de modo que si un vertice no es convexo entonces se elimina.
C
i
q
p'
>
<
<
p'
C
i+1
C
i
q
p'
>
<
<
p
C
i
q
R
q
p'
Ilustraci on de c omo el algoritmo de Melkman obtiene C
i+1
de C
i
.
Algoritmo de Melkman
Entrada: P cadena poligonal simple de n ( 3) vertices en posicion general dados
en una lista o en una pila P = (p
1
, p
2
, , p
n
) con la funci on MIN(P) que en tiempo
constante da su primer elemento y lo borra de P.
Salida: Lista cclica doblemente enlazada C con los vertices del cierre convexo de P.
Esta estructura debe soportar las siguientes funciones en tiempo constante: dado un
elemento v de C,
1. Hallar su anterior y su posterior en C (ANT(v, C) y POST(v, C) respectiva-
mente).
2. Borrarlo de C.
3. Insertar un elemento tras v en C.
Paso 1: Inicializar C = .
Hacer p
1
:= MIN(P) e introducirlo en C.

3.4. REFERENCIAS Y LECTURAS COMPLEMENTARIAS RECOMENDADAS 45
Hacer p
2
:= MIN(P) e introducirlo en C al nal.
Hacer q := MIN(P) e introducirlo en C al nal.
Hacer O := (p
1
, p
2
, q) (su signo determina la orientaci on de C).
Paso 2: Mientras P = repetir:
1. Hacer p := MIN(P).
2. Mientras p R
q
, hacer p := MIN(P).
3. Hacer s := q y t := ANT(s, C).
4. Mientras O (t, s, p) 0.
5. Hacer s := t y t := ANT(s, C).
6. Insertar p en C tras s.
7. Hacer s := POST(p, C) y t := POST(s, C).
8. Mientras O (s, t, p) 0
9. Borrar s de C. Hacer s := t y t := POST(s, C).
10. Hacer q := p.
Paso 3: Acabar devolviendo C.
Nota: La regi on R
q
es la interseccion de dos semiplanos: los que respectivamente deter-
minan la recta que pasa por q y ANT(q, C) y la recta que pasa por q y POST(q, C),
y que contienen a C. As pues, p R
q
si y, solo si, O (q, POST(q, C), p) 0 y
O (ANT(q, C), q, p) 0.
Evidentemente, este algoritmo tambien es valido si P es un polgono simple en vez
de una poligonal. Si adem as esta orientado positivamente, tomamos como inicio de la
poligonal vertice anterior a x
min
en P, por ejemplo, y podemos olvidarnos del valor de O
ya que sera positivo.
3.4 Referencias y lecturas complementarias recomen-
dadas
Apartado 1.4 del captulo 4 del libro Computational Geometry. An Introduction
de F. PREPARATA, M. I. SHAMOS.
G. TOUSSAINT, D. AVIS: On a Convex Hull Algorithm for Polygons and its Ap-
plication to Triangulation Problems Geometry. Pattern Recognition Vol. 15. No.
1, pp.2329, 1982.
R. L. GRAHAM, F. F. YAO: Finding the Convex Hull of a Simple Polygon. Jour-
nal of Algorithms No. 4, pp.324331, 1983.
A. A. MELKMAN: On-line construction of the convex hull of simple polyline. Ben
Gurion University of the Negev, Beer Sheva, Israel.

Tema 4
Diametro y calibres
4.1 Introduccion
En este tema vamos a resolver de manera eciente el problema de encontrar la mayor
distancia entre dos puntos de una nube. La tecnica que utilizaremos se denomina rotaci on
de calibres, y es una herramienta que puede aplicarse para resolver otro tipo de problemas,
como por ejemplo, el de encontrar la anchura de un polgono convexo, hallar el rect angulo
de area mnima que contiene a una nube de puntos, etc.
4.2 Diametro de una nube de puntos
Denicion 4.2.1 El di ametro de un conjunto de n puntos S = p
1
, p
2
, . . . , p
n
es la mayor
distancia entre dos de ellos. Esto es,
diam(S) = max
1i,jn
d(p
i
, p
j
)
El di ametro de la nube es la longitud del segmento de la gura.
De manera inmediata surge un primer algoritmo para calcular tal valor.
Algoritmo fuerza bruta
1. Para cada par de puntos p
i
, p
j
de S, (1 i < j n), hallar d(p
i
, p
j
).
2. Tomar el mayor de los valores obtenidos.
Como el n umero de pares de puntos es

n
2

, la complejidad en tiempo de este algoritmo


es T(n) = C

n
2

= O(n
2
). Y el objetivo es utilizar las propiedades geometricas del
problema para obtener algoritmos m as ecientes y rebajar as la complejidad.
47

48 TEMA 4: DI

AMETRO Y CALIBRES
Proposicion 4.2.2 El di ametro de S se alcanza en vertices del CH(S).
Dem: Sean p, q S dos puntos donde se realiza el di ametro de S, es decir, tales que
diam(S) = d(p, q). Entonces, el crculo de centro p y radio d(p, q) debe contener a S,
pues si alg un punto q
/
de S quedara fuera entonces d(p, q
/
) > d(p, q) = diam(S), lo cual
es absurdo. Por la misma raz on, S tambien esta contenido en el crculo de centro q y
radio d(p, q). Por tanto, S esta en la interseccion de ambos crculos, regi on a la que nos
referiremos como luna, vease la gura.
q
p
r
q
r
p
La zona sobreada es la luna y contiene a S.
Consideremos ahora la recta r
p
(respectivamente r
q
) que pasa por p (resp. por q) y es
ortogonal al segmento pq. La recta r
p
es tangente a la luna en p y por tanto es soporte
de S en p. En consecuencia p es un punto de la envolvente convexa y adem as debe ser un
vertice.
Resumiendo, si en el par p, q se realiza el diametro, entonces p y q son vertices de la
envolvente convexa de S.
QED
En consecuencia, para hallar el di ametro de S basta considerar los vertices de su envol-
vente convexa. Sin embargo, aplicar el algoritmo de fuerza bruta al conjunto de vertices
de la envolvente, tampoco mejora la eciencia. N otese que en el peor caso todos los puntos
de S estan en la envolvente convexa.
Por lo tanto, la clave para obtener una mejora algortmica utilizando el hecho de que
el di ametro de S se alcanza en los vertices de CH(S), no est a en una posible reducci on del
n umero de elementos del nuevo conjunto a considerar, sino en la estructura de polgono
convexo que este posee.
En denitiva, dada la nube de puntos S hallamos su envolvente convexa CH(S) y a
partir de aqu consideramos el problema de encontrar el di ametro de un polgono convexo.
4.3 Diametro de un polgono convexo
Sea P un polgono convexo de n vertices. El di ametro de P se dene de manera an aloga
diam(P) = maxd(p, q) / p, q P.

4.3. DI

AMETRO DE UN POLGONO CONVEXO 49


Proposicion 4.3.1 diam(P) = diam(vertices de P).
Dem: El mismo argumento de la demostracion de la proposici on 4.2.2. sirve para P.
QED
Denicion 4.3.2 Se dice que dos vertices p, q de P son antpodas si existen dos rectas
paralelas distintas que pasan por sendos puntos y son soporte de P.
v
5
v
4
v
3
v
2
v
6
v
7
v
1
v
5
v
4
v
3
v
2
v
6
v
7
v
1
(a) v
3
y v
7
son antpodas pero v
1
y v
7
no. (b) Todas las parejas de antpodas de P.
Proposicion 4.3.3 diam(P) = d(p, q) p y q son antpodas.
Dem: Recordando la demostraci on de la proposici on 4.2.2, basta observar que las rectas
r
p
y r
q
son ambas ortogonales a una dada, y por tanto son paralelas. Adem as son distintas
pues la distancia entre ambas es d(p, q) > 0.
QED
Por tanto para hallar diam(P) no es preciso considerar todo par de vertices posible sino
solo aquellos formados por antpodas. Esto nos conduce ya a un bosquejo de algoritmo
para resolver el problema
Algoritmo:
1. Hallar todos los pares de antpodas de P.
2. Hallar la distancia entre los puntos de cada par.
3. Quedarse con el mayor valor.
Si notamos con N el n umero de parejas de antpodas de P, el tiempo de ejecucion
de los pasos dos y tres es claramente lineal en N. Y por tanto, la complejidad de este
algoritmo, vendr a dado por el tiempo que cueste encontrar todos los pares de antpodas
mas O(N):
T(n) = t
1
(n) +t
2
(n) +t
3
(n) = t
1
(n) +O(N)
Cuanto vale N? y cuanto cuesta encontrar los N pares? son las preguntas que
quedan pendientes y que intentaremos dar respuesta en lo que sigue.

50 TEMA 4: DI

AMETRO Y CALIBRES
4.3.1 N umero de parejas de antpodas de un convexo
Resolvamos primero este problema combinatorio de encontrar cu antos pares de antpodas
tiene un polgono convexo P de n lados.
Consideremos un vertice cualquiera de P, p. El haz de rectas soporte de P en p viene
determinado por las rectas que pasan por p y sus vertices adyacentes: q y q
/
.
p
q'
q
P
r
r'
La zona sombreada es el haz de rectas soporte de P en p. Para cada una de esas rectas hay otra paralela a
ella que tambien es soporte.
Los vertices antpodas de p han de admitir rectas soporte de P paralelas a alguna de
estas. Y recprocamente, para cada recta soporte r en p, hay (al menos) un antpoda de p
con recta soporte paralela a r: despl acese paralelamente a r en el semiplano que contiene
a P una recta que inicialmente est a sobre r y despues es secante a P hasta que es tangente
a P. En esa posici on, la recta r
/
contiene un vertice de P, y este es antpoda de p, o bien
un lado de P cuyos extremos son vertices antpodas de p.
De este modo se pueden obtener todos los antpodas a un vertice dado: para cada recta
r soporte en el considerar la recta r
/
(,= r) paralela a r que es soporte de P. Estas rectas
determinan un par de antpodas, o dos, seg un el n umero de vertices de P que haya en la
recta r
/
.
Como hay un n umero innito de rectas soporte en un vertice dado y el n umero de pares
de antpodas es nito, evidentemente varias rectas determinan el mismo par de antpodas.
Veamos como estan estos distribuidos sobre P.
Con af an de conseguir una mayor claridad, dividiremos el an alisis de la situaci on en
dos casos: primero que P no tenga lados paralelos, y segundo que tenga lados paralelos.
En este segundo caso, dada la convexidad de P, un lado de P puede tener a lo m as otro
lado paralelo a el en P y por tanto hablaremos de parejas de lados paralelos.
1.1 P no tiene lados paralelos
Supongamos que P esta descrito con orientaci on positiva, y tomemos el vertice p
1
. El
haz de rectas soporte de P en p
1
viene determinado por las rectas que pasan por p
1
y

4.3. DI

AMETRO DE UN POLGONO CONVEXO 51


sus vertices adyacentes: p
2
y p
n
. Visto de otro modo, la recta que pasa por p
1
y p
n
es la
primera recta soporte en p
1
y girando esta recta en sentido positivo en torno a p
1
hasta
la posici on de la recta que pasa por p
1
y p
2
, que sera la ultima, obtenemos todas las
posibles rectas soporte de P en p
1
. Los vertices antpodas de p
1
han de admitir rectas
soporte de P paralelas a alguna de estas.
Consideremos la recta l
1
que pasa por p
n
y p
1
, y sea l
/
1
la recta paralela a l soporte de
P. Como P no tiene lados paralelos, l
/
solo contiene a un vertice de P: p
k
. An alogamente,
consideramos el antpoda a p
1
asociado a la recta l
2
que pasa por p
1
y p
2
: p
j
. N otese que
p
j
es posterior a p
k
en P con la orientaci on positiva yendo desde p
1
a p
n
, es decir que
j k.
P
p
1
p
2
p
n
l
1
l
2
l
1
l
2
p
j
p
k
Localizacion del primero y el ultimo vertice antpoda de p
1
: p
k
y p
j
. Ademas, todo vertice antpoda de p
1
ha de estar comprendido entre p
k
y p
j
.
Fijemonos en la cadena poligonal que va de p
k
a p
j
: C
1
= (p
k
, p
k+1
, . . . , p
j
). Se verica
que todos los vertices de esa cadena son antpodas de p
1
, y que fuera de esa cadena no hay
mas vertices antpodas de p
1
.
Por tanto los vertices antpodas a uno dado aparecen consecutivamente en P, esto es,
forman una cadena. As, nos referiremos a C
1
como la cadena de vertices antpodas de p
1
.
Y el conjunto de todos los pares de antpodas en los que interviene p
1
es (p
1
, p) / p C
1
.
Para el vertice p
2
su cadena de antpodas C
2
se halla de la misma manera. Y una
observacion importante es que dicha cadena comienza en el vertice p
j
que es el ultimo de
la cadena de p
1
.
Consideremos para cada vertice p
i
con 1 i k sus respectivas cadenas de antpodas:
C
1
, C
2
, . . . , C
k1
, C
k
. Entonces se verica que para todo i 1, . . . , k 1,
1. C
i
C
i+1
es un punto: el ultimo de C
i
y el primero de C
i+1
.
2. El ultimo elemento de C
i
es anterior a p
1
.
Consideremos la divisi on de P en dos subcadenas poligonales: P
1
= (p
1
, p
2
, . . . , p
k1
)
y P
2
= (p
k
, p
k+1
, . . . , p
n
). El ultimo elemento de la cadena C
k
esta en P
1
(n otese que en
particular p
1
es antpoda de p
k
). Sea C
/
k
= C
k
P
2
.

52 TEMA 4: DI

AMETRO Y CALIBRES
Lema 4.3.4 Todo par de antpodas de P esta formado por un vertice de P
1
y otro de P
2
.
Lema 4.3.5 Si N
1
= [C
1
[, N
2
= [C
2
[, . . . , N
k1
= [C
k1
[ y N
k
= [C
/
k
[, entonces N =
N
1
+N
2
+ +N
k
.
Lema 4.3.6 P
2
= C
1
C
2
. . . C
k1
C
/
k
(uni on conjuntista de sus vertices).
Teorema 4.3.7 Para un polgono convexo P de n vertices sin lados paralelos N = n.
Dem:
N = N
1
+N
2
+N
k1
+N
k
= [C
1
[ +[C
2
[ + +[C
k1
[ +C
/
k
[ =
= [C
1
C
2
C
k1
C
/
k
[

+[C
1
C
2
[ +[C
2
C
3
[ +[C
3
C
4
[ + +[C
k1
C
/
k
[

=
= [P
2
[ + k 1 =
= n (k 1) +k 1 = n
QED
1.2 P tiene n
/
pares de lados paralelos
El estudio realizado para el caso anterior es igualmente v alido para este caso solo que
ahora, las cadenas de antpodas para dos vertices consecutivos p
i
, p
i+1
pueden tener como
interseccion dos puntos en vez de uno. Esto ocurre si, y s olo si, hay en P un lado paralelo
a p
i
p
i+1
, ver gura.
p
i
p
i+1
C
i
C
i+1
Las cadenas C
i
y C
i+1
comparten dos puntos: los dos ultimos de C
i
que son los dos primeros de C
i+1
.
De modo que hay que tener esto en cuenta a la hora de calcular N corrigiendo en el
calculo realizado en el apartado anterior de la siguiente manera.
N = N
1
+ +N
k
= [P
2
[ + (k 1) +n
/
= n (k 1) + (k 1) +n
/
= n +n
/
Por tanto el resultado general es el siguiente.
Teorema 4.3.8 Para un polgono convexo P de n vertices N = n+n
/
, siendo n
/
el n umero
de parejas de lados paralelos de P.
Como el n umero de parejas de lados paralelos en un convexo de n lados, n
/
, verica que
n
/

n
2


n
2
, entonces N = O(n).

4.3. DI

AMETRO DE UN POLGONO CONVEXO 53


4.3.2 Calculo de las parejas de antpodas
Queda pendiente saber cu anto cuesta encontrar esas N parejas de antpodas y c omo ha-
cerlo. La respuesta es que no mucho y que el metodo para encontrarlos ya est a inventado.
Pensemos en el convexo P como una tuerca un poco irregular. Para hallar su di ametro, los
mecanicos lo que hacen es usar un calibre como el de la gura y, en una vuelta de calibre,
determinan cu al es la mayor abertura del calibre.
Matematicamente, esta herramienta mecanica vendr a modelizado por un par de rectas
paralelas que dejan al polgono en la banda que determinan, es decir, para cada recta el
polgono queda en el semiplano en el que est a la otra recta. Y adem as queremos que esas
rectas sean soporte del polgono.
Para un polgono P siempre hay un par de rectas con esas cararactersticas muy f acil
de hallar: basta considerar las rectas verticales que pasan respectivamente por los vertices
de abscisa mnima y abscisa maxima. Para encontrar ahora otro par basta rotar ambas
rectas el mismo angulo, y en el mismo sentido, cada una en torno al punto de apoyo sobre
el polgono. As se consigue que sigan siendo rectas paralelas pero para que adem as sean
soporte de P hay que vigilar el tama no del angulo de giro y, en caso de que hubiera m as
de un punto de apoyo de P para alguna de esas rectas, decidir en torno a cu al se gira.
Para resolver todo eso, comenzaremos dando a cada una de las rectas soporte paralelas
una orientaci on distinta. Por ejemplo a la recta vertical que pasa por x
min
la orientaci on
del eje OY

y la otra la del eje OY


+
. A cada una de estas rectas orientadas las llamaremos
calibre. Si sobre alguna de estas rectas hubiera m as de un vertice de P consideraramos
como centro de giro el ultimo en la direcci on del calibre. Esos puntos de apoyo de los
calibres seran la primera pareja de antpodas.
A continuaci on giramos los calibres para detectar otra pareja. El angulo de giro de los
calibres para que el resultado sea de nuevo un par de rectas soporte viene limitado por la
frontera de P. Como P es convexo tan solo hay que vigilar el lado adyacente al vertice
de apoyo de cada calibre. Por tanto, el angulo que han de girar ambas rectas para que
las resultantes sean tambien soporte de P viene determinado por el menor de los angulos
que forman cada uno de los calibres con el lado adyacente a su vertice de apoyo en P,
tomando el angulo en sentido positivo respecto de la direcci on del calibre. Observese que
al girar ese angulo al menos uno de los calibres se apoya en un lado de P: aquel que

54 TEMA 4: DI

AMETRO Y CALIBRES
daba el angulo mnimo. Ese calibre girar a ahora entorno al nuevo vertice encontrado y ese
vertice junto con el otro en el que se apoya el otro calibre determinan una nueva pareja de
vertices antpodas. Si los dos angulos examinados son iguales una vez girados los calibres,
ambos quedan apoyados sobre lados paralelos de P y entonces hay tres parejas nuevas de
antpodas. Vease la gura.

p
q
C
1
C
2

p
q
C
1
C
2

p
q
C
1
C
2

p
q
C
1
C
2

p
q
C
1
C
2

p
q
C
1
C
2
p
q
C
1
C
2
(a) < (b) < (c) =
(d) < (e) < (f) <
Ilustraci on del algoritmo de girar calibres para calcular todos los pares de antpodas de un polgono
convexo.
De esta manera girando los calibres y recopilando todas las parejas de antpodas que
encontremos conseguiremos todas las posibles. La pregunta natural que surge ahora es:
hasta cuando hay que girar para tener la seguridad que tenerlas todas? La respuesta es
f acil: hasta que comiencen a repetirse. Esto ocurre cuando ambos calibres han girado un

4.3. DI

AMETRO DE UN POLGONO CONVEXO 55


angulo total de a lo m as , es decir, se han invertido las posiciones iniciales de los calibres
y se apoyan sobre la pareja inicial de antpodas.
Algoritmo de girar calibres. (Descripcion geometrica)
A lo largo del algoritmo llamaremos C
1
y C
2
al par de calibres que rotan, p y q los
vertices de P donde respectivamente se apoyan y respecto de los cuales giran.
Paso 1: Localizar en P los puntos mnimo y m aximo con orden lexicogr aco: x
min
y x
max
.
Paso 2: Inicializar p := x
min
, q := x
max
y los calibres C
1
con la recta vertical que pasa por
p con la direcci on OY

y C
2
con recta vertical que pasa por q y direcci on OY
+
.
Paso 3: Mientras el par (p, q) ,= (x
max
, x
min
) repetir:
Guardar el par de antpodas (p, q).
Considerar los angulos , formado por C
1
con el lado pSIG(p) de P, y ,
formado por C
2
y qSIG(q).
Si < , girar ambos calibres un angulo y cambiar el punto de giro de C
1
haciendo p := SIG(p).
Si > , girar ambos calibres un angulo y cambiar el punto de giro de C
2
haciendo q := SIG(q).
Si = , girar ambos calibres ese angulo, guardar los pares de antpodas
(p, SIG(q)), (SIG(p), q) y cambiar tanto el punto de giro de C
1
como el de
C
2
haciendo p := SIG(p) y q := SIG(q).
En la pr actica no es preciso hallar el valor de ning un angulo sino que la comparaci on
entre y puede realizarse simplemente utilizando c alculos de areas signadas tal y como
muestra la gura.
p
q

SIG(p)
SIG(q)
p
q

SIG(p)

x
p

(a) (b) (c)


< (p, SIG(p), x) < 0, donde x = p +

qSIG(q).
A continuaci on damos una descripci on un poco m as detallada del algoritmo en la que
se tiene en cuenta esto.
Algoritmo de girar calibres
Entrada: Lista cclica P con los n vertices de un polgono convexo en orientaci on
positiva.

56 TEMA 4: DI

AMETRO Y CALIBRES
Salida: Lista Q con las parejas de antpodas de P.
Paso 1: Hacer Q := .
Paso 2: Localizar en P los puntos mnimo y m aximo con orden lexicogr aco: x
min
y x
max
.
Paso 3: Hacer p := x
min
y q := x
max
.
Paso 4: Mientras q ,= x
min
o p ,= x
max
repetir:
Introducir en Q el par (p, q).
Hacer x := p +

qSIG(q) = p + SIG(q) q.
Si (p, SIG(p), x) < 0, hacer p := SIG(p).
Si (p, SIG(p), x) > 0, hacer q := SIG(q).
Si (p, SIG(p), x) = 0, a nadir a Q los pares: (p, SIG(q)), (SIG(p), q)
y hacer p := SIG(p) y q := SIG(q).
Paso 5: Acabar devolviendo Q.
Estudio de la complejidad:
El polgono convexo P ha de estar representado en una estructura que soporte la
funci on SIG, que para cada elemento v de P, SIG(v) de, en tiempo constante, el
elemento siguiente a v en P.
El paso 2 cuesta O(n). Los pasos 1,3 y 5 trivialmente O(1).
El bucle del paso 4, tiene un cuerpo con unas instrucciones que pueden ejecutarse
en tiempo constante. Por lo tanto el coste de este paso es del orden del n umero de
veces que se ejecuta el bucle que es exactamente n n
/
veces, donde n
/
es el n umero
de pares de lados paralelos de P. Para llegar a ese resultado basta observar que cada
vez que se ejecuta el bucle se avanza, o bien en p, o bien en q, o bien en ambos si
surge un par de lados paralelos. Los detalles se dejan como ejercicio. En denitiva
el paso 4 cuesta O(n).
Luego el algoritmo de girar calibres para encontrar todos las parejas de antpodas de un
convexo es O(n).
Estudio de la correccion: La correccion del algoritmo se deduce del hecho, muy f acil
de comprobar, de que cuando para ha calculado exactamente n +n
/
parejas de antpodas
distintas. La unica cuesti on que a estas alturas queda por justicar es el que el algoritmo
acaba. En efecto, la condici on de parada del algoritmo es que aparezca de nuevo el par
de antpodas inicial. Observese que si en P no hay lados paralelos, y por tanto siempre
sera ,= , cada par de antpodas que halla el bucle es comparado con el par inicial, con
lo cual tenemos la garanta de que va a parar en cuanto aparezca. Sin embargo, cuando
aparece un par de lados paralelos, el algoritmo halla dos parejas de antpodas que guarda

4.3. DI

AMETRO DE UN POLGONO CONVEXO 57


sin comprobar si alguno de ellos es la pareja inicial. As que en principio existe el riesgo
de pasar de largo la condici on de parada y proseguir indenidamente. De modo que lo que
hay que comprobar es que eso nunca se puede dar.
La situaci on de peligro sera la siguiente: se tiene que = y uno de los pares,
(p, SIG(q)) o ( SIG(p), q) es el par crtico (x
max
, x
min
). Ya que cuando se llega a esta
situaci on el par (p, q) donde se apoyan ahora los calibres ha sido contrastado con el par
crtico y dado por bueno, necesariamente x
max
= SIG(p) y x
min
= q, o bien x
max
= p
y x
min
= SIG(q) (vease la gura). Si esto es as entonces p y SIG(p) tienen la misma
abscisa: la maxima de todos los vertices de P, y q y SIG(q) tambien, en este caso la
mnima. N otese que ninguna de estas dos situaciones se pueden dar porque los puntos x
min
y x
max
son respectivamente los vertices menor y mayor de P con el orden lexicogr aco.
(b)
p
xmin
C
2
SIG(q)
xmax
C
1
(c)
q
C
2
xmin
C
1
xmax
SIG(p)
C
1
(a)
p
q
C
2
SIG(q )
SIG(p)
(a) Pares introducidos sin comprobar. Esto tiene problemas si (b) x
max
= SIG(p) y x
min
= q, o (c)
x
max
= p y x
min
= SIG(q). Ambos casos son imposibles por la eleccion de x
min
y x
max
.
4.3.3 Conclusiones
Resumiendo los resultados obtenidos a modo de minuta tenemos lo siguiente.
1. Coste de calcular el di ametro de un polgono convexo P de n lados:
(a) Calcular todos los pares de antpodas de P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n)
(b) Calcular la distancia entre vertices de cada par . . . . . . . . . . . . . . . . . . . . . . . . . O(n)
(c) Calcular el mayor valor de esas distancias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n)
(d) Total: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n)
2. Coste de calcular el di ametro de una nube S de n puntos:
(a) Calcular el CH(S). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(nlog n)
(b) Calcular el diam(CH(S)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n)
(c) Total: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(nlog n)
Por tanto, y centr andonos de nuevo en el problema con el que comenzamos el tema,
nlog n es una cota superior del problema de encontrar el di ametro de una nube de n
puntos ya que existe un algoritmo con esa complejidad que lo resuelve. Adem as, tal y
como veremos a continuacion, nlog n tambien es cota inferior del problema y por tanto se
concluye los siguientes resultados acerca del problema que da por concluido su estudio.

58 TEMA 4: DI

AMETRO Y CALIBRES
Teorema 4.3.9 Hallar el di ametro de una nube de n puntos tiene complejidad (nlog n).
Corolario 4.3.10 Cualquier algoritmo de complejidad O(nlog n) que resuelva el problema
es optimo.
3.1 Cota inferior del problema
Como suele ser habitual para encontrar una cota inferior a nuestro problema, la estrategia
a seguir es reducir, utilizando un bajo coste, otro problema cuya complejidad se conoce
al problema que nos ocupa. Hay ciertos problemas que se consideran cl asicos, como el
de ordenaci on de n n umeros o como el de interseccion de conjuntos de n n umeros que
enunciaremos a continuaci on, de los que se sabe que su complejidad es (nlog n) y que se
pueden utilizar para estos nes.
Dados dos conjuntos de n umeros, A = a
1
, . . . , a
n
y B = b
1
, . . . , b
n
, averiguar si
A B = .
Teorema 4.3.11 El test de intersecci on de conjuntos de n n umeros
n
al c alculo del
di ametro de una nube de n puntos.
Dem: Dados los conjuntos de n umeros A = a
1
, . . . , a
n
y B = b
1
, . . . , b
n
, consideremos
en el plano las rectas que pasan por el origen de coordenadas y tienen por pendiente cada
uno de esos n umeros. Es decir, las rectas de ecuacion y = a
k
x para todo k 1, . . . , n y
las de ecuacion y = b
k
x para todo k 1, . . . , n. Consideremos tambien la circunferencia
unidad centrada en el origen de coordenadas.
Para cada k 1, . . . , n, sean p
k
el punto de abscisa positiva que es interseccion de la
recta y = a
k
x con la circunferencia, y q
k
el punto de abscisa negativa que es interseccion
de la recta y = b
k
x con la circunferencia. Vease la gura.
y=b x
k
y=a x
k
q
k
p
k
Resultado de la transformaci on.
En una circunferencia la m axima distancia entre dos de sus puntos se alcanza en puntos
diametralmente situados siendo la distancia entre ellos el di ametro de la circunferencia.
En el caso concreto de los puntos p
1
, . . . , p
n
, q
1
, . . . , q
n
construidos, si hay dos que est an

4.4. OTRAS APLICACIONES DE LA ROTACI

ON DE CALIBRES 59
diametralmente situados signica que proceden de la misma recta o lo que es lo mismo,
que A y B tienen (al menos) un elemento com un.
Por lo tanto, A B ,= diam(p
1
, ..., p
n
, q
1
, ..., q
n
) ,= 2.
Y el problema de la interseccion de A y B se reduce al problema de calcular el di ametro
de un conjunto de 2n puntos en el plano en tiempo O(n), que es el coste de calcular las
intersecciones de las 2n rectas con la circunferencia.
QED
Teorema 4.3.12 El problema de hallar el di ametro de una nube de n puntos es (nlog n).
Dem: Sea / un algoritmo tal que, dada una nube de puntos en el plano devuelve el valor
de su di ametro.
Consideremos el siguiente algoritmo que resuelve el problema de decision enunciado
anteriormente sobre la interseccion no vaca de dos conjuntos de n n umeros A y B.
Algoritmo B:
Paso 1: Para cada elemento a
k
de A, hallar el punto de abscisa positiva p
k
que es
interseccion de y = a
k
x y la circunferencia unidad. Obtener de manera an aloga
para cada b
k
de B el punto q
k
de abscisa negativa que es interseccion de y = b
k
x
y la circunferencia unidad.
Sea S = p
1
, ..., p
n
, q
1
, ..., q
n
.
Paso 2: Utilizar el algoritmo / para hallar el di ametro de S.
Paso 3: Si diam(S) ,= 2, A y B no tienen elementos comunes y, en otro caso s.
El coste de este algoritmo es T
B
(n) = C n+T
/
(2n) = (nlog n). De lo que se deduce
que T
/
(2n) = (nlog n).
QED
4.4 Otras aplicaciones de la rotacion de calibres
Para concluir el tema veamos como aplicar el metodo de girar calibres para hallar otras
magnitudes y objetos geometricos.
4.4.1 Anchura de una nube de puntos
Denicion 4.4.1 La anchura de una nube de puntos es la menor distancia entre rectas
soporte paralelas.
A la regi on del plano comprendida entre dos rectas paralelas la llamaremos banda y
llamaremos recta borde de la banda a cada una de las rectas que la denen. Si una
banda est a determinada por un par de rectas soporte a un conjunto dado la llamaremos
banda soporte del conjunto.

60 TEMA 4: DI

AMETRO Y CALIBRES
Resulta evidente que la anchura de una nube de puntos coincide con la anchura de su
cierre convexo. Por tanto nos ocuparemos de la anchura de un polgono convexo.
Este concepto puede interpretarse de la siguiente manera. Supongamos que tenemos
sol de medioda, es decir, suponemos que los rayos caen sobre la tierra perpendicular-
mente. Supongamos que tenemos suspendido en el aire un polgono convexo en un plano
perpendicular a la supercie terrestre, vease la siguiente gura. La sombra que produce
el polgono es un segmento en el suelo. Si giramos el polgono, la longitud de la sombra
aumentar a y disminuir a. La mayor longitud que se obtendr a es la mayor distancia entre
los vertices del polgono, es decir su di ametro. La menor es su anchura.
Interpretaci on solar del di ametro y la anchura de un convexo.
Dado que las bandas se apoyan en parejas de antpodas, podra considerarse un algo-
ritmo que use el metodo de girar calibres visto anteriormente. Sin embargo, es importante
resaltar que la anchura de un polgono convexo no es la menor de las distancias entre
vertices antpodas sino la menor distancia entre las rectas soporte en parejas de antpodas
(observese que en principio hay innitas). De modo que si se quiere utilizar el algoritmo
de rotar calibres hay que adaptarlo adecuadamente para que calcule la anchura.
Proposicion 4.4.2 Al menos una de las rectas borde de la banda soporte en la que se
alcanza la anchura de un polgono convexo, contiene un lado del polgono.
Dem: La clave de la demostracion esta en que la funci on anchura aplicada a las bandas
que se apoyan en dos puntos p y q es una funci on unimodal
1
con maximo en la banda
ortogonal al segmento pq y valor la distancia entre estos puntos.

p
q
f()
0
2
d(p,q) y=f()
La anchura de las bandas determinadas por p y q es una funci on del angulo : f() = d(p, q) sen()
para todo [0, ].
1
Con un unico m aximo local.

4.4. OTRAS APLICACIONES DE LA ROTACI

ON DE CALIBRES 61
Entonces, si consideramos la banda que realiza la anchura de S con puntos de contacto
p y q, y si suponemos que las rectas no contienen ning un lado del cierre convexo, entonces
se puede girar dicha banda en ambos sentidos y tener nuevas bandas soportes apoyadas
en los mismos puntos. La idea es que siempre hay un angulo y un sentido de giro que
permite mejorar la anchura de la banda original, es decir, disminuirla, lo cual contradice
su minimalidad. Veamos c omo.
Para cada punto de contacto, p y q, consideramos los angulos que forman las respectivas
rectas soporte de la banda con los lados del cierre convexo adyacentes a esos puntos. Sea
el menor de esos cuatro angulos. Por hip otesis ,= 0, y si giramos la banda esta
cantidad tanto en sentido positivo como negativo tendremos otra banda soporte en los
mismos puntos. Entonces,
1. Si la banda original es ortogonal al segmento pq, girar en cualquier sentido disminuye
la anchura.
2. Si la banda original no es ortogonal al segmento pq, girar un angulo en sentido de
alejamiento de la banda ortogonal disminuye la anchura.
p
q

1
Si la banda que da la anchura de P no se apoya en ning un lado, se pueden girar las rectas en una de las
dos direcciones de modo que disminuye la anchura de la banda.
QED
De este resultado se desprende que, si el polgono P tiene n lados, solo hay que consid-
erar n candidatos para detectar la banda soporte m as estrecha: para cada lado l de P la
banda que dene la recta que lo contiene y la recta paralela que es soporte. Esta segunda
recta se apoya en un vertice (o en dos si es un lado paralelo a l) q que es antpoda de los
dos extremos de l. La anchura de esta banda es la altura del tri angulo de base l y vertice
opuesto q.
Calculo con calibres de la anchura de un convexo
Entrada: Lista cclica P con los n vertices de un polgono convexo en orientaci on
positiva.
Salida: Valor de la anchura de P, A.
Paso 1: Inicializar A := .
Paso 2: Localizar en P los puntos mnimo y m aximo con orden lexicogr aco: x
min
y x
max
.

62 TEMA 4: DI

AMETRO Y CALIBRES
Paso 3: Hacer p := x
min
y q := x
max
.
Paso 4: Mientras q ,= x
min
o p ,= x
max
repetir:
Hacer x := p +

qSIG(q) = p + SIG(q) q.
Si (p, SIG(p), x) < 0,
1. Hallar A
/
:=
2 [(p, SIG(p), q)[
d(p, SIG(p))
.
2. Hacer A := min(A, A
/
) y p := SIG(p).
Si (p, SIG(p), x) > 0,
1. Hallar A
/
:=
2 [(q, SIG(q), p)[
d(q, SIG(q))
.
2. Hacer A := min(A, A
/
) y q := SIG(q).
Si (p, SIG(p), x) = 0,
1. Hallar A
/
:=
2 [(q, SIG(q), p)[
d(q, SIG(q))
.
2. Hacer A := min(A, A
/
), p := SIG(p) y q := SIG(q).
Paso 5: Acabar devolviendo A.
La complejidad de este algoritmo es O(n).
4.4.2 Rectangulo de area mnima que contiene a una nube
Consideremos ahora el problema de encontrar el rect angulo de area mnima que contiene
a una nube de puntos.
De nuevo podemos reducir esta b usqueda a la del rect angulo de menor area que contiene
a su cierre convexo ya que tal rectangulo es un convexo que contiene a la nube y por tanto
ha de contener a su cierre convexo.
As pues, sea P un polgono convexo de n lados y se quiere hallar ecientemente el
rectangulo de menor area R que lo contiene. Desde luego la soluci on no tiene por que ser
unica.
Una primera observaci on es que necesariamente R ha de apoyar cada uno de sus lados
en un vertice de P. Si alg un lado l de R no se apoya, se puede desplazar paralelamente
l hacia P y se obtiene otro rectangulo de menor area que R y que contiene a P. Eso
contradice el que R sea el de menor area conteniendo a P.
Por tanto, cada par de lados opuestos de R se apoya en un par de vertices antpodas
de P. Este dato es importante pues nos sugiere el uso del metodo de rotaci on de calibres.
En esta ocasion, en vez de usar un par de calibres, habra que usar dos: un par ortogonal
a otro, as se obtendran los cuatro vertices de apoyo del rectangulo. Sin embargo, es f acil
observar que cuatro puntos no bastan para determinar un rect angulo: hay innitos que se
apoyan en ellos.

4.4. OTRAS APLICACIONES DE LA ROTACI

ON DE CALIBRES 63
q
1
q
2
q
3
q
4
C
4
C
3
C
2
C
1
.
La siguiente proposici on permite zanjar la cuesti on.
Proposicion 4.4.3 El rect angulo de menor area que contiene a un polgono convexo se
apoya en uno de los lados del polgono.
Dem: La idea, al igual que para la anchura, es que si ning un lado del rect angulo se apoya
en un lado del convexo, entonces hay libertad suciente para girar cada lado del rect angulo
sobre su punto de apoyo en P y obtener otro rect angulo de area menor contradiciendo la
hip otesis.
La prueba consiste pues en justicar que siempre hay un angulo y una direcci on de giro
en la que se disminuye el area.
Como al n y al cabo el area del rectangulo es el producto de las anchuras de las bandas
que determinan sus lados, un primer intento sera disminuir una de estas cantidades tal
y como se hizo en el apartado anterior. Sin embargo, ambas magnitudes van ligadas y, a
veces, disminuir una supone aumentar la otra con lo que no est a claro que disminuya el
producto de ambas. Vease la gura.
q
3
q
4
q
1
q
2

1
R
Para disminuir la altura habra que girar en sentido negativo un peque no angulo pero en esa direcci on
aumenta la base.
En este caso, consideramos los angulos
1
y
2
marcados en la gura anterior. El area
de R sera:
A(R) = d(q
1
, q
3
)d(q
2
, q
4
) sin(
1
) cos(
2
)
El rect angulo R
/
que se obtiene gir ando cada lado un angulo (positivo o negativo) es:
A(R
/
) = d(q
1
, q
3
)d(q
2
, q
4
) sin(
1
) cos(
2
) con
1
[0, ],
2
[

2
,

2
].
Podemos considerar esto como una funci on de , g() = A(R
/
). Observese que g(0) =
A(R), y se trata de averiguar c omo tomar (peque no) para que g decrezca localmente.

64 TEMA 4: DI

AMETRO Y CALIBRES

q
4
q
3
q
1
q
2

1
R
q
3
q
1
q
2

1
R
R'
q
4
Si R no se apoya en un lado un peque no giro en una de las dos direcciones puede dar otro rect angulo
menor.
g
/
() = d(q
1
, q
3
)d(q
2
, q
4
) cos(
1
+
2
2) con
1
+
2
(

2
,
3
2
)
g
/
(0) = d(q
1
, q
3
)d(q
2
, q
4
) cos(
1
+
2
)
Si
1
+
2
>

2
, entonces g
/
(0) > 0. En este caso: tomando < 0, g() < g(0).
Si
1
+
2
<

2
, entonces g
/
(0) < 0. En este caso: tomando > 0, g() < g(0).
Si
1
+
2
=

2
, entonces g
/
(0) = 0 y g
//
(0) < 0 (0 es maximo local de g). En este
caso: tomando ,= 0, g() < g(0).
QED
Como consecuencia de este resultado se observa que basta considerar n candidatos:
para cada lado de P el unico rect angulo circunscrito que se apoya en el.
Tomemos dos pares de calibres orientados como muestra la gura. Los puntos de apoyo
determinan una cuaterna (q
1
, q
2
, q
3
, q
4
) con q
i
, q
i+2
antpodas para i 1, 2.
Una observaci on interesante es que cuando los calibres han girado un angulo total de

2
, (C
4
se sit ua donde inicialmente estaba C
1
y donde corresponda todos los dem as), ya
se han apoyado en todos los lados de P y por tanto ya se ha pasado por el rect angulo de
menor area.
Todo este estudio nos conduce al siguiente algoritmo.

Area del rectangulo de area mnima que contiene a un convexo


Entrada: Lista cclica P con los n vertices de un polgono convexo en orientaci on
positiva.
Salida: Valor del area del rectangulo de menor area que contiene a P, M.
Paso 1: Localizar en P los puntos de abscisa mnima, m axima, ordenada mnima y
ordenada m axima. Inicializar la posici on de los calibres C
1
, C
2
, C
3
, C
4
sobre
ellos como muestra la primera gura.
Paso 2: Inicializar
q
1
:= x
min
q
3
:= x
max
q
2
:= y
min
q
4
:= x
max
. (Si sobre alguno de los calibres hubiera
mas de un vertice se elige el ultimo en la direcci on del calibre).

4.4. OTRAS APLICACIONES DE LA ROTACI

ON DE CALIBRES 65
Paso 3: Inicializar M := .
Paso 4: Mientras la cuaterna (q
1
, q
2
, q
3
, q
4
) ,= (y
min
, x
max
, y
max
, x
min
) repetir:
Hallar = min
,
(C
i
,

q
i
SIG(q
i
)) / i = 1, 2, 3, 4
Actualizar las posiciones de los calibres gir andolos .
Supuesto que =
,
(C
j
,

q
j
SIG(q
j
)),
1. Hallar el area, M
/
, del rectangulo que se apoya en q
1
, q
2
, q
3
, q
4
y
sobre el lado q
j
SIG(q
j
).
2. Actualizar M := min(M, M
/
).
3. Hacer q
j
:= SIG(q
j
).
Paso 5: Acabar devolviendo M. (Si adem as se desea el rectangulo, la modicaci on
es muy sencilla).
La complejidad de este algoritmo es O(n). Por tanto, en tiempo O(nlog n) se puede
obtener un rect angulo de area mnima que contiene a una nube de n puntos.
Para concluir apuntamos como realizar el c alculo efectivo del area del rectangulo y de
la comparacion entre angulos que se lleva a cabo en el algoritmo.

Area del rectangulo Supongamos que el lado apoyado es q


j
SIG(q
j
), vease la siguiente
gura.
q
j
q
j+1
q
j-1
q
j+2
SIG(q )
j
Considerese la suma de los ndices modulo 4.
Consideremos el vector

u =

q
j
SIG(q
j
) = (u
1
, u
2
) y sea

u
/
el vector ortogonal a

u de
coordenadas (u
2
, u
1
). Entonces,

Area =
<

u ,

q
j1
q
j+1
> <

u
/
,

q
j
q
j+2
>
| u |
2
.
Determinacion del mnimo angulo El menor angulo entre los cuatro que forman cada
calibre con el lado siguiente del polgono puede hallarse sin calcular dichos angulos. Vease
la siguiente gura.

66 TEMA 4: DI

AMETRO Y CALIBRES
(a) (b)
q
1
x
1
x
2
x
3
x
4
(c)
q
4
q
1
q
2
q
3
u
3
u
2
u
1
u
4
OX
OY
C
1
C
2
C
3
C
4
C
1
Reduccion de todos los angulos a un solo cuadrante.
Para cada i 1, 2, 3, 4 consideramos los vectores

u
i
=

q
i
SIG(q
i
) y

u
/
i
que es el vector
resultante de girar

u
i
un angulo

2
. Con ellos construimos los siguientes puntos:
x
1
= SIG(q
1
) x
3
= q
1

u
3
x
2
= q
1

u
/
2
x
4
= q
1
+

u
/
4
Estos puntos estan en un cuadrante y nuestro problema se reduce a averiguar cu al es
el menor angulo que forman estos puntos con el calibre C
1
. Esto se puede hacer f acilmente
con tests de areas signadas.
4.5 Referencias y lecturas complementarias
Apartado 2.3 del captulo 4 del libro Computational Geometry. An Introduction
de F. PREPARATA, M. I. SHAMOS.
Solving Geometric Probems with the Rotating Calipers de G. T. Toussaint, Pro-
ceedings of IEE MELECON 83.

Tema 5
Triangulaciones
5.1 Introduccion
La triangulaci on es una de las herramientas b asicas no solo en geometra computacional
sino en ambitos tan diversos como en reconocimiento de formas, gr acos por ordenador,
sistemas de informacion geogr aca, cartografa, dise no asistido por ordenador, modelado
de solidos, etc.
Por citar alg un ejemplo concreto, recordemos que una tecnica muy habitual en c alculo
numerico es la interpolaci on lineal a trozos de funciones con objeto de aproximarlas. Si
se trata de una funci on de una variable, y se conoce cu anto vale en ciertos puntos de
su dominio, x
1
, x
2
, . . . , x
m
, como en la recta real estos puntos estan ordenados, los seg-
mentos rectos de la funcion interpoladora quedan perfectamente determinados por cada
par de puntos consecutivos. Pensemos ahora en la situaci on an aloga para aproximar una
funci on de dos variables. Se conoce el valor de la funci on en varios puntos del plano
(x
1
, y
1
), (x
2
, y
2
), . . . , (x
m
, y
m
) y se trata de interpolar linealmente a trozos la funci on en
esos puntos. Los trozos ahora son porciones de planos en el espacio y la pregunta es
como determinar cada uno de esos trozos. La respuesta mas natural es que esos trozos
sean tri angulos, as, lo que viene a sustituir al orden en la recta real en este caso es la
triangulaci on de la nube de puntos, vease la gura.
x
y
x
z
y
Aproximaci on lineal de funciones de una y dos variables.
Determinar la posici on de un determinado punto respecto a un polgono parece un
problema mucho m as simple si este esta triangulado ya que los tri angulos son polgonos
mucho mas manejables. En general, descomponer polgonos complicados en otros mas
simples y con buenas propiedades, suele ser a menudo un recurso poderoso para resolver
ecientemente ciertos problemas como los de localizacion, visibilidad, reconocimiento de
67

68 TEMA 5: TRIANGULACIONES
formas, calculo de trayectorias mnimas y sin colisi on, etc. De ah que surja la necesidad
de averiguar si tales descomposiciones se pueden llevar a cabo y, si es as, como calcularlas.
Este tema se centra en el estudio de la triangulaci on de polgonos simples. Se estable-
ceran las deniciones y los resultados b asicos relativos a este tipo de triangulaci on, as
como algunos algoritmos para calcularla ecientemente. Como motivacion haremos una
peque na incursi on en problemas de visibilidad y galeras de arte y veremos como aplicar
las triangulaciones en su resoluci on.
5.2 Problema de la galera de arte
Imaginemonos por un instante que el plano de una galera de arte viene representado por
un polgono simple y es preciso vigilar su interior colocando guardias en sus vertices.
Vigilando (iluminando) una galera de arte.
Se trata de averiguar cu antos guardias son sucientes para vigilar totalmente el polgono
y d onde colocarlos. Por supuesto que colocando un guardia en cada vertice el polgono
estara vigilado, pero se trata de optimizar la vigilancia. Esta optimizaci on puede enfocarse
de distintas maneras.
Una consistira en, dado un polgono simple, encontrar el menor n umero de guardias
que se necesita para vigilar su interior, y su ubicaci on.

Este es un problema sumamente
complicado, de hecho esta catalogado entre los problemas computacionalmente intratables
(NP-duro).
Otra manera de enfocar el problema de optimizaci on, m as asequible, consistira en
encontrar el n umero de guardias que siempre son sucientes para vigilar todo polgono de
n lados, y que en algunas ocasiones es necesario, es decir, que existen polgonos de n lados
que requieren exactamente ese n umero de guardias.
Este problema se ha venido llamando problema de la galera de arte y fue propuesto por
V. Klee en 1973. Dos a nos mas tarde V. Chv atal lo resolvi o. A continuaci on enunciamos el
teorema que recoge el resultado obtenido, si bien hemos preferido mostrar aqu la elegante
demostracion dada posteriormente por S. Fisk.
Teorema 5.2.1 (Teorema de la galera de arte)

n
3

guardias colocados en vertices


son siempre sucientes y ocasionalmente son necesarios, para vigilar el interior de cualquier
polgono simple de n lados.

5.2. PROBLEMA DE LA GALERA DE ARTE 69
Dem: Esta demostracion es constructiva ya que proporciona un metodo para colocar
dichos guardias. En ella se echa mano de ciertas herramientas (triangulaci on de polgonos,
tricoloreado de grafos, etc.) abusando, quiz a un poco, de la intuici on para dar por sentado
que esto se puede hacer. Aceptemoslas como ciertas de momento, la siguiente seccion del
tema se ocupara de probar estos detalles.
Suciencia: En primer lugar, triangulemos el interior del polgono P. Vease la siguiente
gura. Esta triangulaci on puede verse como un grafo cuyos nodos son los vertices de P y
cuyas aristas son los lados de P junto con todos los segmentos a nadidos para triangular.
Este grafo se puede tricolorear, es decir, se puede asignar a cada vertice uno de los tres
colores disponibles, de modo que no haya dos vertices del mismo color adyacentes en el
grafo. Consideremos una tricoloraci on de la triangulaci on. Sea n
i
el n umero de vertices de
P coloreados con el color i, para cada i {1, 2, 3}.
Triangulaci on del polgono y su tricoloreado.
Evidentemente n = n
1
+n
2
+n
3
, y como todo tri angulo tiene un vertice de cada color y
todo punto de P esta en alguno de los tri angulos, colocando guardias en todos los vertices
de un mismo color, P esta totalmente vigilado. Elijamos pues el color menos utilizado.
Entonces n 3 min(n
1
, n
2
, n
3
), de donde
min(n
1
, n
2
, n
3
)

n
3

Y por tanto,

n
3

guardias son siempre sucientes.


Necesidad: Vamos a construir, para cada n 3, un polgono que requiera

n
3

guardias
para ser vigilado. Sea k =

n
3

, entonces consideramos el peine con k p uas que muestra


la gura. El vertice extremo de la p ua solo puede vigilarse colocando un guardia sobre el
o sobre alguno de sus dos vertices adyacentes. En cualquier caso el guardia que se coloque
para vigilar una p ua no puede aprovecharse para adem as vigilar otra, por tanto hace falta
un guardia por cada p ua, es decir k.

70 TEMA 5: TRIANGULACIONES
k
{
(a) (b) (c)
(a) n = 3k, (b) n = 3k + 1 (c) n = 3k + 2
QED
A raz de este resultado surgieron, y siguen surgiendo, multitud de problemas relaciona-
dos con la visibilidad, vigilancia e iluminaci on que globalmente se denominan problemas
de galeras de arte. Suelen aparecer al considerar variantes en las condiciones del problema
de la galera de arte. Por ejemplo, que pasa si eliminamos la restriccion de que los guardias
hayan de estar situados en los vertices y les permitimos que esten colocados en el interior.
O por que no, en vez de estar jos, les permitimos que patrullen a lo largo de un lado. O
bien, el polgono lo interpretamos como una fortaleza y queremos vigilar el exterior; o si
lo interpretamos como una prisi on, hay que vigilar tanto el interior como el exterior, etc.
Las posibilidades se multiplican si junto a esas variantes, se considera el estudio de
casos especiales de polgonos, por ejemplo los ortogonales, que son aquellos cuyos lados
son paralelos a los ejes coordenados. O se vara el tipo de visibilidad, por ejemplo en
vez de lineal, circular. Esto es, dos puntos x e y interiores a P se ven circularmente si
existe un arco de circunferencia totalmente contenido en P que los conecta. Este tipo de
visibilidad resulta muy interesante sobre todo si se interpreta en terminos de movimiento
sin colisi on. Por ejemplo, si x e y se ven linealmente, es decir el segmento recto xy esta
contenido en P, signica que se puede ir de x a y en lnea recta. Si no se ven linealmente
pero s circularmente signica que realizando un giro s se puede ir de x a y.
Polgono ortogonal.
5.3 Triangulacion de un polgono
Denicion 5.3.1 Dado un polgono simple P de n vertices, una triangulaci on interior
de P es una subdivisi on de P en regiones triangulares de interiores disjuntos cuyos vertices
son exclusivamente vertices de P.

5.3. TRIANGULACI

ON DE UN POLGONO 71
Dos vertices u y v de P determinan una diagonal interna de P si el segmento abierto
uv esta contenido en el interior de P.
En una triangulaci on de P los lados de cada tri angulo son o bien lados de P o bien
diagonales internas.
Proposicion 5.3.2 Todo polgono de n > 3 vertices admite una diagonal interna.
Dem: Sea u un vertice convexo de P (por ejemplo x
min
), y sean v y w sus vertices adya-
centes.
u
v
w
P
u
v
w
P
y
Localizacion de una diagonal interna.
1. Si el tri angulo t = vuw no contiene ning un vertice de P salvo v, u, w, entonces vw
es una diagonal interna de P ya que cualquier lado de P que intersecara a vw tendra
uno de sus extremos en dicho tri angulo.
2. En otro caso, de todos los vertices de P {u, v, w} contenidos en t, vease la gura,
sea y el que mas dista del segmento vw (uno de ellos si hubiera varios). Entonces uy
es una diagonal interna de P ya que si hubiera un lado de P que intersecara a uy
necesariamente tendra uno de sus extremos en t y dicho vertice distara de vw mas
que y lo cual es absurdo. QED
Corolario 5.3.3 Todo polgono simple admite una triangulaci on.
Dem: Por inducci on sobre el n umero de vertices del polgono.
- Para n = 3, P es el unico tri angulo de la triangulaci on T de P.
- Supong amoslo cierto para todo polgono con m vertices, con 3 m < n, y sea P
un polgono con n vertices. Como n > 3, el teorema anterior garantiza la existencia
de una diagonal interna uw de P. Sean P
1
y P
2
los subpolgonos resultantes de
dividir P cortandolo por esa diagonal. El n umero de vertices de cada uno de esos
polgonos satisfacen 3 n
1
, n
2
< n, luego por hip otesis de induccion admiten sendas
triangulaciones T
1
y T
2
. Entonces T = T
1
T
2
es una triangulaci on de P. QED
Si identicamos una triangulaci on de P, con el conjunto de sus diagonales internas
(lo haremos siempre que se trate de hallarla), la demostraci on anterior proporciona un
algoritmo para triangular P a base de ir introduciendo recursivamente diagonales internas.

72 TEMA 5: TRIANGULACIONES
Triangulacion por inserci on de diagonales
1. Si n = 3, devolver como T (conjunto de diagonales de la triangulaci on).
2. Si n > 3,
(a) Encontrar una diagonal interna vw de P.
(b) Dividir P en dos polgonos P
1
, P
2
cortandolo por vw.
(c) Obtener recursivamente T
1
y T
2
, y devolver T
1
T
2
{vw}.
Complejidad:
Tiempo: T(n) = T(n
1
) + T(n
2
) + O(n) donde n
1
= |P
1
|, n
2
= |P
2
|, n = |P| y
n
1
+ n
2
= n + 2.
Como en el peor de los casos n
1
o n
2
es n 1, T(n) = O(n
2
).
Espacio: S(n) = O(n + d) donde d es el n umero de diagonales internas de T (P).
La pregunta clave ahora es cu antas diagonales internas tiene una triangulaci on de un
polgono de n lados. Acaso depende de como sea el polgono, o m as bien del metodo
utilizado para triangularlo. El siguiente resultado despeja toda duda a este respecto.
Teorema 5.3.4 Toda triangulaci on de un polgono de n vertices tiene n 2 tri angulos y
n 3 diagonales internas.
Dem: Por inducci on sobre n:
- Para n = 3, P es un tri angulo, s olo tiene una triangulaci on con n 2 = 1 tri angulo
y n 3 = 0 diagonales internas.
- Supong amoslo cierto para todo polgono de m vertices, 3 m < n. Sea P un
polgono con n vertices y T una triangulaci on de P. Como n > 3, la triangulaci on
deber a contener al menos una diagonal interna vw que divide a P en dos polgonos
P
1
y P
2
, de tama nos n
1
, n
2
respectivamente, con n
1
+ n
2
= n + 2 y 3 n
1
, n
2
< n.
Tambien divide a T en las respectivas triangulaciones de estos polgonos, T
1
y T
2
.
Por hip otesis de induccion, T
i
consta de n
i
2 tri angulos y n
i
2 diagonales internas,
para cada i. Evidentemente T
1
y T
2
no tienen en com un ning un tri angulo y ninguna
diagonal interna, luego el n umero de tri angulos de T es (n
1
2)+(n
2
2) = n+24 =
n2 y el n umero de diagonales internas de T es (n
1
3)+(n
2
3)+1 = n+25 = n3.
QED
Puesto que el tama no de una triangulaci on (n umero de tri angulos y de diagonales inter-
nas) viene determinado a priori por el n umero de vertices del polgono, resulta razonable
preguntarse cu anta libertad queda para obtener una triangulaci on.
El n umero de triangulaciones distintas que admite un polgono de n vertices oscila
entre una como en los polgonos vela, vease la siguiente gura, y el n umero de Catalan

5.3. TRIANGULACI

ON DE UN POLGONO 73
c
n2
=
1
n 1

2n 4
n 2

que es el n umero de triangulaciones de un polgono convexo. Es f acil


observar que el n umero de triangulaciones est a estrechamente relacionado con el n umero
de vertices concavos que tiene P y con el modo en que estos estan distribuidos.
(a) (b)
Polgonos extremales en cuanto al n umero de triangulaciones distintas que admite: (a) s olo admite una, y
(b) el convexo de n vertices que admite c
n2
(no estan dibujadas todas).
5.3.1 Grafo dual de una triangulacion
Una triangulaci on T de un polgono P es un grafo plano cuyos vertices o nodos son los
vertices de P y las aristas, los lados de P junto con las diagonales internas de T . Como
veremos, este grafo tiene propiedades muy interesantes de las que carece, por ejemplo, la
triangulaci on de una nube de puntos.
El grafo dual de este grafo es aquel cuyos vertices representan los triangulos de T y la
adyacencia entre tri angulos viene dada por la vecindad, es decir por compartir un lado.
Triangulaci on de un polgono y su grafo dual (en gris).
Teorema 5.3.5 El grafo dual de la triangulaci on de un polgono simple es un arbol.
Dem: Basta ver que es un grafo acclico y que la diferencia entre el n umero de aristas y el
de nodos es uno. Lo segundo es inmediato de comprobar ya que tiene tantos nodos como
tri angulos: n 2 y tantas aristas como diagonales internas hay en la triangulaci on: n 3.
En cuanto a lo primero, un ciclo en el dual de una triangulaci on de un polgono simple
es imposible (n otese que en en el dual de una triangulaci on de una nube de puntos s
es posible, vease la siguiente gura). En efecto, si t
1
, t
2
, . . . , t
k
, t
1
(k 3), fuera un ciclo,
signicara que podemos ir de un tri angulo al consecutivo en el ciclo atravesando diagonales

74 TEMA 5: TRIANGULACIONES
internas. Esto implica que necesariamente hay un vertice del polgono en el interior del
mismo lo cual es absurdo.
Triangulaci on de una nube de puntos. Ni es tricoloreable ni su grafo dual un arbol.
QED
Denicion 5.3.6 En un polgono se denomina oreja a un vertice convexo cuyos vertices
adyacentes determinan una diagonal interna del polgono. Por extensi on tambien se llama
oreja en una triangulaci on del polgono, al tri angulo en el que dos de sus lados son lados
del polgono y el otro no.
(a) Orejas de un polgono. (b) Orejas de una triangulaci on.
Observese que las orejas en una triangulaci on son nodos de grado uno en el arbol dual,
es decir, son las hojas. Como todo arbol con m as de un nodo tiene al menos dos hojas,
se concluye que para un polgono con m as de 3 vertices toda triangulaci on suya tiene al
menos dos orejas.
Como aplicacion de este hecho tenemos, por un lado, un algoritmo para triangular P
cortando inductivamente orejas, y por otro lado, veremos que la triangulaci on de un
polgono simple, vista como un grafo, se puede tricolorear.
Triangulacion cortando orejas
1. Si n = 3, devolver como T .
2. Si n > 3,
(a) Encontrar un vertice oreja u en P.
(b) Cortar esa oreja, es decir considerar el polgono P

= P u
(c) Obtener recursivamente T

triangulaci on de P

, y devolver T

{vw}, siendo v
y w los vertices adyacentes a u en P.

5.4. ALGORITMOS DE TRIANGULACI

ON 75
Complejidad:
Tiempo: T(n) = T(n1)+t
1
(n) donde t
1
(n) es el tiempo de localizar en un polgono
de n vertices una oreja.
La complejidad de este algoritmo viene claramente marcada por el tiempo que se
tarde en encontrar una oreja. El metodo de fuerza bruta consistira en hacer, para
cada vertice convexo de P, el test que averigua en tiempo O(n) si sus vertices adya-
centes determinan una diagonal interna, y parar cuando el test sea positivo para al-
guno de ellos. As, en el peor de los casos, t
1
(n) = O(n
2
). De modo que T(n) = O(n
3
).
Sin embargo hay metodos mas depurados que permiten encontrar una oreja en tiempo
t
1
(n) = O(n), con lo que se obtendra que T(n) = O(n
2
).
Espacio: Como el n umero de diagonales internas d = n 3 entonces S(n) = O(n).
Teorema 5.3.7 Toda triangulaci on de un polgono simple, vista como un grafo, se puede
tricolorear.
Dem: Por inducci on sobre el n umero de vertices del polgono.
- Para n = 3 la triangulaci on consiste en un tri angulo y basta con colorear un vertice
de cada color.
- Supong amoslo cierto para todo polgono con n 3 vertices. Sea P un polgono con
n + 1 vertices y T una de sus triangulaciones. Como n + 1 > 3, T tiene una oreja.
Sea u el vertice oreja de P asociado a esa oreja de T . Si eliminamos de T el tri angulo
oreja, obtenemos una triangulaci on T

del polgono P

= P u obtenido al cortar a
P la oreja u.
Como P

tiene n vertices, por hip otesis de induccion toda triangulaci on suya se puede
tricolorear. En particular T

. Consideremos una de esas tricoloraciones. Si v y w
son los vertices adyacentes a u en P, estos han recibido sendos colores distintos en
la coloraci on de T

. Asignamos a u el tercer color y ya tenemos tricoloreado el grafo
T .
QED
Hasta aqu los algoritmos vistos tienen mas interes teorico que pr actico debido a su
alto coste. Es el momento de ver algunos realmente ecientes.
5.4 Algoritmos de triangulacion
Durante mucho tiempo ha sido objeto de deseo probar que un polgono simple se puede
triangular en tiempo lineal. Muchos fueron los intentos, algunos fallidos, otros obtuvieron
resultados parciales pero en cualquier caso la disciplina se enriqueci o enormemente con la
gran dosis de trabajo e imaginaci on vertidos sobre el problema y que ha dado lugar, por
el camino, a m ultiples resultados sobre cuestiones muy diversas.

76 TEMA 5: TRIANGULACIONES
Desde el punto de vista te orico, la cuesti on se zanjo cuando en 1991 B. Chazelle obtuvo
un algoritmo lineal. Sin embargo es un algoritmo muy complicado que a un no se ha
conseguido implementar. De modo que desde el punto de vista pr actico la brecha sigue
abierta.
A continuaci on daremos unos cuantos algoritmos de triangulaci on. Todos ellos muy
asequibles. Los primeros son optimos pero s olo son v alidos para tipos muy especiales
de polgonos. Por ultimo veremos un algoritmo que si bien no es optimo es sencillo de
implementar y es valido para todo tipo de polgono simple.
5.4.1 Triangulacion de polgonos especiales
Veamos como triangular en tiempo lineal ciertas familias de polgonos.
Los mas f aciles de triangular son, evidentemente, los convexos. Si P = (v
1
, v
2
, . . . , v
n
)
es un convexo, queda triangulado al a nadir las diagonales internas: v
1
v
k
, para todo k
{3, . . . , n 1}.
Los siguientes que analizaremos seran los abanicos. Si P no es convexo pero tiene un
vertice v
1
que ve a todos los demas entonces la situacion queda igual que antes. Conviene
observar aqu que en lo que sigue supondremos que en P no hay tres vertices alineados,
si no fuera as la situaci on no es nada grave pero habra que cambiar ligeramente como
calcular diagonales, vease por ejemplo en la gura c omo se arreglara en este caso.
v
8
v
9
v
5
v
4
v
3
v
2
v
6
v
7
v
1
v
11
v
8
v
9
v
5
v
4
v
3
v
2
v
6
v
7
v
1
v
11
v
10
v
10
Triangulaci on de un abanico desde v
1
: (a) con vertices en posicion general, (b) con alineaci on de vertices.
El siguiente problema de triangulaci on sera el de los polgonos debilmente visibles
desde un lado. Antes de abordarlo, conviene recordar lo que ocurra cuando aplicabamos
en el tema 3 el algoritmo de Graham para hallar el cierre convexo de un polgono debilmente
visible desde el exterior. Para este tipo de polgonos, sus bolsillos son polgonos debilmente
visibles desde un lado: la tapa del bolsillo. Al aplicar el algoritmo de Graham sobre los
vertices del bolsillo, todos los vertices salvo los dos de la tapa daban negativo el test y eso
signicaba que haba que borrarlos (vease la gura). Como se puede observar, resulta que
este proceso puede aprovecharse para triangular interiormente el bolsillo.

5.4. ALGORITMOS DE TRIANGULACI

ON 77
Los bolsillos de un DVE son polgonos debilmente visibles desde un lado y el scan de Graham los triangula.
Esto parece proporcionar un metodo para triangular en tiempo lineal un polgono
debilmente visible desde un lado. Y as es en la mayora de los casos, es decir cuando se
trata de uno de estos bolsillos, pero vayamos con cuidado porque, si bien es cierto que
todo bolsillo de un DVE es un polgono debilmente visible desde un lado, el recproco no
es cierto en general. Vease la gura.
v
2
v
1
v
j-1
v
k
v
k+1
v
j
v
2
v
1
v
j-1
v
j v
k
v
k+1
Polgono debilmente visible desde el lado v
1
v
2
. Se descompone en dos abanicos y un polgono tipo
bolsillo de un DVE.
Esta situaci on se tiene cuando el lado desde el que se ve a todo el polgono no es un lado de
su cierre convexo. En ese caso lo que procede es descomponer P en a lo mas tres polgonos
de la siguiente manera. Supongamos que P esta orientado positivamente y v
1
v
2
es el lado
en cuestion. Consideremos la recta que contiene ese lado con la orientaci on inducida por
la de P. Si hay vertices en el semiplano de la derecha, estos se encuentran formando una
o dos cadenas unidas a sendos extremos del lado v
1
v
2
. Vease la gura.
Consideremos los polgonos P
1
= (v
1
, v
k
, v
k+1
, v
k+2
, . . . , v
n
), P
2
= (v
2
, v
3
, . . . , v
j1
, v
j
) y
P
3
= (v
1
, v
2
, v
j
, v
j+1
, . . . , v
k1
, v
k
).
Como P es debilmente visible desde v
1
v
2
, los polgonos P
1
y P
2
, caso de existir, han de
ser abanicos desde v
1
y v
2
respectivamente, y su triangulaci on es trivial. El otro polgono
P
3
es un debilmente visible desde un lado, v
1
v
2
, que tambien es lado de su cierre convexo.
Luego se puede considerar un bolsillo de un polgono debilmente visible desde el exterior
y triangularlo como tal aplicando adecuadamente el algoritmo de Graham.
De modo que si tenemos un polgono debilmente visible desde un lado y conocemos ese
lado, podemos triangularlo en tiempo lineal en el n umero de vertices.
Utilizaremos este resultado para triangular otros tipos de polgonos a base de descom-
ponerlos en subpolgonos debilmente visibles desde un lado.

78 TEMA 5: TRIANGULACIONES
Por ejemplo, supongamos que P es estrellado y q es un punto de su n ucleo. Si q es
un vertice o esta en un lado, ya sabemos c omo triangularlo pues se tratara de un abanico
o de un debilmente visible desde el lado en que se encuentra. As que supongamos que q
esta en el interior de P. Desde un vertice cualquiera, pongamos v
1
, lanzamos un rayo que
pase por q. Supongamos que entre v
1
y q no hay m as vertices de P en ese rayo, o en caso
contrario nos jamos en el ultimo antes de llegar a q y razonamos con el como si fuera
v
1
. Este rayo incidir a en un punto x de la frontera de P, vease la gura. Dividamos P,
cortandolo por el segmento v
1
x, en dos subpolgonos P
1
y P
2
, ambos debilmente visibles
desde el lado v
1
x ya que contiene a q. Triangulemos estos polgonos obteniendo T
1
y T
2
.
v
1
q
x
v
1
q
x
Estrellado desde q y su descomposicion en dos debilmente visibles desde el lado v
1
x.
Si x es un vertice de P, entonces v
1
x es una diagonal interna, de modo que T =
T
1
T
2
{v
1
x}.
Si x no es un vertice de P, es lo que se llama un punto de Steiner, esto es, un
vertice cticio a nadido para descomponer P, entonces habr a que trabajar un poco m as.
De T
1
T
2
{v
1
x} no son v alidas aquellas diagonales que tengan como extremo a x.
Tomemoslas todas ellas y ordenemoslas angularmente respecto de x. Los vertices de P
extremos de esas diagonales as ordenados forman, junto con los vertices v
k
y v
k+1
que
determinan el lado de P donde se encuentra x, un polgono P
3
= (v
k
, v
k+1
, u
1
, u
2
, . . . , u
m
)
debilmente visible desde el lado v
k
v
k+1
ya que todos sus vertices son visibles desde x. De
modo que T = T
1
T
2
T
3
{u
1
x, u
2
x, . . . , u
m
x}.
v
1
q
x x
u
1
u
2
u
3
u
4
v
k
v
k+1
Estrellado desde q y su descomposicion en dos debilmente visibles desde un lado con punto de Steiner x.
Obtenci on del debilmente visible desde v
k
v
k+1
.
La triangulaci on de los polgonos P
1
, P
2
y P
3
se efect ua en tiempo lineal. El unico punto
conictivo sera la ordenaci on angular de u
1
, . . . , u
m
respecto de x, pero esta ordenaci on es
el orden de aparici on en P.

5.4. ALGORITMOS DE TRIANGULACI

ON 79
Supongamos ahora que P es un polgono mon otono, por ejemplo respecto al eje OX.
Consideremos la descomposicion de P en dos cadenas monotonas C
1
y C
2
, cuyos primer y
ultimo elemento son respectivamente x
min
y x
max
para ambas. Mezclemos lexicogracamente
los vertices de ambas cadenas obteniendo una lista L.
Las diagonales mas gruesas descomponen P en polgonos DVL.
Si u y v dos vertices (distintos de x
min
y x
max
) consecutivos en L y pertenecen a distintas
cadenas entonces determinan una diagonal interna. Si cortamos P por esas diagonales
obtenemos una descomposicion de P en subpolgonos debilmente visibles desde un lado.
Si no hubiera ninguna de esas diagonales es que x
min
x
max
es un lado de P y este, ademas
de ser monotono, es debilmente visible desde ese lado.
En cualquier caso, la triangulaci on de un polgono mon otono se reduce en tiempo lineal
a triangular polgonos debilmente visibles desde un lado.
5.4.2 Algoritmo de Mehlhorn
Veamos por n un algoritmo v alido para todo polgono simple. Si bien su complejidad no
es lineal sino O(nlog n).
Se trata de un algoritmo de barrido de izquierda a derecha con una recta vertical. Por
tanto supondremos que P no tiene lados verticales. Las posiciones de parada de dicha
recta para la actualizaci on de su lectura y el c alculo de diagonales de la triangulaci on,
corresponder an a los vertices del polgono P.
Dependiendo de la posici on de los lados adyacentes a un vertice p de P respecto a la
recta vertical L que pasa por p podemos clasicar a p en inicio, si ambos lados estan a la
derecha de L, n si ambos estan a la izquierda y codo si uno esta a la izquierda y otro a la
derecha (vease la gura). La forma de proceder ser a distinta seg un el tipo de vertice en el
que se detiene la recta de barrido.
p es codo
L
p es fin
L
p es inicio
L

80 TEMA 5: TRIANGULACIONES
La idea clave del algoritmo consiste en lo siguiente. Toda recta vertical corta a un
polgono simple en un n umero par de lados. Estas intersecciones determinan un n umero
impar de intervalos en la recta, unos dentro y otros fuera del polgono (vease la gura).
P
L
"dentro"
"fuera"
Un intervalo [l, l

] de tipo dentro en la recta L tiene asociada una cadena poligonal


de vertices consecutivos en P yendo del extremo izquierdo del lado l

al del lado l. Si
suponemos que esa parte del polgono ya ha sido triangulada, es decir, ya se han tenido
en cuenta todas las diagonales de la triangulaci on cuyos extremos estan a la izquierda de
L se trata de ver que nuevas diagonales se obtienen al considerar un nuevo vertice p, el
correspondiente a una posici on posterior de parada de la recta de barrido, si cae en ese
intervalo (vease la gura).
L
C
P
"dentro"
Notese que en ese caso las posibles diagonales a a nadir seran aquellas entre p y los
vertices de la cadena poligonal m as pr oximos a la recta actual de barrido. Estos vertices
forman una cadena convexa C que convendr a mantener asociada al intervalo [l, l

]. Por
razones de eciencia en la comprobacion de que diagonales se pueden formar entre p y los
vertices de C conviene destacar en C el vertice v
d
mas a la derecha. De este modo, el
primer candidato a ser diagonal ser a pv
d
(y de hecho lo ser a salvo si es un lado de P) y
avanzando en ambas direcciones de C se pueden obtener todas las diagonales posibles en
tiempo lineal en el n umero de diagonales encontradas en C .

5.4. ALGORITMOS DE TRIANGULACI

ON 81
v
1
v
v
v
v
2
d
k
k-1
C
P
l'
l
p
Algoritmo de triangulacion de Mehlhorn
Entrada: El polgono P vendr a dado con orientaci on positiva mediante una lista cclica
con sus n vertices. En tiempo O(n) puede preprocesarse esta informacion de manera que
el acceso de cada vertice a sus lados adyacentes sea constante y el de cada lado de P a sus
vertices extremos tambien.
Salida: La triangulaci on vendr a descrita por la lista de sus diagonales internas T .
Estructuras de datos:
- Las posiciones de parada de la recta de barrido pueden almacenarse en una cola
prioritaria X.
- La lectura de la recta de barrido L puede implementarse en un arbol AVL cuyos
nodos corresponden a intervalos ordenados seg un su aparici on sobre la recta vertical
del momento, etiquetados como dentro o fuera (seg un si tienen un puntero a la
cadena convexa C o a NIL respectivamente).
- Una cadena convexa C asociada a un intervalo dentro puede implementarse en una
lista doblemente enlazada. Su entrada ser a por la posici on de v
d
.
Paso 1: Inicializar T con la lista vaca y L con el intervalo [, ] etiquetado como
fuera.
Paso 2: Etiquetar cada vertice de P con el tipo inicio, nal o codo seg un su condici on.
Paso 3: Inicializar X con los vertices de P ordenados lexicogr acamente (x < y).
Paso 4: Mientras X = , extraer su mnimo: p
Caso 1: p es inicio
1. Localizar en L el intervalo [l, l

] que contiene a p.
2. Caso 1.1: [l, l

] es de tipo fuera.

82 TEMA 5: TRIANGULACIONES
P
l'
l
p
l
2
l
1
L
- Actualizar L borrando [l, l

] e insertando los intervalos:


[l, l
1
] etiquetado como fuera,
[l
1
, l
2
] etiquetado como dentro con C = (p) siendo su v
d
= p, y
[l
2
, l

] etiquetado como fuera.


3. Caso 1.2: [l, l

] es de tipo dentro con C = (v


1
, . . . , v
d
, . . . , v
k
) como cadena
convexa asociada.
P
l'
l
p
l
2
l
1
L
C
v
d
P
l'
l
p
l
2
l
1
L
C
v
d
- A nadir a T la diagonal pv
d
.
- Avanzar en C en ambas direcciones a partir de v
d
a nadiendo a T la diag-
onal pv hasta que (p, v, v

) 0, en sentido ascendente, y (p, v, v

) 0
en sentido descendente, donde v

es el siguiente a v en la direcci on de
avance.
Sean v
j
1
y v
j
2
los vertices primero y ultimo de C tales que pv
j
1
y pv
j
2
son
diagonales.
- Actualizar L borrando [l, l

] e insertando los intervalos:


[l, l
1
] etiquetado como dentro con C = (v
1
, . . . , v
j
1
, p) siendo su v
d
= p,
[l
1
, l
2
] etiquetado como fuera, y
[l
2
, l

] etiquetado como dentro con C

= (p, v
j
2
, . . . , v
k
) siendo su v
d
= p.
Caso 2: p es codo
1. Si l
1
es el lado adyacente a p de extremo a la izquierda de p, localizar en L los
dos intervalos en los que l
1
aparece como extremo: [l
1
, l

] y [l, l
1
]. Supongamos
que es [l, l
1
] el que esta etiquetado como dentro (el otro caso es simetrico)
con cadena asociada C = (v
1
, . . . , v
d
, . . . , v
k
).

5.4. ALGORITMOS DE TRIANGULACI

ON 83
P
l'
l
p
l
2
l
1
L
C
v
d
P
l'
l
p
l
2
l
1
L
C
v
d
2. Si pv
d
no es un lado de P, a nadirlo a T como diagonal.
3. Avanzar en C en ambas direcciones a partir de v
d
a nadiendo a T la diagonal
pv hasta que, en una direcci on, sea un lado de P, y en la otra (p, v, v

) 0,
si es en sentido descendente como en la gura, o (p, v, v

) 0 si es en sentido
ascendente. (De nuevo v

es el siguiente a v en la direcci on de avance.)


Sean v
j
1
y v
j
2
los vertices primero y ultimo de C tales que pv
j
1
y pv
j
2
son
diagonales. N otese que si existen, v
j
2
= v
k1
.
4. Actualizar L borrando [l, l
1
] y [l
1
, l

] e insertando los intervalos:


[l, l
2
] etiquetado como dentro con C = (v
1
, . . . , v
j
1
, p) siendo su v
d
= p, y
[l
2
, l

] etiquetado como fuera.


Caso 3: p es n
1. Localizar en L el intervalo [l
1
, l
2
] determinado por sus lados adyacentes.
2. Caso 3.1: [l
1
, l
2
] es de tipo dentro con C = (v
1
, . . . , v
d
, . . . , v
k
) como cadena
convexa asociada.
P
l'
l
p
l
2
l
1
C
L L
P
l'
l
p
l
2
l
1
C
- A nadir a T las diagonales pv
i
, para todo i desde 2 hasta k 1.
- Actualizar L borrando [l
1
, l
2
], [l, l
1
], [l
2
, l

] e insertando [l, l

] etiquetado
como fuera.
3. Caso 3.2: [l
1
, l
2
] es de tipo fuera.

84 TEMA 5: TRIANGULACIONES
P
l'
l
p
l
2
l
1
L
v
d
C
C'
v'
d
P
l'
l
p
l
2
l
1
L
C
C'
Entonces los intervalos predecesor y sucesor en L de [l
1
, l
2
] seran:
[l, l
1
] etiquetado como dentro con C = (v
1
, . . . , v
d
, . . . , v
k
) y
[l
2
, l

] etiquetado como dentro con C

= (v

1
, . . . , v

d
, . . . , v

k
).
- Si pv
d
no es un lado de P, a nadir a T las diagonales pv
i
, i {2, . . . , d}.
- Avanzar en C en direccion descendente a partir de v
d
a nadiendo a T la
diagonal pv hasta que (p, v, v

) 0, donde v

es el siguiente a v en la
direccion de avance. Sea v
j
el ultimo vertice tal que pv
j
es diagonal.
- Si pv

d
no es un lado de P, a nadir a T las diagonales pv

i
, i {d, . . . , k

1}.
- Avanzar en C

en direccion ascendente a partir de v

d
a nadiendo a T la
diagonal pv

hasta que (p, v

, v

) 0, donde v

es el siguiente a v

en
la direcci on de avance. Sea v

j
el ultimo vertice tal que pv

j
es diagonal.
- Actualizar L borrando [l, l
1
], [l
1
, l
2
] y [l
2
, l

] e insertando:
[l, l

] etiquetado como dentro con C = (v

1
, . . . , v

j
, p, v
j
, . . . , v
k
) siendo
su v
d
= p.
Analisis de la complejidad
Tiempo:
Paso 1: O(1)
Paso 2: O(n) ya que para determinar el tipo de cada vertice basta comparar su
abscisa con la de sus vertices adyacentes en P, que es tiempo constante.
Paso 3: Evidentemente es O(nlog n).
Paso 4:
1. Extraer el mnimo de X es O(1).
2. Para cada caso de los considerados por el algoritmo, se realizan operaciones
de localizacion, borrado e inserci on de un n umero constante de intervalos
en un AVL. Estas operaciones sabemos que son logartmicas en el n umero
de nodos del AVL, en el peor de los casos O(log n). Ademas se detectan
ciertas diagonales de T . Gracias a la referencia que mantenemos con el
vertice v
d
el acceso al primer candidato de diagonal pv
d
es constante, y

5.5. REFERENCIAS Y LECTURAS COMPLEMENTARIAS 85
a partir de ah avanzamos en ambas direcciones de la cadena convexa C
mientras encontramos diagonales. Detectar si pv es diagonal o no consiste
b asicamente en calcular un area signada. En consecuencia, el tratamiento
de cada caso cuesta O(log n + n
o

de diagonales halladas en ese caso).


3. Como hay n puntos en X, el tiempo total para el paso 4 es O(nlog n+|T |) =
O(nlog n + n 3) = O(nlog n)
Por tanto, el tiempo total de ejecuci on del algoritmo de Mehlhorn, en el peor
de los casos, es O(nlog n).
Espacio: lineal ya que el tama no de cada una de las estructuras utilizadas, L, X, C,
y T tienen en el peor de los casos O(n) elementos.
Un caso particular: polgonos monotonos. Si P es un polgono mon otono respecto
del eje OX, el algoritmo de Mehlhorn cuesta O(n). Basta notar que P se descompone en
dos cadenas de vertices ordenados lexicogracamente. Luego el paso 3 del algoritmo puede
reducirse a una mezcla de listas ordenadas que en tiempo O(n) da la lista ordenada de
todos los vertices de P. Ademas, las operaciones tpicas del AVL cuestan una cantidad
constante ya que el n umero de intervalos (nodos) que contiene en cada momento es tres.
Polgono triangulado mediante el algoritmo de Mehlhorn.
5.5 Referencias y lecturas complementarias
Captulo 4 del libro Computational Geometry. Algorithms and Applications, de
M. de BERG, M. van KREVELD, M. OVERMARS y O. SCHWARZKOPF.
Art Gallery Theorems and Algorithms, de J. OROURKE. Oxford University Press,
NY, 1987.
Recent results in art galleries, de T. SHERMER. Proc. IEEE, No. 80, pp 1384
1399, septiembre, 1992.
Slicing an ear in linear time, de H. ELGINDY, H. EVERETT y G. TOUSSAINT.
Technical Report, McGill University, Montreal.

86 TEMA 5: TRIANGULACIONES
On a convex hull algorithm for polygons and its application to triangulation prob-
lems, de G. TOUSSAINT y D. AVIS. Pattern Recognition, Vol. 15, pp. 2329,
1982.
Captulos 1 y 2 del libro Computational Geometry in C, de J. OROURKE. Cam-
bridge University Press, 1994.
Captulo VIII, apdo. 4 del libro Data Structures and Algorithms 3: Multidimensional
Searching and Computational Geometry, de K. MEHLHORN. SpringerVerlag, 1984.

Vous aimerez peut-être aussi