Envolvente convexa Parte 1: Algoritmos

Slides:



Advertisements
Presentaciones similares
Igualdad por copia de ángulos
Advertisements

CONSTRUCIONES GEOMETRICAS 5 - CÓNICAS
Transformaciones geométricas
PRACTICA_GEO (1) CON REGLA Y COMPÁS
GEOMETRIA PLANA.
DERIVADA DE UNA FUNCION REAL
Círculo y Circunferencia
CONSTRUCIONES GEOMETRICAS - CÓNICAS
Cálculo de área con LA INTEGRAL DEFINIDA Elaborado por: RITA DEDERLÉ.
Traslaciones, giros y simetrías en el plano.
PROPORCIONALIDAD Y SEMEJANZA
MOVIMIENTOS EN EL PLANO
Matemáticas preuniversitarias
Recursos matemáticos para física
TEMA 9 PROPORCIÓN Y ESTRUCTURAS MODULARES
Factorización (productos notables)
M. en C. René Benítez López
Función Lineal.
La circunferencia Matemáticas Preuniversitarias
Geometría Computacional
Vectores en el plano. Producto escalar.
LA CIRCUNFERENCIA.
GEOMETRIA ANALITICA.
GRAFOS HUGO ARAYA CARRASCO.
División de un segmento en una razón dada
Parte 2: Aplicaciones (anchura y diámetro)
Diagramas de Voronoi.
Del lenguaje ordinario al lenguaje algebraico
Sesión 3 AXIOMAS Y TEOREMAS BÁSICOS Dra. Nieves Vílchez G.
Angel Mendoza Justiniano
Matemática Aplicada I Alberto Márquez Geometría Computacional Localización Planteamiento del problema Casos simples.
División de un segmento en una razón dada Sean P 1 (x 1,y 1 ) y P 2 (x 2,y 2 ) los extremos de un segmento, entonces la razón en que el punto P(x,y) divide.
Matemática Aplicada I José Ramón Gómez Envolvente convexa Tema 5.
Cónicas y Curvas Técnicas
EXAMENES PAU JUNIO Fase general
Apuntes de Matemáticas 2º ESO
Tema 4 Polinomios.
GEOMETRIA ANALITICA.
EXAMENES PAU JULIO Fase General
EXAMENES PAU JUNIO Fase General
M. en C. René Benítez López
Tema 7. RECTA . X l1 d1 P1 l2 d2 l‘ l P2 Y l2 l1 1 2 1 2 Y X C B A
La trigonometría.
Apuntes de Matemáticas 3º ESO
Secciones Cónicas: LA ELIPSE.
Apuntes de Matemáticas 3º ESO
Diagramas de Voronoi.
Luciano Reyes Itzel Elvira
UNIDAD 3- FORMAS GEOMÉTRICAS
TEOREMA DE THALES ESPAD III * TC 22.
Matemática Aplicada I Alberto Márquez Envolvente convexa Tema 5.
Tipos de Funciones Función lineal.
Colegio El Valle Figuras semejantes
GEOMETRÍA ÁNGULOS. CUADRILÁTEROS. ÁREAS IDENTIDADES VOLÚMENES.
EXAMENES PAU JUNIO Fase general
SISTEMA AXONOMÉTRICO Perspectiva.
SISTEMA ISOMÉTRICO Perspectiva.
Prof. Juan José Bravo B., M.Sc. ©
TEMA 1 FUNDAMENTOS PARA EL ANÁLISIS GRÁFICO
EXAMENES PAU JULIO Fase general
Matemáticas preuniversitarias
@ Angel Prieto BenitoApuntes de Matemáticas 3º ESO1 GEOMETRÍA PLANA U.D. 9 * 3º ESO E.AP.
COTA Y ESCALAS. ÍNDICE LÍNEAS DE COTA: Resumen
Introducción al Cálculo Infinitesimal Tema 1: Conceptos básicos José R. Narro Introducción al Cálculo Infinitesimal Tema 1: Conceptos básicos José R. Narro.
Del lenguaje ordinario al lenguaje algebraico
Recuerda. La circunferencia
Cálculo de área por medio de la sumas de Riemann Alumnas: Maciel Gisella, Uliambre Sabrina Profesora: Nancy Debárbora Curso: 3er año del prof. En matemáticas.
 Un triángulo es un polígono determinado por tres rectas que se intersectan en tres puntos no alineados; los puntos de intersección son los vértices.
