Las dos respuestas que ya están aquí son las respuestas estándar al problema de Partición. Ya sea
* Enumere todos los subconjuntos posibles buscando uno con un total igual a la mitad de la suma total (en tiempo exponencial), o
* Use la programación dinámica para encontrar si algún subconjunto tiene un total igual a la mitad de la suma total (en tiempo psuedo-polinomial)
Pero, el problema que dio no es exactamente el problema de la partición, porque tiene una restricción adicional, que el tamaño del subconjunto es exactamente igual a la mitad de la matriz original. ¿Esta restricción facilita el problema?
Mostraré que la respuesta es “no”, al menos en el comportamiento asintótico, aunque se pueden hacer algunas optimizaciones en cualquier enfoque.
- ¿Debería seleccionar siempre el algoritmo con el menor orden de complejidad?
- ¿Cuáles son los mejores cursos en línea para estructuras de datos y algoritmos (deben enfatizar más en escribir código)?
- ¿Cuándo Quicksort tiene su peor complejidad de tiempo de caso?
- ¿Cuál es la mejor manera de implementar un iterador para un BST?
- ¿Cuál es el algoritmo utilizado por Roposo?
Suponga que podría resolver eficientemente el problema de partición restringida que solo permite particiones de tamaño [matemático] N / 2 [/ matemático]. Llame a este algoritmo R. Entonces podría tomar un problema general de partición con la entrada [math] x [/ math] y:
Ejecute R [x] (o R [x, 0] si la longitud de x es impar)
entonces R [x, 0, 0]
entonces R [x, 0, 0, 0, 0]
…
entonces R [x con N ceros añadidos]
Si alguno de estos tiene éxito, entonces he encontrado una partición para [math] x [/ math] eliminando los ceros en exceso de las particiones en las que aparecieron. Si R se ejecuta en tiempo polinómico, entonces ejecuta N / 2 copias en tamaños de N a 2N también lleva tiempo polinómico, por lo que habría resuelto el problema de partición en tiempo polinómico. Pero el problema de la partición es NP-completo.
Entonces, a menos que P = NP, no existe un algoritmo de tiempo polinómico para la versión restringida del problema que usted proporcionó.