Geometría Computacional: Envoltura Convexa

63
Geometría Computacional: Envoltura Convexa - Algoritmo Incremental Maikel Arcia Miguel Sancho

description

Estudiaremos el problema de computar la envoltura convexa de un conjunto finito P de n puntos en el plano. La EC es el único polígono convexo cuyos vértices son puntos de P y que contiene todos los puntos de P.

Transcript of Geometría Computacional: Envoltura Convexa

Geometría Computacional: Envoltura Convexa -Algoritmo Incremental

Maikel Arcia

Miguel Sancho

Convexidad y Envoltura Convexa.

Un conjunto es convexo si para todo par de puntos p, q S tenemos que pq S.

p

q

non-convex

q

p

convex

p

q

non-convex

q

p

convex

Geometría Computacional

Convexidad y Envoltura Convexa.

Un conjunto es convexo si para todo par de puntos p, q S tenemos que pq S.

La envoltura convexa de un conjunto S es el mínimo conjunto convexo que contiene a S.

Otra definición es: la intersección de todos los convexos que contienen al conjunto S.

S

p

q

non-convex

q

p

convex

p

q

non-convex

q

p

convex

Geometría Computacional

EC(S

Convexidad y Envoltura Convexa.

Un conjunto es convexo si para todo par de puntos p, q S tenemos que pq S.

S

p

q

non-convex

q

p

convex

p

q

non-convex

q

p

convex

Geometría Computacional

La envoltura convexa de un conjunto S es el mínimo conjunto convexo que contiene a S.

Otra definición es: la intersección de todos los convexos que contienen al conjunto S.

Algoritmo Fuerza Bruta EC

• Descripción:

– Por cada par de puntos construiremos el segmento que los conecta y la línea soporte.

– Buscamos todos los segmentos cuyas líneas soportes dividen el plano, tal que en una mitad del plano se encuentran el resto de los puntos.

– Construir la envoltura convexa con esos segmentos

Geometría Computacional

Algoritmo Fuerza Bruta EC

• Descripción:

– Por cada par de puntos construiremos el segmento que los conecta y la línea soporte.

– Buscamos todos los segmentos cuyas líneas soportes dividen el plano, tal que en una mitad del plano se encuentran el resto de los puntos.

– Construir la envoltura convexa con esos segmentos

Geometría Computacional

Algoritmo Fuerza Bruta EC

• Descripción:

– Por cada par de puntos construiremos el segmento que los conecta y la línea soporte.

– Buscamos todos los segmentos cuyas líneas soportes dividen el plano, tal que en una mitad del plano se encuentran el resto de los puntos.

– Construir la envoltura convexa con esos segmentos

Geometría Computacional

Algoritmo Fuerza Bruta EC

• Análisis de complejidad:

– Todos los pares:

– Chequear todos los puntos por cada par : O(n)

– Total: O(n3)

2(1)( ) ( ) ()2 2

n nnO O On

Geometría Computacional

Algoritmo Fuerza Bruta EC(P)

Entrada: Conjunto P de puntos en el plano.

Salida: Una lista L que contiene los vértices de EC(P)

en sentido horario.

E<--0

Para cada par ordenado(p,q), p q hacer

valid<--true

Para cada r, r p q hacer

Si r está a la izquierda de línea directiva de

p a q.

entonces valid<-- false

Si valid

entonces adicionar la arista dirigida pq en E.

Dado el conjunto E de aristas construir una lista L de

vértices de EC(P), ordenada en sentido horario.

Geometría Computacional

Posibles pifias

Casos degenerados –3 puntos colineales. Pudieran afectar la corrección del algoritmo. Segmentos AB, BC y AC pudieran ser incluidos en la envoltura convexa.

Problemas numéricos – pudieran acarrear que ninguno de los tres segmentos pertenezcan a la envoltura.

A

B

C

Geometría Computacional

Algoritmo incremental EC

Se ordenan todos los puntos por la x-coordenada.

Se computa de manera separada la envoltura superior y la envoltura inferior.

Se concatenan los resultados.

Geometría Computacional

Envoltura Convexa Superior

Geometría Computacional

Invariante: Se van adicionando los puntos según su coordenada en x,garantizando computar la envoltura superior hasta dicho punto una vez que se inserte.

Idea geométrica: tres ptosconsecutivos de la ECS giran siempre a la derecha

Envoltura Convexa Superior

Geometría Computacional

Envoltura Convexa Superior

Geometría Computacional

x-coordenadas

Envoltura Convexa Superior

Geometría Computacional

Orden por las x-coordenadas

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p1p2

Iniciamos con los dos primeros ptos.

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

Asumimos que: la ECS de dos ptos es el segmento de recta que los une.

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1p3

Adicionamos p3 ycomprobamos si , p1 p2 p3

giran a la derecha ?

Envoltura Convexa Superior

Geometría Computacional

Punto a eliminar

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1p3

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p1p3

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p1

p3

Asumimos que: la ECS de dos ptos es el segmento de recta que los une.

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1p4

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p4

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1p5

p4

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p5

p4

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1p6

p4

p5

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p6

p4

p5

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

p4

p5

p6

p7

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

Punto a eliminar

p2

S

p1

p4

p5

p6

p7

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

p4

p5

p7

Envoltura Convexa Superior

Geometría Computacional

Punto a eliminar

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

p4

p5

p7

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

p4

p7

Envoltura Convexa Superior

Geometría Computacional

Punto a eliminar

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

p4

p7

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1p7

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p8

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p8

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p8

p9

Envoltura Convexa Superior

Geometría Computacional

Punto a eliminar

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p8

p9

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p9

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p9

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p9

p10

Envoltura Convexa Superior

Geometría Computacional

Punto a eliminar

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p9

p10

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p10

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p10

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p10

p11

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p10

p11

Envoltura Convexa Inferior

Geometría Computacional

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p10

S

p11

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p10

S

p11p9

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

Punto a eliminar

p10

S

p11p9

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p11p9

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p11

p9

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p11

p9

p8

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

Punto a eliminar

S

p11

p9

p8

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p11p8

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p1

p8

Algoritmo Incremental EC(P)

Entrada: Un conjunto P de puntos en el plano.

Salida: Una lista L que contiene los vértices de EC(P) en el sentido horario.

Ordenar los puntos por la x-coordenada, resultando

p1, ..., pn.

//Computo de la envoltura superior

Insertar p1 y p2 en la lista Lsup, con p1 como 1er punto

Para i <-- 3 hasta n hacer

adición de pi en Lsup

Mientrás |Lsup| > 2 & los últimos 3 ptos en Lsup no formen giro a la derecha hacer

Eliminar el pto medio de los últimos 3 ptos de Lsup

Geometría Computacional

//Cómputo de la envoltura inferior

Insertar pn y pn-1 en la lista Linf, con pn como 1er pto

para i <-- n-2 hasta 1 hacer

adición de pi en Linf

Mientrás |Linf| >2 & y los últimos 3 ptos en Linf no

formen giro a la derecha hacer

Eliminar pto medio de los últimos 3 ptos de Linf

// Cómputo de la envoltura

Eliminar el 1er y el último pto de Linf de modo que no

se duplique en Lsub y Linf.

Concatenar Linf a Lsub, denominado el resultado como L

Retornar L

Geometría Computacional

Posibles pifias

A

B

C

No hay giro

derecho

Geometría Computacional

Casos degenerados 3 puntos colineales. Pudieran

afectar la corrección del algoritmo. Segmentos AB, BCy AC pudieran ser incluidos en la envoltura convexa.

3 puntos con igual

x-coordenada .

Análisis de complejidad

Teorema:

La envoltura convexa de un conjunto de n puntos en el plano puede ser computada en un tiempo O(nlog n).

Geometría Computacional

Algorithm Speed Discovered By

Brute Force O(n4) [Anon, the dark ages]

Gift Wrapping O(nh) [Chand & Kapur, 1970]

Graham Scan O(n log n) [Graham, 1972]

Jarvis March O(nh) [Jarvis, 1973]

QuickHull O(nh) [Eddy, 1977], [Bykat, 1978]

Divide-and-Conquer O(n log n) [Preparata & Hong, 1977]

Monotone Chain O(n log n) [Andrew, 1979]

Incremental O(n log n) [Kallay, 1984]

Marriage-before-Conquest O(n log h) [Kirkpatrick & Seidel, 1986]

Algoritmos de EC

Bibliografía base

MM. de Berg, M. van Kreveld, M. Overmars, O. Schawarzkopf: Computational Geometry, Springer Verlag, 1997.

Geometría ComputacionalGeometría Computacional