stringtranslate.com

Máximos de un conjunto de puntos

Los cinco puntos rojos son los máximos del conjunto de todos los puntos rojos y amarillos. Las regiones sombreadas muestran los puntos dominados por al menos uno de los cinco máximos.

En geometría computacional , se dice que un punto p en un conjunto finito de puntos S es máximo o no dominado si no hay otro punto q en S cuyas coordenadas sean todas mayores o iguales que las coordenadas correspondientes de p . Los máximos de un conjunto de puntos S son todos los puntos máximos de S. El problema de encontrar todos los puntos máximos, a veces llamado problema de los máximos o problema del conjunto de máximos , se ha estudiado como una variante de los problemas de la envoltura convexa y de la envoltura convexa ortogonal . Es equivalente a encontrar la frontera de Pareto de una colección de puntos, y Herbert Freeman lo llamó el problema de la moneda flotante basándose en una aplicación que implica comparar la riqueza relativa de individuos con diferentes tenencias de múltiples monedas. [1]

Dos dimensiones

Para puntos en dos dimensiones, este problema se puede resolver en tiempo O ( n log n ) mediante un algoritmo que realiza los siguientes pasos: [1] [2]

Si se supone que las coordenadas de los puntos son números enteros , esto se puede acelerar utilizando algoritmos de ordenamiento de números enteros , para tener el mismo tiempo de ejecución asintótico que los algoritmos de ordenamiento. [3]

Tres dimensiones

Para puntos en tres dimensiones, nuevamente es posible encontrar los puntos máximos en el tiempo O ( n log n ) utilizando un algoritmo similar al bidimensional que realiza los siguientes pasos:

Este método reduce el problema de calcular los puntos máximos de un conjunto de puntos tridimensional estático a uno de mantenimiento de los puntos máximos de un conjunto de puntos bidimensional dinámico. El subproblema bidimensional se puede resolver de manera eficiente utilizando un árbol de búsqueda binario balanceado para mantener el conjunto de máximos de un conjunto de puntos dinámico. Utilizando esta estructura de datos, es posible probar si un nuevo punto está dominado por los puntos existentes, encontrar y eliminar los puntos previamente no dominados que están dominados por un nuevo punto, y agregar un nuevo punto al conjunto de puntos máximos, en tiempo logarítmico por punto. El número de operaciones del árbol de búsqueda es lineal a lo largo del algoritmo, por lo que el tiempo total es O ( n log n ) . [1] [2]

Para los puntos con coordenadas enteras, la primera parte del algoritmo, la ordenación de los puntos, se puede acelerar nuevamente mediante la ordenación de enteros. Si los puntos se ordenan por separado según sus tres dimensiones, el rango de valores de sus coordenadas se puede reducir al rango de 1 a n sin cambiar el orden relativo de dos coordenadas y sin cambiar las identidades de los puntos máximos. Después de esta reducción en el espacio de coordenadas, el problema de mantener un conjunto dinámico bidimensional de puntos máximos se puede resolver utilizando un árbol de van Emde Boas en lugar del árbol de búsqueda binaria balanceado. Estos cambios en el algoritmo aceleran su tiempo de ejecución a O ( n log log n ) . [3]

Dimensiones superiores

En cualquier dimensión d, el problema se puede resolver en tiempo O ( dn 2 ) probando todos los pares de puntos para ver si uno domina a otro y reportando como salida los puntos que no están dominados. Sin embargo, cuando d es una constante mayor que tres, esto se puede mejorar a O ( n (log  n ) d  − 3  log log n ) . [4] Para conjuntos de puntos que se generan aleatoriamente, es posible resolver el problema en tiempo lineal . [5] [6]

Referencias

  1. ^ abc Preparata, Franco P. ; Shamos, Michael Ian (1985), "Sección 4.1.3: El problema de los máximos de un conjunto de puntos", Geometría computacional: una introducción, Textos y monografías en informática, Springer-Verlag, pp. 157–166, ISBN 0-387-96131-3.
  2. ^ ab Kung, HT ; Luccio, F.; Preparata, FP (1975), "Sobre la búsqueda de los máximos de un conjunto de vectores" (PDF) , Journal of the ACM , 22 (4): 469–476, doi :10.1145/321906.321910, MR  0381379, S2CID  2698043.
  3. ^ ab Karlsson, Rolf G.; Overmars, Mark H. (1988), "Algoritmos de líneas de escaneo en una cuadrícula", BIT Numerical Mathematics , 28 (2): 227–241, doi :10.1007/BF01934088, hdl : 1874/16270 , MR  0938390, S2CID  32964283.
  4. ^ Gabow, Harold N. ; Bentley, Jon Louis ; Tarjan, Robert E. (1984), "Escalamiento y técnicas relacionadas para problemas de geometría", Actas del decimosexto simposio anual de la ACM sobre teoría de la computación (STOC '84) , Nueva York, NY, EE. UU.: ACM, págs. 135-143, doi : 10.1145/800057.808675, ISBN 0-89791-133-4, Número de identificación del sujeto  17752833.
  5. ^ Bentley, Jon L. ; Clarkson, Kenneth L. ; Levine, David B. (1993), "Algoritmos lineales rápidos de tiempo esperado para calcular máximos y envolturas convexas", Algorithmica , 9 (2): 168–183, doi :10.1007/BF01188711, MR  1202289, S2CID  1874434.
  6. ^ Dai, HK; Zhang, XW (2004), "Algoritmos lineales mejorados de tiempo esperado para calcular máximos", en Farach-Colton, Martín (ed.), LATIN 2004: Informática teórica, 6º Simposio Latinoamericano, Buenos Aires, Argentina, 5-8 de abril de 2004, Actas , Lecture Notes in Computer Science , vol. 2976, Berlín: Springer-Verlag, pp. 181–192, doi :10.1007/978-3-540-24698-5_22, ISBN 978-3-540-21258-4, Sr.  2095193.