stringtranslate.com

Partición de números multidireccional

En informática , la partición de números multidireccional es el problema de particionar un multiconjunto de números en un número fijo de subconjuntos, de modo que las sumas de los subconjuntos sean lo más similares posible. Fue presentado por primera vez por Ronald Graham en 1969 en el contexto del problema de programación de máquinas idénticas . [1] : sec.5  El problema está parametrizado por un entero positivo k , y se denomina partición de números de k vías . [2] La entrada al problema es un multiconjunto S de números (normalmente enteros), cuya suma es k*T .

El problema de decisión asociado consiste en decidir si S se puede dividir en k subconjuntos de modo que la suma de cada subconjunto sea exactamente T. También existe un problema de optimización : encontrar una partición de S en k subconjuntos, de modo que las k sumas sean "lo más cercanas posible". El objetivo exacto de optimización se puede definir de varias maneras:

Estas tres funciones objetivo son equivalentes cuando k = 2, pero son todas diferentes cuando k ≥3. [6] [7]

Todos estos problemas son NP-hard , [8] pero hay varios algoritmos que los resuelven eficientemente en muchos casos.

Algunos problemas estrechamente relacionados son:

Algoritmos de aproximación

Existen diversos algoritmos que obtienen una aproximación garantizada de la solución óptima en tiempo polinómico. Existen distintos algoritmos de aproximación para distintos objetivos.

Minimizar la suma más grande

En este contexto, la razón de aproximación es la suma más grande de la solución que devuelve el algoritmo, dividida por la suma más grande de la solución óptima (la razón es mayor que 1). La mayoría de los algoritmos que se describen a continuación se desarrollaron para la programación de máquinas idénticas .

Se han desarrollado varios esquemas de aproximación en tiempo polinomial (PTAS):

Maximizar la suma más pequeña

La razón de aproximación en este contexto es la suma más pequeña en la solución devuelta por el algoritmo, dividida por la suma más pequeña en la solución óptima (la razón es menor que 1).

Maximizar la suma de productos

Jin [13] estudia un problema en el que el objetivo es maximizar la suma, sobre cada conjunto i en 1,..., k , del producto de los números del conjunto i . En una variante más general, cada conjunto i puede tener un peso w i y el objetivo es maximizar la suma ponderada de los productos. Este problema tiene una solución exacta que se ejecuta en el tiempo O( n 2 ).

Un PTAS para funciones objetivas generales

Sea C i (para i entre 1 y k ) la suma del subconjunto i en una partición dada. En lugar de minimizar la función objetivo max( C i ), se puede minimizar la función objetivo max( f ( C i )), donde f es cualquier función fija. De manera similar, se puede minimizar la función objetivo sum( f ( C i )), o maximizar min(f( C i )), o maximizar sum( f ( C i )). Alon, Azar, Woeginger y Yadid [14] presentaron PTAS-s generales (generalizando los PTAS-s de Sanhi, Hochbaum y Shmoys, y Woeginger) para estos cuatro problemas. Su algoritmo funciona para cualquier f que satisfaga las dos condiciones siguientes:

  1. Una condición de continuidad fuerte llamada Condición F* : para todo ε>0 existe δ>0 tal que, si | y - x |<δ x , entonces |f( y )-f( x )|<ε f ( x ).
  2. Convexidad (para los problemas de minimización) o concavidad (para los problemas de maximización).

El tiempo de ejecución de sus PTAS es lineal en n (la cantidad de entradas), pero exponencial en la precisión de aproximación. El PTAS para minimizar suma( f ( C i )) se basa en algunas observaciones combinatorias:

  1. Sea L  := la suma promedio en un único subconjunto (1/ k la suma de todas las entradas). Si alguna entrada x es al menos L , entonces hay una partición óptima en la que una parte contiene solo x . Esto se deduce de la convexidad de f . Por lo tanto, la entrada puede preprocesarse asignando cada una de esas entradas a un único subconjunto. Después de este preprocesamiento, se puede suponer que todas las entradas son menores que L .
  2. Existe una partición óptima en la que las sumas de todos los subconjuntos están estrictamente entre L /2 y 2L ( L / 2 < C i < 2L para todo i en 1,..., k ). En particular, la partición que minimiza la suma de cuadrados C i 2 , entre todas las particiones óptimas, satisface estas desigualdades.

El PTAS utiliza una técnica de redondeo de entrada . Dada la secuencia de entrada S = ( v 1 ,..., v n ) y un entero positivo d , la secuencia redondeada S # ( d ) se define de la siguiente manera:

