Dado un conjunto [matemática] S [/ matemática] de [matemática] 2 ^ n [/ matemática] cadenas binarias, [matemática] \ forall [/ matemática] [matemática] s_i \ en S [/ matemática] es de tamaño [matemática ] n [/ math] y asignado a [math] 0 [/ math] o [math] 1 [/ math], ¿podemos sintetizar un oráculo [math] f [/ math] que mapee las cadenas binarias, es decir, [math ] f: S \ rightarrow \ {0,1 \} [/ math]?

Me parece que está expresando el problema de la Síntesis lógica en una terminología ligeramente diferente de la que se usa más comúnmente.

Una asignación del conjunto [math] S [/ math] de cadenas binarias [math] s \ in \ {0,1 \} ^ n [/ math] a [math] \ {0,1 \} [/ math] es, en otras palabras, una tabla de verdad que relaciona todas las combinaciones posibles [matemáticas] 2 ^ n [/ matemáticas] de las variables booleanas [matemáticas] n [/ matemáticas] cada una con un valor de verdad de [matemáticas] 1 [/ matemáticas] o [matemáticas] 0 [/ matemáticas]. El “oráculo” al que se refiere es una función [matemática] f: \ {0,1 \} ^ n \ to \ {0,1 \} [/ matemática] que puede estar compuesta de composiciones de operaciones de álgebra booleana (Y , OR, XOR, etc.). El espacio de tales funciones es enorme, pero probablemente esté interesado (ya que las personas estaban particularmente interesadas en los años cincuenta) en una implementación eficiente de [math] f [/ math]. Esto corresponde al problema de la minimización de circuitos, que tiene como objetivo obtener el circuito lógico más pequeño que produce la tabla de verdad deseada. Inicialmente, esto fue hecho a mano por diseñadores humanos usando Karnaugh Maps, pero la minimización de circuitos rápidamente se hizo posible automatizar (específicamente con la introducción del algoritmo Quine-McCluskey). Hoy en día contamos con herramientas especializadas como Expresso que realizan la minimización de circuitos de manera eficiente y efectiva.