Cómo reorganizar elementos en una matriz bidimensional dada de enteros positivos para satisfacer cada suma de filas y columnas

Este es un uso bastante directo de la programación lineal. Podría implementar un programa en PuLP, por ejemplo.

Las variables son binarias, y algo así como [math] X_ {a, b, c} [/ math], que significa “poner el valor [math] y_c [/ math] en la posición (a, b) en la matriz”. [math] y [/ math], por supuesto, es la lista de elementos que se pueden poner en la matriz.

Las restricciones son de la forma [math] \ sum_ {i = 0} ^ n \ sum_ {j = 0} ^ {n ^ 2} X_ {i, b, j} y_j = colsum_b [/ math] y de manera similar para el filas para asegurarse de que se alcanzan las sumas, así como [matemáticas] \ sum_ {i = 0} ^ n X_ {a, b, i} = 1 [/ matemáticas], para cada posición a, b para asegurarse de que cada spot en la matriz tiene exactamente un valor en ella.

La función objetivo puede ser simplemente 0, ya que cualquier solución que cumpla con las restricciones está bien.

En teoría, el tiempo de ejecución podría ser exponencial, y es posible que exista una solución de tiempo polinomial garantizado que no estoy viendo, pero esto se ejecutaría muy rápidamente en la práctica y sería muy fácil de implementar, por lo que es lo suficientemente bueno.

More Interesting

¿Cuáles son las preguntas que se hacen en una TI (entrevista técnica) y una PI (entrevista personal) en el sistema de reclutamiento de Dell?

¿Cómo podemos encontrar el número de subcadenas distintas en una cadena que son palíndromos en O (N) u O (N log N)?

¿Qué es una biblioteca de entrada / salida?

¿Cuáles son algunas de las preguntas técnicas más falsas que le han hecho en una entrevista de desarrollador?

¿Es mejor intentar oportunidades en el sitio en una empresa basada en servicios o probar una buena empresa basada en productos como 'Thought Works', donde obtendré un buen trabajo y un buen salario?

Programación dinámica (DP): dos jugadores juegan el siguiente juego: eligen un número aleatorio N (menos de 2 mil millones) y luego, a partir de 1, se turnan para multiplicar el número del turno anterior con 2 o 9 (su elección). Quien llegue a N primero gana. ¿Determinar ganador del juego de números 2/9?

¿Cuáles son algunas de las mejores preguntas que generalmente se hacen en una entrevista IIT?

He estado codificando durante 6 meses y siento que codifico muy lentamente en comparación con otras personas que he visto. ¿Es este un problema muy importante?

¿Cuál fue su peor experiencia en entrevistas de ingeniería de software (como candidato) y qué la hizo tan mala?

Al responder una pregunta en una entrevista de programación, ¿es mejor comenzar siempre con enfoques básicos antes de discutir los más complejos?

¿Deberían todos los candidatos, por defecto, pasar al menos un pequeño bucle en el proceso de entrevista en las empresas tecnológicas?

¿Qué es una pregunta de entrevista Java?

¿Puedo considerarme un buen desarrollador si soy malo resolviendo tareas algorítmicas en las entrevistas?

Cómo codificar un árbol en un formato de cadena de modo que el árbol pueda reconstruirse a partir de la codificación de la cadena

¿Es realmente importante el análisis de algoritmos para codificar entrevistas cuando solo puede descubrir complejidades de casos generales (como nlog (n), etc.)?