stringtranslate.com

Búsqueda paramétrica

En el diseño y análisis de algoritmos de optimización combinatoria , la búsqueda paramétrica es una técnica inventada por Nimrod Megiddo  (1983) para transformar un algoritmo de decisión (¿este problema de optimización tiene una solución con una calidad mejor que un umbral dado?) en un algoritmo de optimización (encontrar la mejor solución). Se utiliza con frecuencia para resolver problemas de optimización en geometría computacional .

Técnica

La idea básica de la búsqueda paramétrica es simular un algoritmo de prueba que toma como entrada un parámetro numérico , como si se estuviera ejecutando con el valor de solución óptima (desconocido) como entrada. Se supone que este algoritmo de prueba se comporta de manera discontinua cuando , y que opera sobre su parámetro solo mediante comparaciones simples de con otros valores calculados, o probando el signo de funciones polinómicas de bajo grado de . Para simular el algoritmo, es necesario simular cada una de estas comparaciones o pruebas, aunque se desconozca el del algoritmo simulado. Para simular cada comparación, la búsqueda paramétrica aplica un segundo algoritmo, un algoritmo de decisión , que toma como entrada otro parámetro numérico , y que determina si es superior, inferior o igual al valor de solución óptima .

Dado que el algoritmo de decisión se comporta necesariamente de manera discontinua en , el mismo algoritmo también se puede utilizar como algoritmo de prueba. Sin embargo, muchas aplicaciones utilizan otros algoritmos de prueba (a menudo, algoritmos de ordenación por comparación ). Las versiones avanzadas de la técnica de búsqueda paramétrica utilizan un algoritmo paralelo como algoritmo de prueba y agrupan las comparaciones que se deben simular en lotes, con el fin de reducir significativamente la cantidad de instancias del algoritmo de decisión.

Algoritmo de prueba secuencial

En la forma más básica de la técnica de búsqueda paramétrica, tanto el algoritmo de prueba como los algoritmos de decisión son algoritmos secuenciales (no paralelos), posiblemente el mismo algoritmo entre sí. La técnica simula el algoritmo de prueba paso a paso, como se ejecutaría si se le diera el valor de solución óptima (desconocido) como su parámetro . Siempre que la simulación llega a un paso en el que el algoritmo de prueba compara su parámetro con algún otro número , no puede realizar este paso haciendo una comparación numérica, ya que no sabe cuál es. En cambio, llama al algoritmo de decisión con el parámetro , y usa el resultado del algoritmo de decisión para determinar la salida de la comparación. De esta manera, el tiempo para la simulación termina siendo igual al producto de los tiempos para los algoritmos de prueba y decisión. Debido a que se supone que el algoritmo de prueba se comporta de manera discontinua en el valor de solución óptima, no se puede simular con precisión a menos que uno de los valores de parámetro pasados ​​al algoritmo de decisión sea realmente igual al valor de solución óptima. Cuando esto sucede, el algoritmo de decisión puede detectar la igualdad y guardar el valor de solución óptima para una salida posterior. Si el algoritmo de prueba necesita conocer el signo de un polinomio en , esto se puede simular nuevamente pasando las raíces del polinomio al algoritmo de decisión para determinar si el valor de la solución desconocida es una de estas raíces o, si no, entre cuáles dos raíces se encuentra.

Un ejemplo considerado tanto por Megiddo (1983) como por van Oostrum & Veltkamp (2002) se refiere a un sistema de un número impar de partículas, todas moviéndose hacia la derecha a diferentes velocidades constantes a lo largo de la misma línea. La mediana de las partículas, también, tendrá un movimiento hacia la derecha, pero uno que es lineal por partes en lugar de tener una velocidad constante, porque diferentes partículas serán la mediana en diferentes momentos. Inicialmente, las partículas, y su mediana, están a la izquierda del origen de la línea, y eventualmente ellas y su mediana estarán todas a la derecha del origen. El problema es calcular el tiempo en el que la mediana se encuentra exactamente en el origen. Un algoritmo de decisión de tiempo lineal es fácil de definir: para cualquier tiempo , uno puede calcular la posición de cada partícula en el tiempo y contar el número de partículas en cada lado del origen. Si hay más partículas a la izquierda que a la derecha, entonces , y si hay más partículas a la derecha que a la izquierda, entonces . Cada paso de este algoritmo de decisión compara el parámetro de entrada con el tiempo en que una de las partículas cruza el origen.

