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

Geometría Computacional: Envoltura Convexa

Jul 03, 2015

Download

Education

Miguel Sancho

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.

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Geometría Computacional: Envoltura Convexa

Geometría Computacional: Envoltura Convexa -Algoritmo Incremental

Maikel Arcia

Miguel Sancho

Page 2: Geometría Computacional: Envoltura Convexa

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

Page 3: Geometría Computacional: Envoltura Convexa

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

Page 4: Geometría Computacional: Envoltura Convexa

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.

Page 5: Geometría Computacional: Envoltura Convexa

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

Page 6: Geometría Computacional: Envoltura Convexa

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

Page 7: Geometría Computacional: Envoltura Convexa

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

Page 8: Geometría Computacional: Envoltura Convexa

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

Page 9: Geometría Computacional: Envoltura Convexa

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

Page 10: Geometría Computacional: Envoltura Convexa

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

Page 11: Geometría Computacional: Envoltura Convexa

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

Page 12: Geometría Computacional: Envoltura Convexa

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

Page 13: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

Page 14: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x-coordenadas

Page 15: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

Orden por las x-coordenadas

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

Page 16: Geometría Computacional: Envoltura Convexa

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.

Page 17: Geometría Computacional: Envoltura Convexa

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.

Page 18: Geometría Computacional: Envoltura Convexa

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 ?

Page 19: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

Punto a eliminar

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1p3

Page 20: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p1p3

Page 21: Geometría Computacional: Envoltura Convexa

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.

Page 22: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1p4

Page 23: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p4

Page 24: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1p5

p4

Page 25: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p5

p4

Page 26: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1p6

p4

p5

Page 27: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p6

p4

p5

Page 28: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

p4

p5

p6

p7

Page 29: Geometría Computacional: Envoltura Convexa

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

Page 30: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

p4

p5

p7

Page 31: Geometría Computacional: Envoltura Convexa

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

Page 32: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p2

S

p1

p4

p7

Page 33: Geometría Computacional: Envoltura Convexa

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

Page 34: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1p7

Page 35: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

Page 36: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p8

Page 37: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p8

Page 38: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p8

p9

Page 39: Geometría Computacional: Envoltura Convexa

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

Page 40: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p9

Page 41: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p9

Page 42: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p9

p10

Page 43: Geometría Computacional: Envoltura Convexa

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

Page 44: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p10

Page 45: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p10

Page 46: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p10

p11

Page 47: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Superior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p3

S

p1

p7

p10

p11

Page 48: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

Page 49: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p10

S

p11

Page 50: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

p10

S

p11p9

Page 51: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

Punto a eliminar

p10

S

p11p9

Page 52: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p11p9

Page 53: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p11

p9

Page 54: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p11

p9

p8

Page 55: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

Punto a eliminar

S

p11

p9

p8

Page 56: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p11p8

Page 57: Geometría Computacional: Envoltura Convexa

Envoltura Convexa Inferior

Geometría Computacional

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11

S

p1

p8

Page 58: Geometría Computacional: Envoltura Convexa

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

Page 59: Geometría Computacional: Envoltura Convexa

//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

Page 60: Geometría Computacional: Envoltura Convexa

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 .

Page 61: Geometría Computacional: Envoltura Convexa

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

Page 62: Geometría Computacional: Envoltura Convexa

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

Page 63: Geometría Computacional: Envoltura Convexa

Bibliografía base

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

Geometría ComputacionalGeometría Computacional