TL/DR
Tengo un universo $U$ de los elementos $u_i$ y una familia $F$ de los subconjuntos de a $U$ (llamar $P_j$ ⊆ $U$).
Dada esta familia de subconjuntos, me gustaría encontrar la sub-familia $C$ ⊆ $F$ de subconjuntos que se puede producir un nuevo subconjunto $P_{new}$ $u_i$ sumando (o restando) como algunos subconjuntos $P_j$ como sea posible.
Que es lo mejor que puedo hacer. Esperemos que un ejemplo más claro:
Ejemplo
Por ejemplo, si empezamos con la siguiente familia de subconjuntos:
$$ \begin{align} F = \{&P_1 = \{a\},\ P_2 = \{b\},\ ...,\ P_{16} = \{p\}, \\ &P_{17} = \{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p\}, \\ &P_{18} = \{a, b, c, d, e\}, \\ &P_{19} = \{g, h, i\} \,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}&\\ \end{align} $$
Cuando se solicita calcular $\{a, b, c, d, e, f, g, h, i\}$, lo más sencillo es calcular:
$$\{a, b, c, d, e, f, g, h, i\} = \{a\} + \{b\} + \{c\} +\ ...\ + \{h\} + \{i\}$$
Esto no es óptimo, aunque (requiere 8 adiciones). Por ejemplo, yo sé que podría producir rápidamente el conjunto si yo en su lugar tomó ventaja de mis previamente calculada conjuntos (usando 2 adiciones):
$$ \begin{align} P_{new} &= \{a, b, c, d, e, f, g, h, i\}\\ &= \{a, b, c, d, e\} + \{f\} + \{g, h, i\} \\ &= P_{18} + P_{6} + P_{19} \\ \mathord{\therefore}\ C ⊆ F &= \{ P_{6}, P_{18}, P_{19} \} \\ \end{align} $$
Ejemplo 2
Lo que es aún más complejo es que (si es posible) yo quiero saber cuando impliquen la sustracción puede ser óptimo:
$$\{e, f, g, h, i\} = \{e\} + \{f\} + \{g, h, i\}$$
Esta es la mejor solución utilizando sólo la suma (2 operaciones), Pero podría haber llegado aún más rápido con 1 resta:
$$\{e, f, g, h, i\} = \{a, b, c, d, e, f, g, h, i\} - \{a, b, c, d\}$$
¿Por qué necesito este
Cada subconjunto $P_j$ tiene un valor de $p_j = f(P_j)$ que puede ser calculada. La función de $f(P_j)$ es aditivo. Por lo $p_{\{1,2\}} = p_{\{1\}} + p_{\{2\}}$
Cuando inicio mi solicitud, yo sólo empieza por calcular el valor de $p_i$ por cada elemento de a $l_i$ por su propia cuenta. Por ejemplo:
$$ \begin{align} P_1 = \{a\} ,&\ \ p_1 = f(P_1) = 5 \\ P_2 = \{b\} ,&\ \ p_2 = f(P_2) = 20 \\ P_3 = \{c\} ,&\ \ p_3 = f(P_3) = 8 \\ ...\ & \end{align} $$
Entonces tengo que comenzar a atender las solicitudes de los diferentes subconjuntos. Por ejemplo:
$$ \begin{align} P_{18} &= \{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p\}\ &f(P_{18}) &= 400 \\ P_{19} &= \{b, c, d\}\ &f(P_{19}) &= 43\\ P_{20} &= \{g, h, i\}\ &f(P_{20}) &= 30 \\ ...& \end{align} $$
Mi objetivo es ser capaz de procesar su solicitud lo más rápido posible. Para principios de peticiones, yo inevitablemente tiene que gastar un montón de tiempo sumando $p_j$ valores. Pero dado que estos valores son aditivos, sé que debe haber maneras más rápidas para procesar las solicitudes por tomar ventaja de los conjuntos para los cuales ya he calculado $p_j$.
Si $P_{21} = \{b, c, d, g, h, i\}$ es requerido, no quiero desperdiciar valiosos recursos de recuperar el 6 valores de $p_{2}$$p_{7}$, y la incorporación de estos valores en 5 las operaciones de larga duración, cuando yo podría haber hecho una sola operación $p_{21} = p_{19}+p_{20}$.
No se establece-teoría?
Este hecho podría ser una mejor opción para el álgebra lineal, si formulada de la siguiente manera:
Si tengo las siguientes ecuaciones y valores:
$$ \begin{align} P_{1} &= a, P_{2} = b,\ ...,\ P_{8} = g &f(P_{1}) &= p_{1},\ ...\\ P_{9} &= a + b + c + d &f(P_{9}) &= p_{9} \\ P_{10} &= d + e + f + g &f(P_{10}) &= p_{10} \\ \end{align} $$
Y quiero calcular
$$ \begin{align} P_{11} &= a + b + c + d + e + f + g &f(P_{11}) ? \\ \end{align} $$
Quiero ser capaz de descubrir que la solución más rápida proviene de
$$ \begin{align} P_{11} &= P_{9} + P_{10} - P_{4} \\ P_{11} &= (a + b + c + d) + (d + e + f + g) - (d) \\ &= (a + b + c + 2d + e + f + g) - (d) \\ &= a + b + c + d + e + f + g\ \checkmark\\ \mathord{\therefore}\ p_{11} &= p_{9} + p_{10} - p_{4} \\ \end{align} $$
Está empezando a parecer sospechosamente a un np problema difícil para mí :( Si nadie puede venir para arriba con una manera elegante de resolver el problema, también me gustaría aceptar una forma más elegante de la formulación del problema (tal vez en términos de un problema bien conocido), o un límite en la complejidad.