Parece que usted piensa que $\hat{X}$ debe ser un explícito función de $X$ , digamos que $\hat{X} = g(X)$ para alguna función numérica $g(\cdot)$ . En ese caso, efectivamente, tiene más sentido optimizar sobre $g(\cdot)$ ya que la distribución $p(\hat{x}\mid x)$ es, trivialmente, igual a $\delta(\hat{x}-g(x))$ . Sin embargo, hay que tener en cuenta que la optimización sobre $p(\hat{x}|x)$ también cubre el caso anterior, es decir, la definición es más general.
Ahora, lo que debes entender es que el codificador óptimo no es necesariamente de la forma $\hat{X} = g(X)$ como se ha comentado anteriormente. En el caso general, el codificador óptimo funciona como sigue:
Mapear (codificar) cada "símbolo" $X$ a un "símbolo" $\hat{X}$ que es obtenido aleatoriamente de una distribución $p(\hat{x}\mid x)$ .
Obsérvese que esto no significa que el codificador sea aleatorio en el sentido de que, para un mismo $X$ , genera un $\hat{X}$ ¡! Esto significa que para el mismo $X$ siempre genera el mismo $\hat{X}$ (conocido tanto por el codificador como por el decodificador), sin embargo, el valor de $\hat{X}$ que se utiliza se obtiene generando (offline) una única realización de una variable aleatoria.
Véase el ejemplo de la "fuente gaussiana" en los "Elementos" como ejemplo de una fuente en la que el enfoque anterior es realmente óptimo.
Este procedimiento es exactamente paralelo al escenario de la capacidad de transmisión, en el que el conjunto de palabras clave ("libro de códigos") es fijo durante la transmisión, sin embargo, los valores de las palabras clave se seleccionan fuera de línea como una realización (única) de una variable aleatoria.