El uso de este algoritmo de decisión como algoritmo de prueba y algoritmo de decisión de una búsqueda paramétrica conduce a un algoritmo para encontrar el tiempo óptimo en tiempo total cuadrático. Para simular el algoritmo de decisión para el parámetro , la simulación debe determinar, para cada partícula, si su tiempo de cruce es anterior o posterior a , y, por lo tanto, si está a la izquierda o a la derecha del origen en el tiempo . La respuesta a esta pregunta para una sola partícula (comparando el tiempo de cruce de la partícula con el tiempo de cruce óptimo desconocido ) se puede realizar ejecutando el mismo algoritmo de decisión con el tiempo de cruce de la partícula como su parámetro. Por lo tanto, la simulación termina ejecutando el algoritmo de decisión en cada uno de los tiempos de cruce de la partícula, uno de los cuales debe ser el tiempo de cruce óptimo. Ejecutar el algoritmo de decisión una vez toma tiempo lineal, por lo que ejecutarlo por separado en cada tiempo de cruce toma tiempo cuadrático.

Megiddo señala que, para este problema específico, existe un algoritmo de tiempo lineal simple que no implica una búsqueda paramétrica: solo determina el tiempo en el que cada partícula cruza el origen y devuelve la mediana de estos tiempos. Sin embargo, explica que la búsqueda paramétrica a menudo coincide con el mejor tiempo de ejecución conocido o proporciona el algoritmo más rápido conocido para problemas más avanzados.

Algoritmo de prueba paralela

Como ya observó Megiddo (1983), la técnica de búsqueda paramétrica puede acelerarse sustancialmente reemplazando el algoritmo de prueba simulado por un algoritmo paralelo eficiente , por ejemplo en el modelo de máquina de acceso aleatorio paralelo (PRAM) de computación paralela, donde una colección de procesadores operan en sincronía en una memoria compartida , y todos realizan la misma secuencia de operaciones en diferentes direcciones de memoria. Si el algoritmo de prueba es un algoritmo PRAM que utiliza procesadores y lleva tiempo (es decir, pasos en los que cada procesador realiza una sola operación), entonces cada uno de sus pasos puede simularse utilizando el algoritmo de decisión para determinar los resultados de, como máximo, comparaciones numéricas. Al encontrar un valor mediano o cercano a la mediana en el conjunto de comparaciones que necesitan evaluarse, y pasar este único valor al algoritmo de decisión, es posible eliminar la mitad o casi la mitad de las comparaciones con una sola llamada del algoritmo de decisión. Al reducir repetidamente a la mitad el conjunto de comparaciones requeridas por la simulación de esta manera, hasta que no quede ninguna, es posible simular los resultados de las comparaciones numéricas utilizando solo llamadas al algoritmo de decisión. Por lo tanto, el tiempo total para la búsqueda paramétrica en este caso se convierte (para la simulación en sí) en el tiempo de las llamadas al algoritmo de decisión (para lotes de comparaciones, tomando llamadas por lote). A menudo, para un problema que se puede resolver de esta manera, el producto de tiempo-procesador del algoritmo PRAM es comparable al tiempo para un algoritmo de decisión secuencial, y el tiempo paralelo es polilogarítmico , lo que lleva a un tiempo total para la búsqueda paramétrica que es más lento que el algoritmo de decisión por solo un factor polilogarítmico.

En el caso del problema de ejemplo de encontrar el tiempo de cruce de la mediana de partículas en movimiento, el algoritmo de prueba secuencial puede reemplazarse por un algoritmo de ordenamiento paralelo que ordena las posiciones de las partículas en el tiempo dado por el parámetro del algoritmo, y luego usa el orden ordenado para determinar la partícula mediana y encontrar el signo de su posición. La mejor opción para este algoritmo (según su análisis teórico, si no en la práctica) es la red de ordenamiento de Ajtai , Komlós y Szemerédi  (1983). Esto puede interpretarse como un algoritmo PRAM en el que el número de procesadores es proporcional a la longitud de entrada y el número de pasos paralelos es logarítmico. Por lo tanto, simular este algoritmo secuencialmente toma tiempo para la simulación en sí, junto con lotes de comparaciones, cada uno de los cuales puede manejarse mediante llamadas al algoritmo de decisión de tiempo lineal. Juntando estos límites de tiempo se obtiene el tiempo total para la búsqueda paramétrica. Este no es el momento óptimo para este problema (el mismo problema se puede resolver más rápidamente observando que el tiempo de cruce de la mediana es igual a la mediana de los tiempos de cruce de las partículas), pero la misma técnica se puede aplicar a otros problemas de optimización más complicados y, en muchos casos, proporciona el algoritmo fuertemente polinomial más rápido conocido para estos problemas.

