¿Por qué un algoritmo evolutivo es un método inapropiado para usar cuando se busca una clave para descifrar un mensaje codificado cuando solo hay una respuesta correcta?

Los algoritmos evolutivos o genéticos son un enfoque muy heurístico, por lo que son más un último recurso o algo con lo que jugar en problemas de optimización.

Solo hay una clave correcta, por lo que la evolución no es realmente posible. Para un enfoque genético / evolutivo necesitaría una medida de mejora.

Tendría que poder seleccionar las mejores respuestas, pero en un cifrado adecuado solo hay la respuesta correcta y todas las respuestas incorrectas, por lo que usar algoritmos genéticos sería un enfoque de tipo de fuerza bruta menos eficiente.

Un buen ejemplo para un problema en el que los algoritmos genéticos son buenos sería el diseño de turbinas eólicas. Puede crear formas aleatorias y medir su eficiencia como una turbina eólica mediante simulación. Seleccionas las mejores y las combinas / les agregas algo de aleatoriedad para crear la próxima generación y repetir el proceso.

Como la eficiencia se puede medir y más es mejor, podemos aplicar la “evolución” al problema.

Porque con GA solo exploras una fracción del espacio de búsqueda completo y puede que no haya convergencia en la dirección correcta.

Incluso si espera lo suficiente, para cubrir todo el espacio de búsqueda, sería una forma bastante estúpida. Esto se debe a que hay un elemento de aleatoriedad en las rutinas de GA para hacer mutaciones, decidir dónde aplicar el cruce o cómo generar nuevos individuos.

Puede comparar esto con ordenar una matriz eligiendo aleatoriamente dos elementos para comparar y cambiarlos si están en el orden incorrecto. No hay garantía de que esto se clasifique en un tiempo finito. Pero al menos aquí estaríamos convergiendo a una matriz cada vez más ordenada.

Una forma más efectiva que buscar en todo el espacio de búsqueda (en su ejemplo: de posibles claves) sería buscarlo sistemáticamente, pero incluso eso puede llevar mucho tiempo.