Agustín Santiago Gutiérrez - pc-arg.com

56
Ejemplos de Geometría Avanzada Agustín Santiago Gutiérrez Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp Argentina 2021 Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 1 / 48

Transcript of Agustín Santiago Gutiérrez - pc-arg.com

Page 1: Agustín Santiago Gutiérrez - pc-arg.com

Ejemplos de Geometría Avanzada

Agustín Santiago Gutiérrez

Facultad de Ciencias Exactas y NaturalesUniversidad de Buenos Aires

Training Camp Argentina 2021

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 1 / 48

Page 2: Agustín Santiago Gutiérrez - pc-arg.com

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 2 / 48

Page 3: Agustín Santiago Gutiérrez - pc-arg.com

“He who despises Euclidean Geometry is like a man who, returningfrom foreign parts, disparages his home.”

H. G. Forder.

“Que nadie entre aquí si no sabe Geometría.”Platón

“Las ecuaciones son sólo la parte aburrida de la matemática. Trato dever las cosas en términos de geometría”

Stephen Hawking

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 3 / 48

Page 4: Agustín Santiago Gutiérrez - pc-arg.com

Introducción

Generalmente, los problemas de geometría de ICPC requierencalcular alguna cantidad (por ej., una distancia, un área, etc)relacionada con elementos geométricos como puntos, líneas, círculos,etc. Para resolverlos, debemos poder ser capaces de:

1. Representar los objetos geométricos involucrados en el problema,para poder operar con ellos.

2. Desarrollar un algoritmo para buscar la respuesta deseada.En esta charla nos concentraremos totalmente en la segunda parte, ysuponemos que ya somos capaces de llevar a cabo la primera.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 4 / 48

Page 5: Agustín Santiago Gutiérrez - pc-arg.com

Introducción

Discretización de candidatos

Se pide encontrar algo que tenga cierta propiedad particularPor ejemplo, un cierto punto del plano óptimo o especialEl plano tiene infinitos puntos⇒ no se puede probar todosIdentificar algunos candidatosExplorar todos los candidatos y verificar para cada uno

Es fácil pasar por alto estas ideas, y tratar de buscar una solución máscomplicada “que encuentre la solución directamente” si uno no estáatento.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 5 / 48

Page 6: Agustín Santiago Gutiérrez - pc-arg.com

Introducción

Ejemplo (n ≤ 1000)

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 6 / 48

Page 7: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Compresión de coordenadas + Tabla aditiva

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 7 / 48

Page 8: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Compresión de coordenadas + Tabla aditiva

Compresión de coordenadas

Entrada:

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 8 / 48

Page 9: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Compresión de coordenadas + Tabla aditiva

Compresión de coordenadas (cont.)

Coordenadas importantes:

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 9 / 48

Page 10: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Compresión de coordenadas + Tabla aditiva

Compresión de coordenadas (cont.)

Compresión de coordenadas→ Grilla de hasta 2N × 2N esquinasHasta 2N × 2N esquinas→ Hasta (2N − 1)× (2N − 1) casillasCada casilla tiene un peso: su área original

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 10 / 48

Page 11: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Compresión de coordenadas + Tabla aditiva

Tabla aditiva

Grilla de (n + 1)× (m + 1) esquinasMatriz v de n ×m casillasExtendemos a (n + 1)× (m + 1) casillas para evitar casos borde

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 11 / 48

Page 12: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Compresión de coordenadas + Tabla aditiva

Tabla aditiva (cont.)

Inicializamos vi,j = 0 ∀0 ≤ i ≤ n, 0 ≤ j ≤ m (índices de casillas)Para llenar [x1, x2]× [y1, y2] (índices de esquinas), hacemos:

vx1,y1+=1 , vx1,y2-=1 , vx2,y1-=1 , vx2,y2+=1

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 12 / 48

Page 13: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Compresión de coordenadas + Tabla aditiva

Tabla aditiva (cont.)

Computamos el acumulado horizontal y vertical Vi,j

Vi,j es la cantidad de rectángulos que contienen la casilla (i , j)Complejidad: O(N2)

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 13 / 48

Page 14: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Algoritmo con Sweep Line

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 14 / 48

Page 15: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Algoritmo con Sweep Line

Algoritmo con Sweep Line

Barrido con una línea vertical, de izquierda a derechaRectángulo⇒ dos eventos:

“Es encontrado” con su lado izquierdo“Es removido” con su lado derecho

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 15 / 48

Page 16: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Algoritmo con Sweep Line

Algoritmo con Sweep Line (cont.)Multiconjunto de intervalos en y :

Cuando un lado izquierdo entra, se agrega al multiconjuntoCuando un lado derecho se va, se saca

Sea U la longitud total de la unión de todos los intervalos en yCada avance de la línea barre un área ∆x · U

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 16 / 48

