You are on page 1of 25

Introduccin a la Geometra

Computacional
comp-420
Geometra Computacional

La Geometra Computacional surgi a finales de los 70s del rea de


diseo y anlisis de algoritmos.

Estudio sistemtico de algoritmos y estructuras de datos de objetos


geomtricos, con un enfoque en algoritmos exactos (deterministas).

Reune problemas matemticos y de ciencias de la computacin.

Aplicaciones a numerosas reas como: grficos por computadora,


sistemas de informacin geogrficos, robtica, visin por computadora,
etc.

Una buena solucin al problema de Geometra Computacional requiere


de una buena comprensin de la estructura geomtrica del problema y
conocimiento profucndo de algortmica y estructuras de datos.
Geometra Computacional

Estudiaremos algunos algoritmos de geometra computacional


combinatoria o geometra algortmica:

Considerar a los objetos como entidades discretas.

Entrada:

descripcin de un conjunto de objetos geomtricos: puntos,


segmentos de recta, vrtices de polgonos...

Salida:

respuesta al problema, por ejemplo si un par de segmentos de


recta intersectan, cuntas intersecciones hay... o un nuevo objeto
geomtrico.
Clases de problemas

Problemas estticos:

Interseccin de segmentos de recta:

Dado un conjunto de segmentos de recta,


encontrar las intersecciones entre ellos.

Convex hull (envolvente convexo)

Dado un conjunto de puntos, encontrar el


poliedro o polgono ms pequeo que los
contenga.

Triangulacin de Polgonos, Triangulacin de


Delaunay.

Diagrama de Voronoi.

Algoritmos de visibilidad
Problemas estticos

La complejidad computacional para este tipo de problemas se estima


generalmente con el tiempo de clculo y el espacio (memoria)
requerida para resolver el problema.
Clases de problemas

Problemas de bsqueda geomtrica

Bsqueda de rango:

Dada una regin del espacio, pre-procesar un


conjunto de puntos para contar de manera
eficiente cuntos hay en la regin.

Localizacin de un punto:

Dada una particin del espacio en celdas,


calcular eficientemente en qu celda se
localiza el punto.

Vecino ms cercano.

Trazado de rayos
Problemas de bsqueda geomtrica

Se genera un espacio de bsqueda (exploracin) y luego se busca una


solucin en este.

Si el espacio de bsqueda est fijo, la complejidad computacional se


estima con el tiempo y el espacio requerido para construir la
estructura de datos donde se realizar la bsqueda adems del tiempo
y la memoria que toma encontrar la solucin.
Ejemplo 1: Diagrama de Voronoi

Ejemplo: Aplicacin del Diagrama de Voronoi, metro de Sevilla


Ejemplo 2: Planificacin de movimientos

Dada una coleccin de obstculos geomtricos, encontrar una


conexin ms corta entre dos puntos, evitando colisiones con
los obstculos.
Ejemplo 3: Mapas sobrepuestos

Utilizado en sistemas de informacin geogrfica - encontrar las


correspondencias.
Ejemplo 3: Mapas sobrepuestos
Envolvente Convexo
comp-420
Envolvente convexo

Uno de los primeros problemas estudiados en


la geometra computacional.

Un conjunto S del plano, se llama convexo si y


solo si, para cualquier par de puntos p,q S,
el segmento pq est contenido completamente
en S.
qq qq
El envolvente convexo CH(S) de un conjunto S
es el conjunto convexo ms pequeo que pqpq pq
pq
pueda contener a S.
pp pp
Es la interseccin de todos los conjuntos que
contienen a S. convex
convex notconvex
not convex
convexo no convexo
Medios planos (halfplanes)
Los medios planos son importantes para estudiar convexidad.
Un medio plano cerrado H se puede escribir como:
H = {(px , py )|apx + bpy c}
para nmeros reales a,b y c. Esto incluye la lnea que separa los planos.
En un medio plano abierto esta desigualdad es estricta y ningn punto de la
lnea est incluido en el plano.
Una lnea l es una lnea de soporte para un conjunto S si l define un medio
plano que contenga S .
Una lnea de soporte l es tangente a S si contiene un punto de S como en
la figura.
Polgonos
Un polgono es un conjunto en el plano
cuya frontera se puede describir como una secuencia circular de puntos,
llamados vrtices p0 , p1 , . . . , pk , donde p0 = pk ,
y segmentos de recta llamados aristas que unen vrtices consecutivos
(p0 , p1 ), (p1 , p2 ), . . . , (pk1 , pk ).

Un polgono es simple si las nicas intersecciones entre sus aristas ocurren


donde aristas adyacentes comparten un mismo vrtice.
Un polgono es una regin en el plano acotada por un ciclo de segmentos
de recta, llamados aristas, unidos en sus extremos formando un ciclo.
Los puntos donde se unen dos aristas sucesivas se llaman vrtices.
Envolvente convexo (convex hull)
Calcular el envolvente convexo de un conjunto finito P de n puntos en el
plano.

El rea dentro de la liga es el envolvente convexo de P .


CH(P ) de un conjunto finito P de puntos en el plano es el nico polgono
convexo cuyos vrtices son puntos de P y que contiene todos los puntos
de P .
Una forma natural de representar un polgono es listando sus vrtices en
el sentido de las manecillas del reloj, empezando de un vrtice arbitrario.
a finite set P of points in the plane: it is the unique convex polygon
vertices are points from P and that contains all points of P. Of course
Envolvente convexo (convex hull)
uld prove rigorously that this is well definedthat is, that the polygon is
and that the definition is equivalent to the one given earlier, but lets
at in this introductory chapter.

