Autores : Enrico Trombetta, Francesco Perrone
En informática teórica, un sistema de transición es un concepto utilizado en el estudio de la computación. Se utiliza para describir el comportamiento potencial de sistemas discretos. Consta de estados y transiciones entre estados, que pueden etiquetarse con etiquetas elegidas de un conjunto; La misma etiqueta puede aparecer en más de una transición. Si el conjunto de etiquetas es un singleton, el sistema esencialmente no está etiquetado y es posible una definición más simple que omita las etiquetas.
Tomado de Wikipedia.
Este es el escenario en el que comencé a trabajar:
El problema involucra a dos agentes, Hal y Carla. Hal, diabético, perdió su insulina por accidente y necesita tomarla urgentemente para seguir con vida. No tiene tiempo suficiente para comprar un nuevo suministro, pero sabe que Carla guarda algo de insulina en casa, muy cerca. Hal no tiene permiso para acceder a la propiedad de Carla, además Hal sabe que Carla también es diabética y podría estar poniendo su vida en peligro al quitarle el suministro. Por otro lado, Hal cree que Carla podría comprar algo de insulina más adelante.
Puede encontrar una breve discusión sobre este escenario en notes/LTS_insulin.pdf
(la fuente de LaTex está disponible en la carpeta src
).
Se proporciona un esquema de implementación en src/LTS.pl
en Prolog (en particular, decidimos adoptar SWI Prolog).
Para invocar una ruta, cargue la base de conocimientos en el intérprete, cargue el estado inicial y ejecute una ruta.
Por ejemplo:
?- [LTS].
initial_state ( InitialState ), path( InitialState , Path ) .
InitialState = . ..
Path = . ..
[And a bunch of alternative paths]
true .
?- initial_state(InitialState), export_tree("tree.csv", InitialState).
InitialState = . ..
true .
El último comando debería escribir una lista csv de cada ruta. El formato está documentado en src/LTS.pl
, pero debería ser (con suerte) bastante sencillo.
Hito:
[] Finalice la implementación LTS de la función de árbol.
[] Implementar un analizador
[ ] Mejorar la discusión de la LTS
[] Agregar etiquetas a las transiciones.
[ ]...