Page 17: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Algoritmo con Sweep Line

Algoritmo con Sweep Line (cont.)

Comprimimos coordenadas en yLas coordenadas de los intervalos estarán entre 0 y NSi podemos hacer en O(lg N):

Agregar intervaloSacar intervaloConsultar longitud de la unión

La complejidad final será O(N lg N)

Problema de estructuras de datos en una sola dimensión

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 17 / 48

Page 18: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Implementación eficiente 1: Lazy Propagation

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 18 / 48

Page 19: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Implementación eficiente 1: Lazy Propagation

Implementación eficiente 1: Lazy Propagation

Segment Tree con Lazy PropagationCelda del arreglo = cantidad de intervalos en ese tramoHacemos +1 o −1 a un rango (cuando un intervalo se va o viene)Cada celda tiene longitud distinta (compresión de coordenadas)

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 19 / 48

Page 20: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Implementación eficiente 1: Lazy Propagation

Implementación eficiente 1: Lazy Propagation (cont.)

Necesitamos la longitud total de celdas no nulasGuardamos en los nodos del Segment Tree dos valores:

El mínimo valor en el rangoLa longitud total correspondiente a ese mínimo valor

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 20 / 48

Page 21: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Implementación eficiente 1: Lazy Propagation

Implementación eficiente 1: Lazy Propagation (cont.)

Estos pares se combinan de forma asociativa:

(min1, l1)4(min2, l2) =

(min1, l1) min1 < min2(min2, l2) min1 > min2

(min1, l1 + l2) min1 = min2

Son fáciles de actualizar ante un update de rango:Si se suma k a todo el rango, se pasa de (m, l) a (m + k , l)

Para saber la longitud total de no nulos en un rango [i , j):Se hace la consulta al Segment Tree y se obtiene (m, l)Si m > 0:

No hay ninguna celda nulaLa longitud total no nula es T (i, j) = yj − yi

Es decir, la longitud total del rango (i, j)Si m = 0:

Hay celdas nulasLa longitud total no nula es T (i, j)− l

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 21 / 48

Page 22: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Implementación eficiente 2: Sin Lazy

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 22 / 48

Page 23: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Implementación eficiente 2: Sin Lazy

Implementación eficiente 2: Sin Lazy

Segment Tree común y corrienteCelda del arreglo = diferencias consecutivas del caso anteriorSi a esto le hiciéramos sumas parciales, quedaría lo anteriorAhora hacemos +1 y −1 a los extremos del rango

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 23 / 48

Page 24: Agustín Santiago Gutiérrez - pc-arg.com

Área de unión de rectángulos Implementación eficiente 2: Sin Lazy

Implementación eficiente 2: Sin Lazy (cont.)

Antes teníamos mínimo valor y su longitud: (m, l)Ahora corresponde a mínima suma de prefijosGuardaremos también la suma total del rango¡La recursión es casi idéntica!

(m1, s1, l1)4(m2, s2, l2) =

(m1, s1 + s2, l1) m1 < s1 + m2

(s1 + m2, s1 + s2, l2) m1 > s1 + m2(m1, s1 + s2, l1 + l2) m1 = s1 + m2

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 24 / 48

Page 25: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido lineal

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 25 / 48

Page 26: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido lineal

¿Qué es sweep circle?

Misma idea que sweep line, pero con una circunferenciaLa circunferencia puede moverse:

En linea recta (traslación)Alrededor de un centro fijo (rotación)En cualquier otra trayectoria bien definida

Un círculo es una figura acotada (como un intervalo en 1D)El choque con los puntos interesantes produce eventos

De entrada al círculoDe salida del círculo

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 26 / 48

Page 27: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido lineal

Ejemplo: Ubicación ideal de un círculo en el eje Y

Problema (“Inscripción”, OIA Nacional Nivel 3, año 2002)Dado un radio R > 0 entero, se debe indicar cuál es la máximacantidad de puntos de la grilla de coordenadas enteras que es posibleencerrar con un círculo de radio R, cuyo centro se encuentreposicionado sobre la recta x = 0 (el eje y ).

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 27 / 48

Page 28: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido lineal

Observación

Alcanza con considerar las posiciones 0 ≤ y ≤ 1

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 28 / 48

Page 29: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido lineal

Planteo con sweep circle

Comenzamos con el círculo ubicado en (0,0)

Los correspondientes puntos de la grilla inician adentro“Movemos” el círculo en vertical, desde (0,0) hasta llegar a (0,1)

Procesamos en orden los eventos (entradas y salidas de puntos)Respuesta: Máxima cantidad de puntos dentro en algún momento

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 29 / 48

Page 30: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido lineal

Planteo con sweep circle (cont.)

El cálculo del h “tiempo” de los eventos es geométricoLos ε “sumando o restando”⇒ bordes “inclusive o exclusive”

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 30 / 48

