自动机的转移函数
我的目标是在 OCaml 中实现一个转换函数,它接受输入状态,并且字符返回正布尔公式(包括 true 和 false)。 即: \delta(q0,a) = q1 和 (q2 或 q3)
我的问题是如何在 ocaml 中表示布尔公式以及如何用这个特定的函数实现转换函数
My goal is to implement a transition function in OCaml which takes in input an state and a character is returns a positive Boolean formula(including true and false).
That is: \delta(q0,a) = q1 and (q2 or q3)
my problem is how to represent a boolean formula in ocaml and how implement the transition function with this specific
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
交替有限自动机,是吗?
表示布尔公式可以使用简单的递归变体类型来完成(我将使其成为多态类型,因为我还不想指定状态的类型):
例如,q1和 (q2 或 q3) 将表示为:
您可以将该函数表示为实际的 OCaml 函数:
或者您可以选择将转换存储在映射中(这使您可以在运行时构建自动机):
Alternating finite automaton, eh?
Representing a boolean formula would be done with a simple recursive variant type (that I'm going to make into a polymorphic type because I don't want to specify the type of a state yet):
So, for instance,
q1 and (q2 or q3)
would be represented as:You may represent the function as either an actual OCaml function:
Or you may opt for storing the transitions in a map (this lets you build your automaton at runtime):