1 / 83

Envolvente convexa Parte 1: Algoritmos

Tema 1. Envolvente convexa Parte 1: Algoritmos. Definiciones. Un conjunto es convexo si el segmento uniendo cualquiera dos de sus puntos está contenido en él. Definiciones. Envolvente convexa de un conjunto: menor convexo que lo contiene.

jonco
Download Presentation

Envolvente convexa Parte 1: Algoritmos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tema 1 Envolvente convexaParte 1: Algoritmos

  2. Definiciones Un conjunto es convexo si el segmento uniendo cualquiera dos de sus puntos está contenido en él.

  3. Definiciones Envolvente convexa de un conjunto: menor convexo que lo contiene. O, equivalentemente, la intersección de todos los convexos que contienen al conjunto.

  4. Considere todos los conjuntos convexos que lo contienen y elija el menor de todos ellos.

  5. O bien, calculando la intersección de todos ellos.

  6. Pero, ningún ordenador puede manejar infinitos conjuntos....

  7. Eso se resuelve con puntillas y una goma elástica

  8. Observación 1: La envolvente convexa es un polígono convexo con vértices en puntos del conjunto. Observación 2: Describir la secuencia en orden de los vértices es describir la envolvente. Observación 3: Selección ordenada de subconjuntos.

  9. Definiciones Aplicaciones: • Lo interesante suele ocurrir dentro de la envolvente. • Es más fácil (rápido) mover un convexo.

  10. Algoritmos: Puntos extremos Sea S un conjunto de n puntos. Punto extremo de S: no está contenido en ningún triángulo con vértices en puntos de S.

  11. Algoritmos: Puntos extremos Sea S un conjunto de n puntos. Punto extremo de S: no está contenido en ningún triángulo con vértices en puntos de S.

  12. Algoritmos: Puntos extremos Los puntos extremos son los vértices de la envolvente convexa. ¿Cuánto nos cuesta encontrar todos los puntos extremos?

  13. 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. n puntos, O(n3) triángulos, O(n4) operaciones. Para cada punto de S comprobar si está dentro de algún triángulo.

  14. 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). O(n2) pares, O(n) por comprobación O(n3)operaciones. Para cada par de puntos de S ver si la arista es extrema.

  15. 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

  16. Algoritmos: Puntos extremos ¿A qué lado de la recta PQ está R? Q A partir de sus coordenadas construimos el determinante p1 p2 1 |A|= q1 q2 1 r1 r2 1 P R 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.

  17. Algoritmos: Puntos extremos ¿M está dentro o fuera del triángulo? Q 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. P R ¡Ojo! esto sólo vale para convexos .

  18. Algoritmos: Quickhull Punto Norte (mayor coordenada y) Este Oeste Sur

  19. Algoritmos: Quickhull Los puntos en el rectángulo definido por estos cuatro puntos no son vértices de la envolvente.

  20. Algoritmos: Quickhull Buscamos el punto más alejado a cada uno de los segmentos y lo incorporamos.

  21. Algoritmos: Quickhull Buscamos el punto más alejado a cada uno de los segmentos y lo incorporamos.

  22. Algoritmos: Quickhull Repetimos el proceso en cada nuevo segmento hasta completar la envolvente.

  23. Algoritmos: Quickhull En el peor de los casos necesitaremos O(n2)operaciones.

  24. Algoritmos: Marcha de Jarvis Buscamos el punto Sur y a partir de él giramos una semirrecta

  25. Algoritmos: Marcha de Jarvis Buscamos el punto Sur y a partir de él giramos una semirrecta hasta encontrar el siguiente punto de la envolvente.

  26. Algoritmos: Marcha de Jarvis Repetimos el proceso hasta volver al punto de partida.

  27. Algoritmos: Marcha de Jarvis Repetimos el proceso hasta volver al punto de partida.

  28. 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)

  29. 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.

  30. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.

  31. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.

  32. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto.

  33. 2 1 4 3 13 5 6 11 10 7 9 12 8 Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L

  34. 2 1 4 3 13 5 6 11 10 7 9 12 8 Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F

  35. 2 1 4 3 13 5 6 11 10 7 9 12 8 Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F M I F

  36. 2 1 4 3 13 5 6 11 10 7 9 12 8 Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) M I F

  37. 2 1 4 3 13 5 6 11 10 7 9 12 8 Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) I F M

  38. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F I 2 F M 1 4 3 13 5 6 11 10 7 9 12 8

  39. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F M 2 I F 1 4 3 13 5 6 11 10 7 9 12 8

  40. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F I 2 M 1 4 3 F 13 5 6 11 10 7 9 12 8

  41. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 I 1 4 3 M F 13 5 6 11 10 7 9 12 8

  42. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 1 4 3 I M 13 5 6 11 F 10 7 9 12 8

  43. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 1 4 3 I M 13 5 6 11 F 10 7 9 12 8

  44. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 I 1 4 3 M 13 5 6 11 F 10 7 9 12 8

  45. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 1 4 3 I 13 5 6 11 M 10 7 9 12 F 8

  46. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 1 4 3 13 5 6 11 I F 10 7 9 12 M 8

  47. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 1 4 3 13 5 6 11 F M 10 7 9 12 I 8

  48. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 1 4 3 13 5 6 11 F M 10 7 9 12 I 8

  49. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 1 4 3 13 5 6 11 I F 10 7 9 12 M 8

  50. Algoritmos: Scan de Graham 1.- Escogemos un punto cualquiera.2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L3.- A los tres primeros puntos les ponemos las etiquetas I M F4.-Si el ángulo IMF es positivo I=siguiente(I)M=siguiente(M)F=siguiente(F) Si IMF es negativo: borramos M de LI=anterior(I)M=IF=F 2 1 4 3 13 5 F 6 11 10 M 7 9 12 I 8

More Related