Page 31: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido lineal

Planteo con sweep circle (cont.)

Hay O(R) eventos de entrada / salida.La cantidad de puntos totales dentro del círculo inicial puedecomputarse en O(R)

Con la técnica de barrido, el problema se resuelve en O(R lg R)

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 31 / 48

Page 32: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido circular

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 32 / 48

Page 33: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido circular

Ejemplo: Radio óptimo para cubrir K puntos

ProblemaDado un conjunto de N puntos en el plano, encontrar el mínimo radioposible de un círculo que cubra al menos K de ellos.

Observación 1: Podemos asumir que toca alguno de los puntos

Observación 2: Podemos hacer búsqueda binaria en la respuesta

Idea: Para verificar si con radio R se puede cubrir K puntos,probamos cada punto a ver si es el de observación 1Más idea: Para cada punto, giramos el círculo a su alrededor

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 33 / 48

Page 34: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido circular

Ejemplo: Radio óptimo para cubrir K puntos

ProblemaDado un conjunto de N puntos en el plano, encontrar el mínimo radioposible de un círculo que cubra al menos K de ellos.

Observación 1: Podemos asumir que toca alguno de los puntos

Observación 2: Podemos hacer búsqueda binaria en la respuesta

Idea: Para verificar si con radio R se puede cubrir K puntos,probamos cada punto a ver si es el de observación 1Más idea: Para cada punto, giramos el círculo a su alrededor

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 33 / 48

Page 35: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido circular

Ejemplo: Radio óptimo para cubrir K puntos

ProblemaDado un conjunto de N puntos en el plano, encontrar el mínimo radioposible de un círculo que cubra al menos K de ellos.

Observación 1: Podemos asumir que toca alguno de los puntosObservación 2: Podemos hacer búsqueda binaria en la respuesta

Idea: Para verificar si con radio R se puede cubrir K puntos,probamos cada punto a ver si es el de observación 1Más idea: Para cada punto, giramos el círculo a su alrededor

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 33 / 48

Page 36: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido circular

Ejemplo: Radio óptimo para cubrir K puntos

ProblemaDado un conjunto de N puntos en el plano, encontrar el mínimo radioposible de un círculo que cubra al menos K de ellos.

Observación 1: Podemos asumir que toca alguno de los puntosObservación 2: Podemos hacer búsqueda binaria en la respuestaIdea: Para verificar si con radio R se puede cubrir K puntos,probamos cada punto a ver si es el de observación 1Más idea: Para cada punto, giramos el círculo a su alrededor

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 33 / 48

Page 37: Agustín Santiago Gutiérrez - pc-arg.com

Sweep Circle Barrido circular

Ejemplo: Radio óptimo para cubrir K puntos (cont.)

Cálculo de los tiempos de los eventos:

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 34 / 48

Page 38: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Ancho de polígono

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 35 / 48

Page 39: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Ancho de polígono

Ancho de polígono

Observación: Ancho en dirección normal a algún ladoAlgoritmo O(N2) (para cada lado, buscar el punto más lejano)¿Podemos mejorar más?

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 36 / 48

Page 40: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Ancho de polígono

Ancho de polígono

¡Sí! Fijamos un lado l del polígono.La distancia f (x) de un vértice x a l es unimodal en xO(N lg N)

¡Se puede mejorar más!El valor óptimo de x siempre avanza al avanzar el lado lTécnica de dos punteros: O(N)

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 37 / 48

Page 41: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Ancho de polígono

Ancho de polígono

¡Sí! Fijamos un lado l del polígono.La distancia f (x) de un vértice x a l es unimodal en xO(N lg N)

¡Se puede mejorar más!El valor óptimo de x siempre avanza al avanzar el lado lTécnica de dos punteros: O(N)

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 37 / 48

Page 42: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Triángulo máximo

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 38 / 48

Page 43: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Triángulo máximo

Triángulo máximo

Solución fuerza bruta: O(N3)

¿Podemos mejorar?

¡Sí! Fijados A,B, el área f (A,B,C) es unimodal en C. O(N2 lg N)

Incluso se puede mejorar a O(N2), notando que el valor óptimode C siempre avanza al avanzar B.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 39 / 48

Page 44: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Triángulo máximo

Triángulo máximo

Solución fuerza bruta: O(N3)

¿Podemos mejorar?¡Sí! Fijados A,B, el área f (A,B,C) es unimodal en C. O(N2 lg N)

Incluso se puede mejorar a O(N2), notando que el valor óptimode C siempre avanza al avanzar B.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 39 / 48

Page 45: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Triángulo máximo

Triángulo máximo

Solución fuerza bruta: O(N3)

¿Podemos mejorar?¡Sí! Fijados A,B, el área f (A,B,C) es unimodal en C. O(N2 lg N)

