Formulemos el problema como un problema de programación matemática.
Hay 4 tipos de piedras rosa, verde, claro y azul. Vamos a denotarlos por conjunto [math] \ mathcal {P}, \ mathcal {G}, \ mathcal {C}, \ mathcal {B} [/ math]. Para cada elemento en estos conjuntos, supongamos que podemos seleccionarlos o no. Denotemos la elección de la selección de un elemento [math] i [/ math] perteneciente a cada uno de estos conjuntos por –
[matemáticas] s_i ^ p, s_i ^ g, s_i ^ b, s_i ^ b [/ matemáticas]
variables respectivamente.
- ¿Cuál es la diferencia real entre las aperturas f / 1.8 yf / 2.2 en las lentes de la cámara?
- ¿Qué tan difíciles son las funciones de una variable compleja?
- ¿Alguien puede escribir una función Javascript que haga esto: add (1) (2) (8) debería devolver 11, es decir, la suma de los argumentos dados (el número de argumentos puede ser cualquier número natural)?
- Cómo verificar si un BigInteger es un cuadrado perfecto en C #
- ¿Cuál es la mejor manera de dibujar un gráfico de teoría de grafos rápidamente?
Del mismo modo, denotemos la calidad y el precio (o tasa) de estos elementos como:
[matemáticas] q_i ^ p, q_i ^ g, q_i ^ b, q_i ^ b [/ matemáticas]
y
[matemáticas] r_i ^ p, r_i ^ g, r_i ^ b, r_i ^ b [/ matemáticas].
Así que ahora el problema se puede formular de la siguiente manera:
maximizar [matemáticas] \ sum_i s_i ^ p * q_i ^ p + \ sum_j s_j ^ g * q_j ^ g + \ sum_k s_k ^ c * q_k ^ c + \ sum_l s_l ^ b * q_l ^ b [/ math]
sujeto a [matemáticas] \ sum_i s_i ^ p = 3 [/ matemáticas]
[matemáticas] \ sum_j s_j ^ g = 1 [/ matemáticas]
[matemáticas] 2 \ leq \ sum_k s_k ^ c \ leq 3 [/ matemáticas]
[matemáticas] 1 \ leq \ sum_l s_l ^ b \ leq 2 [/ matemáticas]
[matemáticas] \ sum_k s_k ^ c + \ sum_l s_l ^ b = 4 [/ matemáticas]
[matemáticas] \ sum_i s_i ^ p * r_i ^ p + \ sum_j s_j ^ g * r_j ^ g + [/ matemáticas]
[matemáticas] \ sum_k s_k ^ c * r_k ^ c + \ sum_l s_l ^ b * r_l ^ b \ leq 100000 [/ matemáticas]
[matemáticas] s_i ^ p, s_j ^ g, s_k ^ b, s_l ^ b [/ matemáticas] son binarias
Este es un programa lineal entero que es un problema NP-completo. Sin embargo, existen muchos solucionadores comerciales eficientes para resolverlos (por ejemplo, http://www.gurobi.com). No sé exactamente cuánto tiempo llevará resolverlos, pero por mi experiencia supongo que es menos de un minuto.
Además, para acelerar el cálculo, puede eliminar las opciones obvias (por ejemplo, si hay más de 2 £ 50,000 piedras rosadas, puede eliminarlas con seguridad, etc.)
Creo que también puede formularlo como un problema de mochila, pero la piedra final puede ser azul o transparente, lo que no estoy seguro de cómo manejar. El problema de la mochila también es un problema NP-Complete.