La secuencia de acciones es importante.
Nuestro mundo está enredado en numerosas conexiones invisibles que no sentimos y, a menudo, no entendemos. Y si tomas el paso equivocado, el resultado será ...
¡Inesperado!
Menos. El objetivo no se logrará, y puede haber consecuencias más graves.
Cimentación - paredes - techo.
De lo contrario, la casa no se puede construir, aunque hay opciones . Como resultado, aparecen interesantes propiedades y capacidades del sistema. Un experto puede cambiar la secuencia de acciones, tecnología. Por eso es un experto. Él comprende cómo funciona esta o aquella área de conocimiento. La esencia de las cosas es hasta cierto punto.
Cualquier sistema expresado matemáticamente en términos de un gráfico (incluso con ciclos) o esquema puede enumerarse fácilmente. Un circuito eléctrico o UML, una red neuronal artificial e incluso ... ¡el Universo!
Un gráfico es una secuencia.
Los sistemas generalmente tienen enlaces que llevan una carga funcional. Idealmente, no necesitan combinarse o mezclarse:
- agua fría y caliente: 2 tuberías diferentes o conexiones del subsistema
- cero y fase en electricidad
- ADC, PCINT, INT, PWM (bus de datos) en el microcontrolador.
Anteriormente, usando un ejemplo simple, se mostró cómo las relaciones complejas se expresan en última instancia mediante listas simples. La base funcional ya ha sido definida. Todo se reduce al problema de la mochila combinatoria .
Opciones de conexión para el circuito. U1, U2, U3 - funciones / bloques. A, B, C - parámetros de funciones escritas. 1, 2, 3 - números de entradas y salidas de bloques.
El problema se resuelve utilizando un algoritmo genético .
Algunas técnicas para reducir el espacio de búsqueda, también se utilizan reglas generales. La función objetivo se detalla .
Pero lo más importante es en qué secuencia se llevan a cabo las relaciones.
Opciones de conexión en forma de tabla (combinaciones de genes y cromosomas).
¡Nota! Si comienza a conectarse de derecha a izquierda, la solución se encontrará de inmediato. Si, por el contrario, tendrá que ordenar las opciones.
Este es quizás el punto clave en toda la decisión. Los enlaces "compiten por los recursos". Y si hacemos una conexión , aprovechando un recurso (un pin de un microcircuito o una entrada / salida de una función), entonces otros "consumidores" ya no pueden reclamarlo. Aunque hay opciones para ellos, menos que inicialmente, pero esto es solo para nuestra ventaja: el número de combinaciones disminuye y, como resultado, el tiempo para calcular la solución disminuye.
Opciones de conexión para cada parámetro del bloque de funciones. Hay más información, pero así es como todas las opciones posibles son visibles, con duplicados y (o) "intersecciones" de conexiones. Queda por elegir las soluciones correctas.
Esta vista es más aplicable, ya que las conexiones en la tabla anterior son relativas a U1. En un circuito real, lo más probable es que no haya una unidad base.
Las reglas generales se reemplazan ordenando al azar la lista de "contendientes por el trono". Por extraño que parezca, esto le ayuda a encontrar una solución muy rápidamente. Falta de experiencia, conocimiento sobre el sistema e incluso habilidades de diseño, en la primera aproximación.
No importa qué interconexiones haya en el sistema: el caos + la consistencia encuentran una solución.
En la salida del algoritmo, obtenemos una lista de relaciones que forman un nuevo sistema: un circuito con parámetros de entrada y salida predeterminados . Nos queda por conectar los bloques de acuerdo con la lista o cargar la lista en algún sistema de TI.
Como en la infancia: haz esto: la comprensión vendrá más tarde.
No podemos saberlo todo y entenderlo todo, pero si hay una instrucción paso a paso para un dispositivo que no nos es familiar o para acciones en un entorno desconocido, es mejor seguirlo. Después de todo, esta secuencia es probablemente el resultado de la experiencia ... muchas horas de pensar y probar por otras personas y / o máquinas.
¿Por qué no ahorramos este tiempo avanzando hacia la meta?