Incluso se puede mejorar a O(N2), notando que el valor óptimode C siempre avanza al avanzar B.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 39 / 48

Page 46: Agustín Santiago Gutiérrez - pc-arg.com

Algoritmos sobre polígono convexo (típico post-chull) Triángulo máximo

Referencia

Solución O(N lg N):

https://stackoverflow.com/questions/1621364/how-to-find-largest-triangle-in-convex-hull-aside-from-brute-force-search

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 40 / 48

Page 47: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Par de puntos más lejano

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 41 / 48

Page 48: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Par de puntos más lejano

Par de puntos más lejano

Solución fuerza bruta: O(N2).¿Se podrá mejorar?

Uno puede pensar en un algoritmo O(N lg N) como venimoshaciendo, usando la convexidad.Para cada vértice v fijo, buscamos con búsqueda binaria oternaria el vértice w a máxima distancia de v .¿Es d(v ,w) unimodal en w , para un v fijo?

NO.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 42 / 48

Page 49: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Par de puntos más lejano

Par de puntos más lejano

Solución fuerza bruta: O(N2).¿Se podrá mejorar?Uno puede pensar en un algoritmo O(N lg N) como venimoshaciendo, usando la convexidad.Para cada vértice v fijo, buscamos con búsqueda binaria oternaria el vértice w a máxima distancia de v .¿Es d(v ,w) unimodal en w , para un v fijo?

NO.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 42 / 48

Page 50: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Par de puntos más lejano

Par de puntos más lejano

Solución fuerza bruta: O(N2).¿Se podrá mejorar?Uno puede pensar en un algoritmo O(N lg N) como venimoshaciendo, usando la convexidad.Para cada vértice v fijo, buscamos con búsqueda binaria oternaria el vértice w a máxima distancia de v .¿Es d(v ,w) unimodal en w , para un v fijo?NO.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 42 / 48

Page 51: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Par de puntos más lejano

Contraejemplo

Si fijamos v = 2, al mover w en sentido horario, f (v ,w) subehasta el nodo 0, luego baja hasta el nodo 5, luego vuelve a subirhasta el 4 y finalmente baja por última vez.Resumiendo:

En un polígono convexo, las distancias de los vértices a unlado(recta) fijo forman una función unimodalEn un polígono convexo, las distancias de los vértices a un vérticefijo NO forman una función unimodal

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 43 / 48

Page 52: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Rotating calipers

Contenidos1 Introducción2 Área de unión de rectángulos

Compresión de coordenadas + Tabla aditivaAlgoritmo con Sweep LineImplementación eficiente 1: Lazy PropagationImplementación eficiente 2: Sin Lazy

3 Sweep CircleBarrido linealBarrido circular

4 Algoritmos sobre polígono convexo (típico post-chull)Ancho de polígonoTriángulo máximo

5 Rotating calipersPar de puntos más lejanoRotating calipers

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 44 / 48

Page 53: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Rotating calipers

Rotating calipers

Caliper en inglés es calibre.Esto es un calibre:

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 45 / 48

Page 54: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Rotating calipers

Rotating calipers (cont)

La analogía surge de imaginar que vamos girando un calibreajustado al polígono todo el tiempo.Nuestro calibre siempre toca dos vértices del polígono.Un par de vértices que son tocados al mismo tiempo para algunarotación del calibre, se llama un par antipodalEl método de rotating calipers consiste en simular eficientementeen O(N) este proceso de rotación, enumerando todos los paresantipodalesCaso borde del recorrido: Si el polígono tiene dos lados paralelos,cuando el calibre se ajusta a ellos hay 4 pares de vérticesantipodales, correspondientes a esos dos lados.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 46 / 48

Page 55: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Rotating calipers

Rotating calipers: Algoritmo

En nuestro caso, giraremos en sentido horarioDe un lado, comenzamos con un vértice p de mínimo x , y en casode empate el de mínimo yDel otro lado comenzamos con un vértice q de máximo x , y encaso de empate el de máximo y(p,q) es nuestro primer par antipodal.En cada paso consideramos los vértices siguientes a p y q ensentido horario, que son pn y qn

De esos dos, elegimos avanzar por “el que primero es tocado porlos calibres”, cambiando así a:

(pn,q) si (pn − p)× (qn − q) > 0(p,qn) si (pn − p)× (qn − q) < 0Si (pn − p)× (qn − q) = 0, (p,pn) y (q,qn) son lados paralelos. Losprocesamos y avanzamos a (pn,qn)

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 47 / 48

Page 56: Agustín Santiago Gutiérrez - pc-arg.com

Rotating calipers Rotating calipers

Aplicación al problema original

Se puede observar que la distancia máxima entre vértices sealcanza necesariamente en un par antipodal.Con el método de rotating calipers, los enumeramos en O(N) ytomamos el par más lejano encontrado.

Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 48 / 48