Académique Documents
Professionnel Documents
Culture Documents
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
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
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
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
) < 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
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
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
o bien L
= L
v
k+1
, es una poligonal cerrada simple.
Ademas el polgono 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
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
. 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
n
2
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 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 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 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
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
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 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.
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.
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
n
3
Y por tanto,
n
3
n
3
guardias
para ser vigilado. Sea k =
n
3
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
= 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
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
) 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
= (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
] 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
= (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
d
a nadiendo a T la
diagonal pv
, 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
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