En S # ( d ), todas las entradas son múltiplos enteros de L / d 2 . Además, las dos observaciones anteriores también son válidas para S # ( d ):

  1. Sea L # la suma promedio en un único subconjunto (1/ k la suma de todas las entradas en S # ( d )). Por construcción, L # es al menos L . Dado que L en sí es un múltiplo entero de L / d 2 , el redondeo de las entradas menores que L no puede hacerlas mayores que L . Por lo tanto, todas las entradas en S # ( d ) son menores que L , y por lo tanto menores que L # .
  2. Existe una partición óptima de S # ( d ) en la que todas las sumas de los subconjuntos están estrictamente entre L # /2 y 2L # . Por lo tanto, todos los subconjuntos contienen como máximo 2d elementos (ya que todas las entradas en S # ( d ) son al menos L / d ).

Con base en estas observaciones, todas las entradas en S # ( d ) son de la forma hL / d 2 , donde h es un entero en el rango . Por lo tanto, la entrada puede representarse como un vector entero , donde es el número de hL / d 2 entradas en S # ( d ). Además, cada subconjunto puede representarse como un vector entero , donde es el número de hL / d 2 entradas en el subconjunto. La suma del subconjunto es entonces . Denotemos por , el conjunto de vectores con . Dado que la suma de elementos en tal vector es como máximo 2 d , el número total de estos elementos es menor que , por lo que .

Hay dos formas diferentes de encontrar una solución óptima para S # ( d ). Una forma utiliza programación dinámica: su tiempo de ejecución es un polinomio cuyo exponente depende de d . La otra forma utiliza el algoritmo de Lenstra para programación lineal entera.

Solución de programación dinámica

Definir como el valor óptimo (mínimo) de la función objetivo suma( f ( C i )), cuando el vector de entrada es y debe ser dividido en k subconjuntos, entre todas las particiones en las que todas las sumas de los subconjuntos están estrictamente entre L # /2 y 2 L # .

Se puede resolver mediante la siguiente relación de recurrencia :

Para cada k y n , la relación de recurrencia requiere verificar como máximo vectores. El número total de vectores n a verificar es como máximo , donde n es el número original de entradas. Por lo tanto, el tiempo de ejecución del algoritmo de programación dinámica es . Es lineal en n para cualquier d fijo .

Solución de programación lineal entera

Para cada vector t en T , introduzca una variable x t que denote el número de subconjuntos con esta configuración. La minimización de suma( f ( C i )) se puede lograr resolviendo el siguiente ILP:

El número de variables es como máximo , y el número de ecuaciones es - ambas son constantes independientes de n , k . Por lo tanto, se puede utilizar el algoritmo de Lenstra . Su tiempo de ejecución es exponencial en la dimensión ( ), pero polinomial en la representación binaria de los coeficientes, que están en O(log( n )). La construcción del ILP en sí lleva un tiempo O( n ).

Convertir la solución de la instancia redondeada a la original

Los siguientes lemas relacionan las particiones de la instancia redondeada S # ( d ) y la instancia original S .

Dada una precisión de aproximación deseada ε>0, sea δ>0 la constante correspondiente a ε/3, cuya existencia está garantizada por la condición F*. Sea . Es posible demostrar que la partición convertida de S tiene un costo total de como máximo , por lo que la razón de aproximación es 1+ε.

Inexistencia de PTAS para algunas funciones objetivas

En contraste con el resultado anterior, si tomamos f( x ) = 2 x , o f( x )=( x -1) 2 , entonces no existe PTAS para minimizar suma( f ( C i )) a menos que P=NP . [14] : Sec.4  Nótese que estas f( x ) son convexas, pero no satisfacen la condición F* anterior. La prueba es por reducción del problema de partición .

Algoritmos exactos

Existen algoritmos exactos que siempre encuentran la partición óptima. Dado que el problema es NP-hard, dichos algoritmos pueden requerir un tiempo exponencial en general, pero pueden ser utilizables en la práctica en ciertos casos.

Reducción al embalaje en contenedores

El problema del empaquetamiento de contenedores tiene muchos solucionadores rápidos. Se puede utilizar un solucionador BP para encontrar una partición numérica óptima. [25] La idea es utilizar la búsqueda binaria para encontrar el makespan óptimo. Para inicializar la búsqueda binaria, necesitamos un límite inferior y un límite superior:

Dado un límite inferior y uno superior, ejecute el solucionador BP con tamaño de bin medio := (inferior+superior)/2.

Variantes

En el problema de partición de números balanceados , existen restricciones en la cantidad de elementos que se pueden asignar a cada subconjunto (estas se denominan restricciones de cardinalidad ).

Otra variante es la partición de números multidimensionales . [26]

Aplicaciones