o wecompute
Dado un theconjunto de puntos
convex hull? Before Pwe=can {p1answer
, p2 , . . .this } en el plano,
, pnquestion we calcular una
sk anotherlista que contenga
question: whataquellos puntos
does it mean to de P que the
compute sean vrtices
convex hull?de CH(P ), en
ordenthedeconvex
have seen, las manecillas
hull of Pdel
is areloj.
convex polygon. A natural way
esent aentrada:
polygonconjunto
is by listing its vertices p in
, pclockwise
de puntos 1 2 3 4 5 6 7 8 , p9 .
p , , p , p , p order,
, p , pstarting
n arbitrary one. So the problem we want to solve is this: given a set
p1 , p2, .salida:
. . , pn }representacin del envolvente
of points in the plane, compute aconvexo
list that contains , p2 , p9 .
p4 , p5 , p8those
from P that are the vertices of CH(P), listed in clockwise order.
p9
p4
t = set of points:
p2 , p 3 , p4 , p 5 , p 6 , p 7 , p 8 , p 9 p7 p1
p2
ut = representation of the convex hull: p6 p3
p5 Figure 1.1
p5 , p 8 , p2 , p 9
p8 Computing a conve

e first definition of convex hulls is of little help when we want to design


Envolvente convexo (convex hull)
Calcular el envolvente convexo de un punto es trivial:
solamente regresamos ese punto.
Calcular el envolvente convexo de dos puntos tambin es trivial.
Para tres puntos, tenemos dos posibilidades:
los puntos estn listados en un arreglo en sentido horario.
los puntos estn listados en un arreglo en sentido contrario a las manecillas del
reloj.
Supongamos nuestros tres puntos (a,b), (c,d) y (e,f) dados en ese orden.
Supongamos tambin que el primer punto est ms lejos a la izquierda,
entonces a < c y a < e .

tomado del curso de Jeff Erickson de la U. de Illinois


Envolvente convexo (convex hull)
Los tres puntos estn en sentido contrario a las manecillas del reloj si y
solo si:
la lnea (a,b)(c,d) tiene una pendiente menor que la lnea (a,b)(e,f):

que se puede escribir tambin como:

Si los puntos estn en sentido horario se invierte la desigualdad.


Si los puntos son colineales (supondremos que este caso no suceder), las
dos expresiones son iguales.

tomado del curso de Jeff Erickson de la U. de Illinois


Envolvente convexo (convex hull)
Otra forma de pensar la prueba de sentido de los puntos es calcular el
producto cruz de dos vectores: (c,d)-(a,b) y (e,f)-(a,b), definido por un
determinante de 2x2:

Mismo papel que comparaciones en algoritmos de ordenamiento.


Convex hull de 3 puntos, anlogo a ordenamiento de dos nmeros.
Envolvente convexo (convex hull)
El algoritmo para calcular CH(P ) se basa en su estructura de aristas:
Los puntos extremos p y q de cada arista son puntos de P .
Si esta arista est dirigida de tal forma que CH(P ) est a la derecha,
entonces todos los puntos de P deben estar a la derecha de esta linea.
El argumento inverso es tambin cierto, si todos los puntos de P \{p, q}
est a la derecha de la lnea dirigida entre p y q , entonces pq es una arista
de CH(P ).
p q
Algoritmo

Algorithm S LOW C ONVEX H ULL(P)


Input. A set P of points in the plane.
Output. A list L containing the vertices of CH(P) in clockwise order.
1. E 0. /
2. for all ordered pairs (p, q) P P with p not equal to q
3. do valid true
4. for all points r P not equal to p or q
5. do if r lies to the left of the directed line from p to q
6. then valid false.

7. if valid then Add the directed edge pq to E.
8. From the set E of edges construct a list L of vertices of CH(P), sorted in clockwise order.
Envolvente convexo (convex hull)
Cmo se puede verificar que los puntos estn a la derecha o a la
izquierda de una lnea dirigida?
en los algoritmos de geometra computacional suponemos esta operacin
como una de tiempo de ejecucin constante.
Cmo se puede construir una lista, a partir de las aristas, ordenada en el
orden de las manecillas del reloj?
Las aristas en E son dirigidas, por lo que tenemos un origen y un destino.
Como las aristas estn dirigidas de tal forma que los otros puntos estn a
su derecha, el vrtice destino viene despus del origen cuando estn
ordenados en sentido de las manecillas del reloj.
Envolvente convexo (convex hull)
destination of e1
= origin of e2

e1
e2

origin of e1

Una implementacin simple del procedimiento de la lnea 8 toma O(n2 )


pero se puede mejorar a O(n lg n).
El resto del algoritmo domina el tiempo total de ejecucin.
Verificamos n2 n pares de puntos. Para cada par miramos n 2 puntos
para encontrar los que estn del lado derecho. Esto hace en total O(n3 ).
La operacin de la lnea 8 toma O(n 2
) por lo que la complejidad total del
algoritmo es O(n3 ).
Algoritmo incremental: casos degenerados

Primera etapa: Entender la geometra del problema, ignorar los casos


degenerados.
Segunda etapa: Ajustar el algoritmo a los casos degenerados. Tratar de
generalizar y no resolver caso por caso.
Tercera etapa: Implementacin, especial atencin a redondeos y puntos
flotantes.

You might also like