我目前正在尝试提出一种数据结构,以满足我想在 Haskell 中实现的两种自动机学习算法的需求:RPNI和EDSM。
直观地说,接近于 zippers 对树的东西将是完美的:这些算法是状态合并算法,它们保持对状态的某种关注(蓝色边缘),因此将受益于某种 zippers 快速到达有趣的点。但我有点迷失了,因为 DFA(确定性有限自动机)更像是一种图形结构而不是树状结构:转换可以让你回到结构中,这不太可能使拉链正常。
所以我的问题是:你将如何表示一个 DFA(或者至少是它的转换),以便你可以快速地操纵它?