[Editar: Yo había publicado originalmente una prueba de que encontrar el mínimo era NP-difícil; en los comentarios más abajo, Brendan McKay señaló cómo convertir eso en una prueba de que encontrar el valor de máximo es NP-difícil, que era la pregunta formulada por el autor original. He editado esto para incluir una respuesta completa a la pregunta original].
Vamos a referirnos a la operación de sustitución de dos valores $b,c$ en un multiconjunto por el valor único $|b-c|$ como una "contracción"; el cartel original pregunta si es posible encontrar una ordenación de contracciones repetidas que maximice el valor final.
En este post, empezamos preguntándonos si podemos encontrar el orden con el mínimo valor posible. En concreto, tratamos de determinar si el valor mínimo es cero o mayor que cero. Demostraremos que decidir esta cuestión es NP-completo. (Tenemos que convertirlo en un problema de decisión ("¿es igual a cero?") en lugar de un problema de minimización ("¿cuál es el valor mínimo?") para expresarlo en términos de NP-completitud). A continuación, mostramos cómo convertir este resultado en una declaración sobre el valor máximo en lugar del mínimo.
Además, al comentario de Johan Wastlund más arriba, una ligera modificación de la construcción da un $O(2^{n-2})$ inferior en el número máximo de valores distintos que se pueden producir (que esbozaré al final).
Determinar si el valor mínimo es cero está claramente en NP-- podemos simplemente (no determinísticamente) adivinar el patrón correcto de pasos para producir cero. Demostrar que es NP-completo requiere un poco más de esfuerzo. Lo demostraremos mediante una reducción a partir del problema de partición .
Tomemos una instancia del problema de partición con entradas $x_1,...,x_n$ . Estamos tratando de encontrar un subconjunto $S\subseteq \{1,...,n\}$ tal que $\sum_{i\in S}x_i=\sum_{i\not\in S}x_i$ .
Establecer $M_1=M_2=2\sum_i x_i$ . Consideremos el multiconjunto $\{M_1,M_2,x_1,...,x_n\}$ . Sea $f(x,y)=|x-y|$ . Puesto que hemos tomado $M_1$ sea tan grande, se deduce que
$$f(\cdots(f(f(M_1,x_{i_1}),x_{i_2}),\cdots),x_{i_k})=M_1-\sum_{j=1}^k x_{i_j}$$
y análogamente para $M_2$ .
Afirmación: si existe un subconjunto $S$ que divide los números enteros $x_1,...,x_n$ entonces el valor mínimo alcanzado por las contracciones repetidas es cero.
Prueba: Supongamos que tal $S$ existe. Entonces podemos aplicar $f$ a $M_1$ y los elementos de $S$ para obtener
$$M_1-\sum_{i\in S}x_i$$
y de forma similar con $M_2$ y el complemento de $S$ para obtener
$$M_1-\sum_{i\not\in S}x_i$$
Como último paso, podemos restarlos y obtener cero. Dado que el valor de salida es no negativo, entonces el valor mínimo es cero.
Afirmación: si una ordenación de contracciones repetidas produce un valor final de cero, entonces podemos producir una partición a partir de esta ordenación en tiempo polinómico.
Prueba: El cálculo del valor final alcanzado por la contracción repetida corresponde a la evaluación de $f$ en un árbol binario con los nodos hoja etiquetados por $x_1,...,x_n$ . Como se ha señalado en los comentarios anteriores, podemos "aplastar" este árbol (en $O(n)$ tiempo) y demostrar que la salida es igual a la suma $\sum_i \pm x_i$ . Si dejamos que $S$ corresponden al $x_i$ con un índice positivo, hemos construido la partición deseada.
Hemos demostrado anteriormente que determinar si el valor más pequeño es cero es NP-completo. Ahora mostramos que esto implica la misma complejidad para el máximo.
En concreto, tome $x_1,...,x_n$ y observe que el valor máximo posible que puede alcanzarse mediante una contracción repetida es $\max_i x_i$ . Ahora nos preguntamos: ¿es el valor final máximo alcanzado por la contracción repetida igual a $\max_i x_i$ ¿o es estrictamente más pequeño?
Demostraremos que decidir esta cuestión es NP-completo. Es claramente en NP, ya que podemos exhibir un ordenamiento de las contracciones que logra el máximo, si tal ordenamiento existe.
Para demostrar que es NP-completo, reduciremos a partir del problema de determinar si existe un ordenamiento de contracciones repetidas que sea igual a cero.
Tomemos el multiconjunto $A=\{x_1,...,x_n\}$ y considerar un nuevo elemento $M=1+\sum_i x_i$ . Sea $B=A\cup \{M\}$ . Tenga en cuenta que $M$ es el máximo único sobre $B$ .
Primero demostramos que si el valor final máximo para la contracción repetida de $B$ es $M$ entonces la contracción repetida mínima de $A$ es 0. Si existe una contracción repetida con suma final $M$ entonces cualquier contracción que implique $M$ debe ser de la forma $f(M,0)$ (de lo contrario, la suma final sería estrictamente inferior a $M$ ) y viceversa. Supongamos que sustituimos $M$ por 0; el mismo patrón de contracciones producirá ahora un valor final de 0. Por lo tanto, hemos producido un patrón de contracciones en $A\cup \{0\}$ que da un valor final de cero.
En la otra dirección, demostramos que si el valor final mínimo para la contracción repetida de $A$ es 0, entonces el valor máximo de $B$ es $M$ . Supongamos que la contracción repetida mínima de $A$ es 0. Consideremos entonces el mismo patrón de contracciones en $B$ lo que nos dejará con $M$ y 0; la última contracción producirá $|M-0|=M$
Por lo tanto, podemos determinar si el valor final mínimo de $A$ (que era arbitraria) es cero si y sólo si podemos determinar si el valor final máximo de $B$ es $M$ .
Por lo tanto, el problema de determinar si el valor final máximo de una contracción repetida es igual al máximo del conjunto original es NP-completo.
Johan Wastlund preguntó, en función de $n$ cuál es el número máximo de valores distintos que se pueden producir aplicando $f$ en todas las combinaciones posibles? Sugirió que podría ser $2^{n-2}$ . La construcción anterior puede modificarse para demostrar que hay al menos esta cantidad de posibilidades.
Sea $x_i=2^i$ para $i=1,...,n-2$ . Sea $M_1=2^{n-1}$ y que $M_2=2^n$ . Desde
$$M_z>\sum_{i=1}^{n-2}$$
(para $z=1,2$ ), seguimos teniendo $$f(\cdots(f(f(M_z,x_{i_1}),x_{i_2}),\cdots),x_{i_k})=M_z-\sum_{j=1}^k x_{i_j}$$
Sea $S$ sea el subconjunto de índices restados de $M_1$ . Entonces podemos construir la suma $$f(M_1-\sum_{i\in S}^k x_{i},M_2-\sum_{i\not\in S}^k x_{i})= M_2-M_1+(\sum_{i\in S}^k x_{i})-(\sum_{i\not\in S}^k x_{i})$$
Esta suma asume un valor distinto para cada subconjunto $S$ de $\{1,...,n-2\}$ por lo que hay al menos $2^{n-2}$ valores distintos.
0 votos
Parece más un problema de optimización (discreta) que un problema de teoría de números
0 votos
^Dirk, a sugerencia tuya he cambiado el título a Problema de optimización.
3 votos
Algunos experimentos sugieren que el número de valores terminales diferentes es, como máximo, de $2^{n-2}$ . ¿Hay alguna manera fácil de ver esto? Claramente es como mucho $2^n$ ya que el valor terminal es una combinación lineal con coeficientes $\pm1$ de los números iniciales.
0 votos
@JohanWästlund: el requisito de que cada diferencia sea positiva elimina algunas posibilidades. Parece que exigir que cada par de entradas en la secuencia tenga el signo correcto da un factor de 4, pero esta no puede ser la explicación completa.
0 votos
Divide por 2 ya que el resultado final es no negativo.
0 votos
La otra limitación es más sutil. Si los dos valores mayores $a_1 \gt a_2$ son mayores que la suma de los otros, y también lo es su diferencia, entonces las dos condiciones sobre los signos es que el signo de $a_1$ debe ser positivo y el signo de $a_2$ debe ser negativo. Tal vez se pueda demostrar que la $2^{n-2}$ se conserva al desplazar los valores estudiando el comportamiento del cruce de muros.
0 votos
Un problema algo similar es el de minimizar $\vert \pm a_1\pm a_2\dots\pm a_n\vert$ . Tengo el vago recuerdo de que esto es duro en general. Esto sugiere que su problema podría no ser fácil tampoco.
0 votos
He añadido este comentario a la propia entrada como el comentario por ir más grande.
0 votos
¿Por qué cerraste la pregunta si aún no tiene respuesta? La respuesta de Bill es muy interesante, pero considera encontrar el mínimo no el máximo. No veo ninguna prueba de que encontrar el máximo sea NP-difícil.
0 votos
Hola Brendan McKay, Muchas gracias por su respuesta. Siento haber aceptado la respuesta antes de tiempo. Tenía el siguiente razonamiento detrás de aceptar la solución que el uso de 1 con la respuesta de Bill Bradley dará la respuesta para la parte máxima también. Mi idea es la siguiente. Sea $a_n$ sea el elemento mayor, entonces prueba todas las combinaciones de $a_n$ con $a_i$ entonces el problema de encontrar el máximo se reduce a encontrar el mínimo de $a_1, a_2, a_{i - 1}, |a_n - a_i|, a_{i + 1}, a_{n - 1}$ por todas las íes. Por lo tanto, esto debería ser NP duro también. Puede que esté haciendo alguna evaluación errónea en esta prueba, por favor corríjanme.
0 votos
Tienes razón y justo iba a publicar esta solución (más o menos) antes de ver tu comentario. Voy a añadir mi versión como un comentario a la respuesta de Bill.