Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
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
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
“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
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
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
Introducción
Ejemplo (n ≤ 1000)
Agustín Gutiérrez (UBA) Geometría Avanzada TC Arg 2021 6 / 48
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
Á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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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