lts
1.0.0
作者:恩里科·特罗姆贝塔、弗朗西斯科·佩罗内
在理论计算机科学中,过渡系统是计算研究中使用的概念。它用于描述离散系统的潜在行为。它由状态和状态之间的转换组成,可以用从一组中选择的标签来标记它们;同一标签可能出现在多个转换上。如果标签集是单例,则系统本质上是无标签的,并且省略标签的更简单的定义是可能的。
摘自维基百科。
这是我开始研究的场景:
该问题涉及两名特工,哈尔和卡拉。哈尔患有糖尿病,他意外失去了胰岛素,迫切需要服用一些药物来维持生命。他没有足够的时间购买新的胰岛素,但他知道卡拉在家里放了一些胰岛素,就在附近。哈尔无权进入卡拉的财产,此外哈尔知道卡拉也患有糖尿病,他可能会因为夺走她的供应而将她的生命置于危险之中。另一方面,哈尔相信卡拉稍后可以购买一些胰岛素。
关于此场景的简要讨论可以在notes/LTS_insulin.pdf
中找到(LaTex 源代码位于src
文件夹下)。
Prolog 中的src/LTS.pl
中提供了实现草图(特别是,我们决定采用 SWI Prolog)。
要调用路径,请在解释器中加载知识库,加载初始状态并执行路径。
例如:
?- [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 .
后一个命令应该写下每个路径的 csv 列表。该格式记录在src/LTS.pl
中,但应该(希望)非常简单。
里程碑:
[ ] 完成树功能的LTS实现。
[ ] 实现解析器
[ ] 改进 LTS 的讨论
[ ] 为过渡添加标签。
[ ] ...