iinaki / tda-grupito

0 stars 0 forks source link

Corrección TP3 #3

Closed fdelu closed 3 months ago

fdelu commented 4 months ago

Hola! Les dejo las correcciones

3. El Problema de la Tribu del Agua, es NP-Completo?

Si sucede que K es mucho menor que N nos quedaría

No necesariamente. Se podría asumir que $K \leq N$ ya que sino quedarían grupos vacíos que no tiene mucho sentido. Con que se cumpla esa condición ya es $O(N)$

Para este punto es preferible que directamente implementen un (pseudo)código que haga la verificación y listo. De todas formas su explicación fue bastante detallada así que se las acepto. Para los examenes tengan esto en cuenta.

3.2. Demostración de que el Problema de la Tribu del Agua es NP-Completo

Es verdad que para cualquier instancia del problema de la bolsa que tiene solución el problema de la tribu del agua también tiene solución:

$\sum_{x_j \in S_i} x_j \leq W$ $\forall i$

$\Rightarrow \left( \sum_{x_j \in S_i} x_j \right)^2 \leq W^2$ $\forall i$

$\Rightarrow \sum{i=1}^k \left( \sum{x_j \in S_i} x_j \right)^2 \leq k W^2 = B$

Sin embargo, en el sentido contrario, no funciona, va contraejemplo:

Tengo el problema de las bolsas con elementos $[40, 32, 22]$, $k=2$ y capacidad de la bolsa $W=48$. Fijense que como $k=2$ tengo que poner 2 elementos en una misma bolsa, pero si sumo los 2 más chicos, ya $32+22=54 > 48$ por lo que no hay solución.

Sin embargo, con el problema de los maestros, $B = k \cdot W^2 = 2 \cdot 48^2 = 4608$ tengo la solución $[40]$, $[32, 22]$, que da una suma de $40^2 + (32+22)^2 = 1600 + 2916 = 4516 < 4608$. Es decir, con este ejemplo, el problema de los maestros tiene solución pero el de las bolsas no, así que la reducción sería inválida.

4. Propuesta de Solución Backtracking

Podas:

En general bastante bien, muy completo el algoritmo.

4.3. Complejidad

No se pedía, pero la dada no es correcta. Sería más bien $O(k^n)$ ($k$ posibilidades para cada maestro). $O(n!)$ es simplemente la cantidad de permutaciones de un conjunto de $n$ elementos y $O(2^n)$ sería si hubiera solo 2 posibilidades para cada maestro (binario).

5. Propuesta de Solución Programación Lineal

Es por esto que la complejidad algorítmica de resolver el Problema de la Tribu del Agua con programación lineal entera es exponencial, $O(2^n)$.

Como dijeron ustedes arriba, hay $n \cdot k$ variables binarias por lo que la complejidad sería $O(2^{nk})$.

5.1. Mediciones de PLE y comparación con Backtracking

en el peor de los casos no llega a una diferencia de 4000 en el coeficiente.

Es preferible que usen un error relativo (es decir el porcentaje de error) más que el absoluto para cuantificarlo en estos casos.

Al gráfico de tiempos le falta la unidad del eje del tiempo. ¿Los limitaron a 10 minutos que cortaron varios en 600?

6.1. Algoritmo

¿Por qué para encontrar el grupo más débil ordenan todo el arreglo? Eso es $O(k \log k)$ cuando recorriendo el arreglo lo hacen en $O(k)$, y si usaran un heap en $O(\log k)$...

6.2. Complejidad

por cada maestro buscamos el grupo de minima suma $O(n.k)$

No, no es esa la complejidad, porque estan ordenando el arreglo en todas las iteraciones. Eso hubiera sido si lo encontraban con una búsqueda lineal.

6.3. Análisis

No me quedó del todo claro el análisis que hicieron con PL, el por qué de cada una de las restricciones que utilizaron.

8. Mediciones temporales

Faltaron mediciones con sets de datos generados por ustedes


Les pido que me hagan una reentrega, corrigiendo más que nada el tema de la reducción (punto 1). Con eso ya los puedo aprobar, pero si quieren corregir más cosas, también lo voy a tener en cuenta. Especialmente el tema de mediciones con sets de datos propios del algoritmo de backtracking y la implementación y complejidad del algoritmo de Pakku.

Para la reducción: asegurense de hacer la demostración en ambos sentidos. Si usan un problema que no se dio en clase ponganme por lo menos en un anexo alguna justificación de por qué ese es NP-Completo también. Les recomiendo que busquen sobre el partition problem.

No cambien el informe. Hagan las correcciones en un anexo.

Cualquier consulta avisenme!

fdelu commented 3 months ago

Hola! Les dejo los comentarios de la reentrega. Les cierro el TP con un 7, cualquier consulta avisenme. Saludos!

Reducción

Ahora si, efectivamente, la reducción es correcta. De todas formas, está incompleta: falta la prueba de las implicancias. En un parcial esto bajaría puntos. Les dejo el ejemplo el resuelto de Martín para que entiendan a lo que me refiero: lo que a ustedes les faltaría sería lo de las secciones 2.2.2 y 2.2.3. En este caso lo que habría que probar es que para cualquier 2-Partition con solución, reducirlo al del TP va a tener solución (2-Partition->TP) y que para cualquier caso reducido del TP con solución, 2-partition tiene solución (TP->2-Partition).

6.1/6.2 Algoritmo y Complejidad del maestro pakku

Hubiera preferido código real antes que pseudocódigo, pero ok

10.0.2. Es NP-Completo

Se puede reducir tanto Partition Problem a Subset Sum, como al rev´es. Empezamos reduciendo Partition Problem a Subset Sum.

A efectos de este trabajo práctico, no sirve de nada la reducción de Partition Problem a Subset Sum. Ya sabemos que Subset Sum es NP-Completo.

Ahora para reducir Subset Sum a Partition Problem

Esta prueba esta incluso mucho mejor que la del Partition Problem al problema del TP, usando las ecuaciones matemáticas. La prueba en sí esta probando solamente que si hay Partition Problem entonces hay Subset Sum, y de nuevo le faltaría sentido de la implicancia (si hay Subset Sum hay Partition Problem).

fdelu commented 3 months ago

@MatiBartellone @iinaki @thiagopservian Aviso, edité el comentario, les cambié la nota (6 -> 7), había leído algo mal