Estoy construyendo una expresión lógica a partir de múltiples entradas y combinándolas con un OR, por lo que mi expresión se convierte en algo como a continuación
(1 AND 2 AND 3 AND 4 AND (50 OR 51) AND 7 AND 8) OR (1 AND 2 AND 3 AND 41 AND (50 OR 51) AND 71)Hay muchos elementos repetitivos en él que se pueden combinar para construir la expresión lógica óptima y final como
(1 AND 2 AND 3 AND (50 OR 51) AND ((4 AND 7 AND 8) OR (41 AND 71)))¿Hay alguna manera por la cual esto se puede hacer? Actualmente estoy construyendo esto como una cadena en javascript, pero cualquier algoritmo genérico ayudaría y puedo aplicarlo para recortar mi expresión lógica.
Este es un problema clásico, leahttps://en.wikipedia.org/wiki/Quine%E2%80%93McCluskey_algorithm
Cuidado, la expresión simplificada que diste es incorrecta
Corrección:
(1 && 2 && 3 && (50 || 51) && ((4 && 7 && 8) || (41 && 71)) ) 1, 2 and 3 must always be true 50 or 51 must be true 4 us true (and 41 false) => 7 and 8 must be true 4 is false but 41 is true => 71 must be true 4 and 41 are both true => 71 or (7 and 8) must be trueEspero que te ayude ;)