tema 1 - asignatura.us.esasignatura.us.es/fgcitig/presentaciones/tema 1-envolvente convexa(1... ·...
TRANSCRIPT
Fundamentos de Geometría
Computacional I.T.I. Gestión
Envolvente convexa
Tema 1
Algoritmos:
• Quickhull • Ptos. extremos
Definiciones
Tema 1 Envolvente convexa
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Definiciones
Un conjunto es convexo si el segmento uniendo cualesquiera dos de sus puntos está contenido en él.
La intersección de convexos es un convexo.
Algoritmos:
• Quickhull • Ptos. extremos
Definiciones
Tema 1 Envolvente convexa
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Definiciones
Envolvente convexa de un conjunto: menor convexo que lo contiene.
O, equivalentemente, la intersección de todos los convexos que contienen al conjunto.
Algoritmos:
• Quickhull • Ptos. extremos
Definiciones
Tema 1 Envolvente convexa
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Definiciones
Aplicaciones: • Lo interesante suele ocurrir dentro de la
envolvente.
• Es más fácil (rápido) mover un convexo.
Algoritmos:
• Quickhull • Ptos. extremos
Definiciones
Tema 1 Envolvente convexa
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Definiciones
S una nube de puntos, S=p1,p2,…,pn
CH(S) es un polígono
arista extrema
punto extremo
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Puntos extremos
Punto extremo de S: no está contenido en ningún triángulo con vértices en puntos de S.
Sea S un conjunto de n puntos.
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Puntos extremos
Punto extremo de S: no está contenido en ningún triángulo con vértices en puntos de S.
Sea S un conjunto de n puntos.
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Puntos extremos
Los puntos extremos son los vértices de la envolvente convexa.
¿Cuánto nos cuesta encontrar todos los puntos extremos?
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Puntos extremos
Para cada punto de S, comprobar si está dentro de algún triángulo con vértices puntos de S:
• SÍ: No es vértice de la envolvente.
• NO: Es vértice de la envolvente convexa.
Para cada punto de S comprobar si está dentro de algún triángulo.
n puntos, O(n3) triángulos, O(n4) operaciones.
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Puntos extremos
También podemos buscar las aristas extremas (unen dos puntos de S y dejan a todo el conjunto a un mismo lado de la recta que definen).
Para cada par de puntos de S ver si la arista es extrema.
O(n2) pares, O(n) por comprobación O(n3) operaciones.
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Puntos extremos
Inciso: ¿Cómo sabemos si • un punto está dentro de un triángulo, o si • un punto está a un lado u otro de una recta?
Mediante un determinante
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Puntos extremos
¿A qué lado de la recta PQ está R?
P R
Q A partir de sus coordenadas construimos el determinante p1 p2 1
|A|= q1 q2 1
r1 r2 1
Interpretación geométrica: Vamos de P a Q, y luego de Q a R. Si:
• |A|>0: Giro a la izquierda. • |A|<0: Giro a la derecha.
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
R
Algoritmos: Puntos extremos
¿M está dentro o fuera del triángulo?
P
Q
¡Ojo! esto sólo vale para convexos .
M Si al recorrer el triángulo (en el sentido de las agujas del reloj) hacemos 3 giros a la derecha, entonces M está en el interior.
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Quickhull
Este (menor x)
Oeste (mayor x)
c c
c
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
???
O(n)
Algoritmos: Quickhull
Function QuickHull(a,b,C) if C es vacío then return() else c punto de C más alejado de ab A puntos a la derecha de ac B puntos a la derecha de cb return QuickHull(a,c,A)+( c )+QuickHull(c,b,B) b
a
(1) Encontrar dos puntos extremos iniciales x,y
Dividir S en S1 (puntos por encima de xy) y S2 (puntos por debajo de xy)
(2)
(3) CH(S)=(x)+QuickHull(x,y,S1)+(y)+QuickHull(y,x,S2)
c
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Quickhull
b
a
T(m) es el tiempo de ejecución de QuickHull(a,b,C), con |C|=m
Function QuickHull(a,b,C) if C es vacío then return() else c punto de C más alejado de ab A puntos a la derecha de ac B puntos a la derecha de cb return QuickHull(a,c,A)+( c )+QuickHull(c,b,B)
T(n)=O(n)+T(α)+T(β), siendo α=|A| y β=|B|, α+β≤n-1
Caso más desfavorable: α=0, β=n-1
T(n)=T(n-1)+O(n) T(n)=O(n2)
c
Algoritmos:
• Quickhull • Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
• Scan de Graham • Marcha de Jarvis
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
O(n2)
O(n)
Algoritmos: Quickhull
Function QuickHull(a,b,C) if C es vacío then return() else c punto de C más alejado de ab A puntos a la derecha de ac B puntos a la derecha de cb return QuickHull(a,c,A)+( c )+QuickHull(c,b,B) b
a
(1) Encontrar dos puntos extremos iniciales x,y
Dividir S en S1 (puntos por encima de xy) y S2 (puntos por debajo de xy)
(2)
(3) CH(S)=(x)+QuickHull(x,y,S1)+(y)+QuickHull(y,x,S2)
c
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Marcha de Jarvis
Buscamos el punto Sur y a partir de él giramos una semirrecta
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Marcha de Jarvis
Buscamos el punto Sur y a partir de él giramos una semirrecta hasta encontrar el siguiente punto de la envolvente.
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Marcha de Jarvis
Repetimos el proceso hasta volver al punto de partida.
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Marcha de Jarvis
Repetimos el proceso hasta volver al punto de partida.
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Marcha de Jarvis
Coste: Buscar el siguiente punto: O(n) Hay que repetirlo n veces en el peor de los casos.
Número de operaciones: O(n2)
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Marcha de Jarvis
En realidad el tiempo de ejecución es: O(nh), siendo h el número de puntos de la envolvente. Es un algoritmo output sensitive.
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
Encontrar p0 el mas abajo-derecha
0
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
Encontrar p0 el mas abajo-derecha
0
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
1
2
3
4 5
6 7 8
9
10
11
12
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
1
2
3
4 5
6 7 8
9
11
12
10
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
Encontrar p0 el mas abajo-derecha
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull
• Scan de Graham • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Scan de Graham
0
1
2
3
4 5
6 7 8
9
11
12
10
O(n log n)
O(n)
O(n)
Teorema: El Scan de Graham computa la envolvente convexa de n puntos en un tiempo O(n log n).
Encontrar p0 el mas abajo-derecha
Ordenar el resto por sus ángulos con el vértice p0 (si hay empates eliminar los más cercanos a p0)
Iniciar la pila S=(0,1); i=2; while i<n do s=penúltimo de la pila; t=último de la pila; if pi está a la izquierda de pspt then añade i a la pila; i=i+1; else quita t de la pila;
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y Vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y vencerás
B
4) Unir CH(A) y CH(B) para obtener CH(S).
Tangente inferior
Tangente superior
A
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y vencerás
B A
4) Unir CH(A) y CH(B) para obtener CH(S).
Tangente inferior
Tangente superior
0
1 2
3
4
5
6 7
8
0
1 2
3
4
5
6
7 8
9
10
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y vencerás
B
4) Unir CH(A) y CH(B) para obtener CH(S).
0
1 2
3
4
5
6
7 8
9
10
TANGENTE INFERIOR
a=punto de A más a la dcha
b=punto de B más a la izda
While T=ab no sea tangente a A y a B do
While T=ab no sea tangente a A do a=a-1; (mód |A|)
While T=ab no sea tangente a B do b=b+1; (mód |B|)
A
0
1 2
3
4
5
6 7
8
a b
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y vencerás
B
4) Unir CH(A) y CH(B) para obtener CH(S).
0
1 2
3
4
5
6
7 8
9
10
TANGENTE INFERIOR
a=punto de A más a la dcha
b=punto de B más a la izda
While T=ab no sea tangente a A y a B do
While T=ab no sea tangente a A do a=a-1; (mód |A|)
While T=ab no sea tangente a B do b=b+1; (mód |B|)
A
0
1 2
3
4
5
6 7
8
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y vencerás
B
4) Unir CH(A) y CH(B) para obtener CH(S).
0
1 2
3
4
5
6
7 8
9
10
TANGENTE SUPERIOR
a=punto de A más a la dcha
b=punto de B más a la izda
While T=ab no sea tangente a A y a B do
While T=ab no sea tangente a A do a=a+1; (mód |A|)
While T=ab no sea tangente a B do b=b-1; (mód |B|)
A
0
1 2
3
4
5
6 7
8
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Divide y vencerás
1) Ordenar los puntos por abscisa
2) Dividir los puntos de S en dos subconjuntos: S1 con los n/2 puntos más a la izquierda y S2 con n/2 puntos más a la derecha
3) Calcular, recursivamente CH(A) y CH(B)
4) Unir CH(A) y CH(B) para obtener CH(S).
O(n lg n) (preprocesamiento)
=
2 T(n/2)
T(n)
+
O(n)
T(n) = 2 T(n/2)+O(n) T(n) ∈ O(n lg n)
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Incremental
Añadimos los puntos uno a uno.
En cada paso comprobamos si el nuevo punto está en el interior de la envolvente:
• SÍ: Lo ignoramos.
• NO: Lo incorporamos a la envolvente.
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Incremental
Añadimos los puntos uno a uno.
En cada paso comprobamos si el nuevo punto está en el interior de la envolvente:
• SÍ: Lo ignoramos.
• NO: Lo incorporamos a la envolvente.
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Incremental
Añadimos los puntos uno a uno.
En cada paso comprobamos si el nuevo punto está en el interior de la envolvente:
• SÍ: Lo ignoramos.
• NO: Lo incorporamos a la envolvente.
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Incremental
Añadimos los puntos uno a uno.
En cada paso comprobamos si el nuevo punto está en el interior de la envolvente:
• SÍ: Lo ignoramos.
• NO: Lo incorporamos a la envolvente.
Al añadir un nuevo punto puede que tengamos que eliminar alguno de la envolvente.
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Incremental
Añadimos los puntos uno a uno.
En cada paso comprobamos si el nuevo punto está en el interior de la envolvente:
• SÍ: Lo ignoramos.
• NO: Lo incorporamos a la envolvente.
Al añadir un nuevo punto puede que tengamos que eliminar alguno de la envolvente.
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Otros • Cota inferior
• Scan de Graham
Fundamentos de Geometría
Computacional I.T.I. Gestión
• Anchura • Diámetro
Algoritmos: Incremental
Añadimos los puntos uno a uno.
En cada paso comprobamos si el nuevo punto está en el interior de la envolvente:
• SÍ: Lo ignoramos.
• NO: Lo incorporamos a la envolvente.
Al añadir un nuevo punto puede que tengamos que eliminar alguno de la envolvente.
Cada inserción a lo bruto requiere O(n), por lo que serían necesarias O(n2) operaciones, pero puede mejorarse a O(log n), obteniendo O(n log n).
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Anchura • Diámetro
• Cota inferior
• Scan de Graham
• Otros
Fundamentos de Geometría
Computacional I.T.I. Gestión
Algoritmos: Cota inferior
Construir la envolvente convexa de n puntos requiere, al menos, Ω(n log n) operaciones, ya que es equivalente a ordenar n números.
x -3 4 -1 5 3
(x,x2) (-3,9) (4,16) (-1,1) (5,25) (3,9)
(-3,9) (-1,1) (3,9) (4,16) (5,25)
Algoritmos:
• Quickhull • Marcha de Jarvis
• Ptos. extremos
Tema 1 Envolvente convexa
Definiciones
Aplicaciones:
• Anchura • Diámetro
• Cota inferior
• Scan de Graham
• Otros
Fundamentos de Geometría
Computacional I.T.I. Gestión
Algoritmos: Cota inferior
Construir la envolvente convexa de n puntos requiere, al menos, Ω(n log n) operaciones, ya que es equivalente a ordenar n números.
x -3 4 -1 5 3
(x,x2) (-3,9) (4,16) (-1,1) (5,25) (3,9)
(-3,9) (-1,1) (3,9) (4,16) (5,25)