Blog
Autómata Finito en Python
- Publicado por: Rafael Fernandez
- Categoría: Blog Principiante Python
No hay comentarios

Una máquina de estado finito o autómata finito es un modelo computacional que realiza operaciones automáticamente sobre una entrada para producir una salida. Está conformado por un diccionario, funciones de transición, un estado inicial y un conjunto de estados finales.
Ejemplo de Máquina de Estado Finito en Python
Primero, es necesario instalar el módulo Fysom en el sistema:
pip install fysom
Se definirá una máquina de estado finito que tenga los estados de un semáforo: Verde, Rojo y Amarillo. Para cambiar de estado se definirán las funciones go(), stop(), precacucion().
import time # Librería o Módulo implementado para llevar el tiempo del semáforo from fysom import Fysom # Libreria o Módulo que contiene las funciones para la máquina semaforo = Fysom({ 'initial': 'verde', # Estado inicial de la máquina. 'events': [ # Lista de transiciones (eventos) de la máquina {'name': 'precaucion', 'src': 'verde', 'dst': 'amarillo'}, {'name': 'stop', 'src': 'amarillo', 'dst': 'rojo'}, {'name': 'go', 'src': 'rojo', 'dst': 'verde'} ] }) while True: if semaforo.current == "verde": # 'semaforo.current' almacena el estado actual de la máquina print(semaforo.current) time.sleep(15) # 'time.sleep(n)' espera 'n' segundos para continuar con la ejecución del programa semaforo.precaucion() if semaforo.current == "amarillo": print(semaforo.current) time.sleep(5) semaforo.stop() if semaforo.current == "rojo": print(semaforo.current) time.sleep(10) semaforo.go()
resultado:
verde # Espera 15 segundos y luego imprime 'amarillo' amarillo # Espera 5 segundos y luego imprime 'rojo' rojo # Espera 10 segundos y luego imprime 'verde' nuevamente
Autor:Rafael Fernandez
Empezé estudiando Física aunque mas tarde me decanté por la Ingeniería. Después de hacer un master de Hidráulica (esp. Aero-hidrodinámica de Vehículos) comenzé el PhD en Ingeniería. Hoy en día me encuentro trabajando para la empresa ITK Engineering AG como ingeniero de desarrollo. Entre mi pasiones está el desarrollo e implementación de todo tipo de códigos en Python y otros lenguages.
Puedes visitar mi perfil en Linkedin.