Una aplicación del problema de la partición es la manipulación de elecciones . Supongamos que hay tres candidatos (A, B y C). Se debe elegir un único candidato utilizando la regla de votación con veto, es decir, cada votante veta a un único candidato y gana el candidato con menos vetos. Si una coalición quiere asegurarse de que C sea elegido, debe repartir sus vetos entre A y B de modo de maximizar el menor número de vetos que cada uno de ellos obtenga. Si los votos están ponderados, entonces el problema se puede reducir al problema de la partición y, por lo tanto, se puede resolver de manera eficiente utilizando CKK. Para k = 2, lo mismo es cierto para cualquier otra regla de votación que se base en la puntuación. Sin embargo, para k > 2 y otras reglas de votación, se requieren otras técnicas. [3]

Implementaciones

Referencias

  1. ^ ab Graham, Ron L. (1969-03-01). "Límites en anomalías de tiempo de multiprocesamiento". Revista SIAM de Matemáticas Aplicadas . 17 (2): 416–429. doi :10.1137/0117039. ISSN  0036-1399.
  2. ^ ab Mertens, Stephan (2006), "El problema más fácil y difícil: la partición de números", en Allon Percus; Gabriel Istrate; Cristopher Moore (eds.), Complejidad computacional y física estadística , Oxford University Press US, pág. 125, arXiv : cond-mat/0310317 , Bibcode :2003cond.mat.10317M, ISBN 978-0-19-517737-4
  3. ^ ab Walsh, Toby (11 de julio de 2009). "¿Dónde están los problemas de manipulación realmente difíciles? La transición de fase en la manipulación de la regla de veto" (PDF) . Escrito en Pasadena, California, EE. UU. Actas de la 21.ª Conferencia Conjunta Internacional sobre Inteligencia Artificial . San Francisco, California, EE. UU.: Morgan Kaufmann Publishers Inc., págs. 324–329. Archivado (PDF) desde el original el 10 de julio de 2020. Consultado el 5 de octubre de 2021 .
  4. ^ Friesen, DK; Deuermeyer, BL (1981-02-01). "Análisis de soluciones voraces para un problema de secuenciación de piezas de repuesto". Matemáticas de la investigación de operaciones . 6 (1): 74–87. doi :10.1287/moor.6.1.74. ISSN  0364-765X.
  5. ^ Deuermeyer, Bryan L.; Friesen, Donald K.; Langston, Michael A. (1 de junio de 1982). "Programación para maximizar el tiempo mínimo de finalización del procesador en un sistema multiprocesador". Revista SIAM sobre métodos algebraicos y discretos . 3 (2): 190–196. doi :10.1137/0603019. ISSN  0196-5212.
  6. ^ Korf, Richard Earl (25 de agosto de 2010). "Funciones objetivas para particionamiento de números multidireccional". Tercer simposio anual sobre búsqueda combinatoria . 1 : 71–72. doi : 10.1609/socs.v1i1.18172 . S2CID  45875088.
  7. ^ Walter, Rico (1 de enero de 2013). "Comparación de los tiempos mínimos de finalización de dos heurísticas de planificación más largas". Revista centroeuropea de investigación de operaciones . 21 (1): 125–139. doi :10.1007/s10100-011-0217-4. ISSN  1613-9178. S2CID  17222989.
  8. ^ Garey, Michael R.; Johnson, David S. (1979). Computadoras e intratabilidad: una guía para la teoría de la NP-completitud . WH Freeman and Company. pág. 238. ISBN 978-0716710448.
  9. ^ ab Hochbaum, Dorit S.; Shmoys, David B. (1987-01-01). "Uso de algoritmos de aproximación dual para problemas de planificación: resultados teóricos y prácticos". Revista de la ACM . 34 (1): 144–162. doi : 10.1145/7531.7535 . ISSN  0004-5411. S2CID  9739129.
  10. ^ ab Sahni, Sartaj K. (1 de enero de 1976). "Algoritmos para la programación de tareas independientes". Revista de la ACM . 23 (1): 116–127. doi : 10.1145/321921.321934 . ISSN  0004-5411. S2CID  10956951.
  11. ^ ab Woeginger, Gerhard J. (1997-05-01). "Un esquema de aproximación de tiempo polinomial para maximizar el tiempo mínimo de finalización de la máquina". Operations Research Letters . 20 (4): 149–154. doi :10.1016/S0167-6377(96)00055-7. ISSN  0167-6377.
  12. ^ Csirik, János; Kellerer, Hans; Woeginger, Gerhard (1 de junio de 1992). "El límite LPT exacto para maximizar el tiempo mínimo de finalización". Operations Research Letters . 11 (5): 281–287. doi :10.1016/0167-6377(92)90004-M. ISSN  0167-6377.
  13. ^ Jin, Kai (2017). "Particionamiento óptimo que maximiza la suma ponderada de productos". En Xiao, Mingyu; Rosamond, Frances (eds.). Frontiers in Algorithmics . Apuntes de clase en informática. Vol. 10336. Cham: Springer International Publishing. págs. 127–138. doi :10.1007/978-3-319-59605-1_12. ISBN 978-3-319-59605-1.
  14. ^ ab Alon, Noga; Azar, Yossi; Woeginger, Gerhard J.; Yadid, Tal (1998). "Esquemas de aproximación para la planificación en máquinas paralelas". Journal of Scheduling . 1 (1): 55–66. doi :10.1002/(SICI)1099-1425(199806)1:1<55::AID-JOS2>3.0.CO;2-J. ISSN  1099-1425.
  15. ^ ab Korf, Richard E. (2009). Particionado de números multidireccional (PDF) . IJCAI .
  16. ^ Korf, Richard E. (20 de agosto de 1995). "De soluciones aproximadas a óptimas: un estudio de caso de partición de números". Actas de la 14.ª Conferencia conjunta internacional sobre inteligencia artificial, volumen 1. IJCAI'95. Montreal, Quebec, Canadá: Morgan Kaufmann Publishers Inc.: 266–272. ISBN 978-1-55860-363-9.
  17. ^ Korf, Richard E. (1998-12-01). "Un algoritmo completo en cualquier momento para la partición de números". Inteligencia artificial . 106 (2): 181–203. doi : 10.1016/S0004-3702(98)00086-1 . ISSN  0004-3702.
  18. ^ Schreiber, Ethan L.; Korf, Richard E.; Moffitt, Michael D. (25 de julio de 2018). "Particionamiento óptimo de números multidireccionales". Revista de la ACM . 65 (4): 24:1–24:61. doi : 10.1145/3184400 . ISSN  0004-5411. S2CID  63854223.
  19. ^ Korf, Richard E. (16 de julio de 2011). "Un algoritmo híbrido recursivo de partición de números multidireccional". Actas de la vigésimo segunda conferencia conjunta internacional sobre inteligencia artificial - Volumen uno . IJCAI'11. Barcelona, ​​Cataluña, España: AAAI Press: 591–596. ISBN 978-1-57735-513-7.
  20. ^ Schreiber, Ethan L.; Korf, Richard E. (3 de agosto de 2013). "Completado de bin mejorado para empaquetamiento de bin óptimo y partición de números" (PDF) . Actas de la vigésimo tercera conferencia conjunta internacional sobre inteligencia artificial . IJCAI '13. Pekín, China: AAAI Press: 651–658. ISBN 978-1-57735-633-2.
  21. ^ Moffitt, Michael D. (3 de agosto de 2013). "Estrategias de búsqueda para la partición óptima de números multidireccionales" (PDF) . Actas de la vigésimo tercera conferencia conjunta internacional sobre inteligencia artificial . IJCAI '13. Pekín, China: AAAI Press: 623–629. ISBN 978-1-57735-633-2.
  22. ^ Korf, Richard; Schreiber, Ethan (2 de junio de 2013). "Programación óptima de un pequeño número de máquinas paralelas idénticas". Actas de la Conferencia internacional sobre planificación y programación automatizadas . 23 : 144–152. doi : 10.1609/icaps.v23i1.13544 . ISSN  2334-0843. S2CID  12458816.
  23. ^ Schreiber, Ethan L.; Korf, Richard E. (27 de julio de 2014). "Debilitamiento iterativo en caché para particionamiento óptimo de números multidireccionales". Actas de la Conferencia AAAI sobre Inteligencia Artificial . AAAI'14. 28 . Ciudad de Quebec, Quebec, Canadá: AAAI Press: 2738–2744. doi : 10.1609/aaai.v28i1.9122 . S2CID  8594071.
  24. ^ Richard E. Korf, Ethan L. Schreiber y Michael D. Moffitt (2014). "Particionamiento secuencial óptimo de números multidireccionales" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  25. ^ Schreiber, Ethan L.; Korf, Richard E. (3 de agosto de 2013). "Completado de bin mejorado para empaquetamiento de bin óptimo y partición de números". Actas de la vigésimo tercera conferencia conjunta internacional sobre inteligencia artificial . IJCAI '13. Pekín, China: AAAI Press: 651–658. ISBN 978-1-57735-633-2.
  26. ^ Pop, Petrică C.; Matei, Oliviu (1 de noviembre de 2013). "Un enfoque de algoritmo memético para resolver el problema de partición de números multidimensionales y multidireccionales". Modelado matemático aplicado . 37 (22): 9191–9202. doi : 10.1016/j.apm.2013.03.075 . ISSN  0307-904X.