Professional Documents
Culture Documents
comp-420
Algunas referencias
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
http://jeffe.cs.illinois.edu/teaching/compgeom/notes/01-convexhull.pdf
http://www.tcs.fudan.edu.cn/rudolf/Courses/Algorithms/Alg_ss_07w/Webprojects/
Chen_hull/applications.htm
2
Envolvente convexo
pp pp
convex
convex notconvex
not convex
convexo no convexo
3
Envolvente convexo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
4
Envolvente convexo
5
DEFINICIN:
no es til computacionalmente
6
Otra forma de ver CH(S)
Podemos tambin definir como el polgono convexo ms grande cuyos vrtices son puntos en S.
7
Regin convexa
Regin convexa ssi cualquiera dos puntos p y q en la regin R son mutuamente visibles.
q q q q
pq pq pq pq
p p p
p
convex convex
not convex not convex
8
TEOREMA:
9
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
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 we compute
Dado un theconjunto de puntos
convex hull? Before Pwe=can {p1answer
, p2 , . . .this } en el plano,
, pnquestion we calcular una
sk another lista question:
que contenga whataquellos puntos
does it mean to de P que the
compute sean vrtices
convex hull?de CH(P ), en
have seen, ordenthedeconvex
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 , p starting
n arbitrary one. So the problem we want to solve is this: given a set
1 , 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:
p7 p1
2 , p 3 , p4 , p 5 , p 6 , p 7 , p 8 , p 9
p2
ut = representation of the convex hull: p6 p3
p5 Figure 1.1
5 , p 8 , p2 , p 9
p8 Computing a conve
Representamos a los puntos de S con sus coordenadas cartesianas, en dos arreglos X[1n] y
Y[1n].
CH(S) se puede representar como una lista circular de vrtices en orden anti-horario
(arbitrariamente).
Si el punto i es un vrtice de CH(S), next[i] es el ndice del punto que sigue en CH(S) en sentido
antihorario y pred[i], es el ndice del punto siguiente en sentido horario.
11
Casos simples
y cuando n=2?
y cuando n=3?
El test CCW o CW juega el mismo papel en el algoritmo de CH que una comparacin en los
algoritmos de ordenamiento (sorting).
12
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
e1
e2
origin of e1
q
r
p
Envolvente convexo (convex hull)
Agregamos los puntos uno a uno, actualizando la solucin despus de cada
adicin.
Los puntos se agregan de izquierda a derecha por lo que primero se ordenan
de acuerdo a su coordenada x , obteniendo una secuencia ordenada
~~~~~~~~~~que
p1 , p2 , . . . , pn establece el orden en que son aadidos.
Al estar trabajando de izquierda a derecha sera tambin conveniente tener
los puntos de la envolvente convexa ordenados de izquierda a derecha.
Como esto no es el caso encontramos primero la parte superior de la
envolvente (upper hull - que va de izquierda a derecha) y luego el lower hull.
upper hull pi
p1 pn
points deleted
lower hull
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
19
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
20
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
21
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
22
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
23
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
24
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
25
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
26
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
27
Algoritmo iterativo
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
28
Algoritmo iterativo
y el sexto
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
29
Algoritmo iterativo
y el sexto
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
30
Algoritmo iterativo
y el quinto
http://www.cs.uu.nl/docs/vakken/ga/slides1.pdf
31
Algoritmo
Algorithm C ONVEX H ULL(P)
Input. A set P of points in the plane.
Output. A list containing the vertices of CH(P) in clockwise order.
1. Sort the points by x-coordinate, resulting in a sequence p1 , . . . , pn .
2. Put the points p1 and p2 in a list Lupper , with p1 as the first point.
3. for i 3 to n
4. do Append pi to Lupper .
5. while Lupper contains more than two points and the last three points in Lupper do
not make a right turn
6. do Delete the middle of the last three points from Lupper .
7. Put the points pn and pn 1 in a list Llower , with pn as the first point.
8. for i n 2 downto 1
9. do Append pi to Llower .
10. while Llower contains more than 2 points and the last three points in Llower do not
make a right turn
11. do Delete the middle of the last three points from Llower .
12. Remove the first and the last point from Llower to avoid duplication of the points where the
upper and lower hull meet.
13. Append Llower to Lupper , and call the resulting list L.
14. return L
Algoritmo incremental: casos degenerados