Debido a los grandes factores constantes que surgen en el análisis de la red de ordenamiento AKS, la búsqueda paramétrica que utiliza esta red como algoritmo de prueba no es práctica. En su lugar, van Oostrum y Veltkamp (2002) sugieren utilizar una forma paralela de quicksort (un algoritmo que divide repetidamente la entrada en dos subconjuntos y luego ordena recursivamente cada subconjunto). En este algoritmo, el paso de partición es masivamente paralelo (cada elemento de entrada debe compararse con un elemento pivote elegido) y las dos llamadas recursivas pueden realizarse en paralelo entre sí. El algoritmo paramétrico resultante es más lento en el peor de los casos que un algoritmo basado en la red de ordenamiento AKS. Sin embargo, van Oostrum y Veltkamp sostienen que si se guardan los resultados de los algoritmos de decisión anteriores (de modo que solo las comparaciones no resueltas por estos resultados conduzcan a llamadas adicionales al algoritmo de decisión) y los valores de comparación probados por el algoritmo de prueba simulado se distribuyen de manera suficientemente uniforme, entonces, a medida que el algoritmo avanza, el número de comparaciones no resueltas generadas en cada paso de tiempo será pequeño. Basándose en este análisis heurístico y en resultados experimentales con una implementación del algoritmo, sostienen que un algoritmo de búsqueda paramétrica basado en quicksort será más práctico de lo que sugeriría su análisis del peor de los casos.

Ordenación desincronizada

Cole (1987) optimizó aún más la técnica de búsqueda paramétrica para casos (como el ejemplo) en los que el algoritmo de prueba es un algoritmo de ordenamiento por comparación. Para la red de ordenamiento AKS y algunos otros algoritmos de ordenamiento que se pueden utilizar en su lugar, Cole observa que no es necesario mantener los procesadores simulados sincronizados entre sí: en cambio, se puede permitir que algunos de ellos avancen más a través del algoritmo de ordenamiento mientras que otros esperan a que se determinen los resultados de sus comparaciones. Basándose en este principio, Cole modifica la simulación del algoritmo de ordenamiento, de modo que mantenga una colección de comparaciones simuladas no resueltas que pueden no provenir todas del mismo paso de tiempo paralelo del algoritmo de prueba. Al igual que en la versión paralela sincronizada de la búsqueda paramétrica, es posible resolver la mitad de estas comparaciones encontrando el valor de comparación mediano y llamando al algoritmo de decisión sobre este valor. Luego, en lugar de repetir este procedimiento de reducción a la mitad hasta que la colección de comparaciones no resueltas se vacíe, Cole permite que los procesadores que estaban esperando las comparaciones resueltas avancen a través de la simulación hasta que lleguen a otra comparación que debe resolverse. Usando este método, Cole demuestra que un algoritmo de búsqueda paramétrica en el que el algoritmo de prueba está ordenando puede completarse usando solo un número logarítmico de llamadas al algoritmo de decisión, en lugar de las llamadas hechas por la versión original de búsqueda paramétrica de Megiddo. En lugar de usar la red de ordenamiento AKS, también es posible combinar esta técnica con un algoritmo de ordenamiento por fusión paralela de Cole (1988), lo que resulta en límites de tiempo con factores constantes más pequeños que, sin embargo, todavía no son lo suficientemente pequeños como para ser prácticos. Se puede obtener una aceleración similar para cualquier problema que pueda calcularse en una red de computación distribuida de grado acotado (como lo es la red de ordenamiento AKS), ya sea mediante la técnica de Cole o mediante una técnica relacionada de simulación de múltiples rutas de computación (Fernández-Baca 2001).