CURVAS TÉCNICAS, CÍCLICAS Y CÓNICAS
1 Los números reales Los números racionales Los números irracionales
Transcripción de la presentación:

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. O, equivalentemente, la intersección de todos los convexos que contienen al conjunto.

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

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

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

Eso se resuelve con puntillas y una goma elástica

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.

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

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.

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.

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

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: 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: 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: Puntos extremos Q ¿A qué lado de la recta PQ está R? 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.

Algoritmos: Puntos extremos Q ¿M está dentro o fuera del triángulo? 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 .

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

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

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

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

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

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

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

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: Marcha de Jarvis Repetimos el proceso hasta volver al punto de partida.

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

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: 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: Scan de Graham 1.- Escogemos un punto cualquiera.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Algoritmos: Scan de Graham Teorema: El Scan de Graham computa la envolvente convexa de n puntos en un tiempo óptimo O(n log n). 1.- Escogemos un punto cualquiera. 2.- Ordenamos los demás puntos angularmente con respecto a dicho punto:L 3.- A los tres primeros puntos les ponemos las etiquetas I M F 4.- Si el ángulo IMF es positivo I=siguiente(I) M=siguiente(M) F=siguiente(F) Si IMF es negativo: borramos M de L I=anterior(I) M=I F=F O(n log n) F 2 M 1 4 3 I O(n) 5 13 6 11 10 7 9 12 8

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos. Construimos las envolventes en cada subconjunto y vamos uniéndolas hasta hallar la del conjunto original.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos. Construimos las envolventes en cada subconjunto y vamos uniéndolas hasta hallar la del conjunto original.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos. Construimos las envolventes en cada subconjunto y vamos uniéndolas hasta hallar la del conjunto original.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos. Construimos las envolventes en cada subconjunto y vamos uniéndolas hasta hallar la del conjunto original.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos. Construimos las envolventes en cada subconjunto y vamos uniéndolas hasta hallar la del conjunto original.

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos. Construimos las envolventes en cada subconjunto y vamos uniéndolas hasta hallar la del conjunto original. No es necesario que las envolventes sean disjuntas (conjuntos separados linealmente).

Algoritmos: Otros Divide y vencerás: Dividimos el conjunto en dos subconjuntos de aproximadamente el mismo tamaño. En cada uno de ellos repetimos la división hasta llegar a un tener uno o dos puntos. Construimos las envolventes en cada subconjunto y vamos uniéndolas hasta hallar la del conjunto original. La unión de dos convexos requiere O(n), luego el algoritmo corre en tiempo O(n log n).

Algoritmos: Divide y vencerás Unión de dos convexos disjuntos Tangente superior B A Tangente inferior

Algoritmos: Divide y vencerás Unión de dos convexos disjuntos 2 Tangente superior 1 7 3 6 8 4 5 B A 5 10 4 3 2 1 6 9 7 8 Tangente inferior

Algoritmos: Divide y vencerás Unión de dos convexos disjuntos TANGENTE INFERIOR 2 1 a=punto de A más a la dcha b=punto de B más a la izda 7 3 6 While T=ab no sea tangente a A y a B do { 8 4 5 While T=ab no sea tangente a A do a=a-1; (mód |A|) B A 5 b 10 4 a While T=ab no sea tangente a B do b=b+1; (mód |B|) 3 2 1 6 9 } 7 8

Algoritmos: Divide y vencerás Unión de dos convexos disjuntos TANGENTE INFERIOR 2 1 a=punto de A más a la dcha b=punto de B más a la izda 7 3 6 While T=ab no sea tangente a A y a B do { 8 4 5 While T=ab no sea tangente a A do a=a-1; (mód |A|) B A 5 10 4 While T=ab no sea tangente a B do b=b+1; (mód |B|) 3 2 1 6 9 } 7 8

Algoritmos: Divide y vencerás Unión de dos convexos disjuntos TANGENTE SUPERIOR 2 1 a=punto de A más a la dcha b=punto de B más a la izda 7 3 6 While T=ab no sea tangente a A y a B do { 8 4 5 While T=ab no sea tangente a A do a=a+1; (mód |A|) B A 5 10 4 While T=ab no sea tangente a B do b=b-1; (mód |B|) 3 2 1 6 9 } 7 8 Si los convexos no son disjuntos el algoritmo es ligeramente más complicado (ver libro de Preparata y Shamos)

Algoritmos: Otros 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: Otros 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: Otros 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: Otros 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: Otros 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: Otros 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: 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: 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)