Goodrich y Pszona (2013) combinan la mejora teórica de Cole con las aceleraciones prácticas de van Oostrum y Veltkamp (2002). En lugar de utilizar un ordenamiento rápido paralelo, como hicieron van Oostrum y Veltkamp, ​​utilizan el ordenamiento por cajas, una variante del ordenamiento rápido desarrollada por Reischuk (1985) en la que el paso de partición divide la entrada aleatoriamente en subproblemas más pequeños en lugar de solo dos subproblemas. Al igual que en la técnica de Cole, utilizan una búsqueda paramétrica desincronizada, en la que se permite que cada hilo de ejecución independiente del algoritmo de ordenamiento paralelo simulado avance hasta que necesite determinar el resultado de otra comparación, y en la que el número de comparaciones no resueltas se reduce a la mitad al encontrar el valor de comparación mediano y llamar al algoritmo de decisión con ese valor. Como muestran, el algoritmo de búsqueda paramétrica aleatoria resultante solo realiza un número logarítmico de llamadas al algoritmo de decisión con alta probabilidad, lo que coincide con el análisis teórico de Cole. Una versión ampliada de su artículo incluye resultados experimentales de una implementación del algoritmo, que muestran que el tiempo total de ejecución de este método en varios problemas de optimización geométrica natural es similar al de la mejor implementación de búsqueda paramétrica sincronizada (el método basado en quicksort de van Oostrum y Veltkamp): un poco más rápido en algunos problemas y un poco más lento en otros. Sin embargo, el número de llamadas que realiza al algoritmo de decisión es significativamente menor, por lo que este método obtendría mayores beneficios en aplicaciones de búsqueda paramétrica donde el algoritmo de decisión es más lento.

En el problema de ejemplo de hallar el tiempo medio de paso de un punto, tanto el algoritmo de Cole como el de Goodrich y Pszona obtienen el tiempo de recorrido . En el caso de Goodrich y Pszona, el algoritmo es aleatorio y obtiene este tiempo límite con alta probabilidad.

Comparación con la búsqueda binaria y la búsqueda aleatoria

El método de bisección (búsqueda binaria) también se puede utilizar para transformar la decisión en optimización. En este método, se mantiene un intervalo de números, que se sabe que contiene el valor de la solución óptima, y ​​se reduce repetidamente el intervalo llamando al algoritmo de decisión sobre su valor mediano y manteniendo solo la mitad del intervalo por encima o por debajo de la mediana, según el resultado de la llamada. Aunque este método solo puede encontrar una aproximación numérica al valor de la solución óptima, lo hace en un número de llamadas al algoritmo de decisión proporcional al número de bits de precisión de exactitud para esta aproximación, lo que da como resultado algoritmos débilmente polinomiales .

En cambio, cuando es aplicable, la búsqueda paramétrica encuentra algoritmos fuertemente polinómicos, cuyo tiempo de ejecución es una función únicamente del tamaño de la entrada y es independiente de la precisión numérica. Sin embargo, la búsqueda paramétrica conduce a un aumento en la complejidad temporal (en comparación con el algoritmo de decisión) que puede ser mayor que la logarítmica. Debido a que son fuertemente polinómicos en lugar de débilmente polinómicos, los algoritmos basados ​​en la búsqueda paramétrica son más satisfactorios desde un punto de vista teórico. En la práctica, la búsqueda binaria es rápida y a menudo mucho más simple de implementar, por lo que se necesitan esfuerzos de ingeniería de algoritmos para hacer que la búsqueda paramétrica sea práctica. No obstante, van Oostrum y Veltkamp (2002) escriben que "si bien un enfoque de búsqueda binaria simple a menudo se recomienda como un reemplazo práctico para la búsqueda paramétrica, nuestro algoritmo [de búsqueda paramétrica] lo supera" en las comparaciones experimentales que realizaron.

Cuando solo se trata del rendimiento esperado, se puede utilizar una técnica de optimización aleatoria (Chan 1998) en lugar de la búsqueda paramétrica. Este método solo implica un aumento constante de la complejidad temporal y, al mismo tiempo, genera un algoritmo fuertemente polinomial.

Aplicaciones

El estimador de Theil-Sen comparado con la regresión lineal simple

La búsqueda paramétrica se ha aplicado en el desarrollo de algoritmos eficientes para problemas de optimización, particularmente en geometría computacional (Agarwal, Sharir y Toledo 1994). Entre ellos se incluyen los siguientes:

Referencias