Graph OCaml中的图怀疑及与图相关的函数

Graph OCaml中的图怀疑及与图相关的函数,graph,ocaml,Graph,Ocaml,我这里有这个代码: type ('state,'letter) automaton = { initial : 'state ; final : 'state -> bool ; transition : 'letter -> 'state -> 'state ; } let example_graph = { nodes = ['a'; 'c'; 'd'; 'f'; 'g'; 'h'; 'k']; edges = ['h', 'g';

我这里有这个代码:

type ('state,'letter) automaton = {
  initial    : 'state ;
  final      : 'state -> bool ;
  transition : 'letter -> 'state -> 'state ;
}   

let example_graph =
{ 
nodes = ['a'; 'c'; 'd'; 'f'; 'g'; 'h'; 'k'];
edges = ['h', 'g';  'k', 'f';  'f', 'b';  'f', 'c';  'c', 'b']

} 
这是OCaml网站提供的关于graths的默认示例

我的问题是,如何在
OCaml
中处理图形?我的意思是,对于
列表
我们有一个很大的函数页面,可以帮助我们使用它,但我没有找到任何关于预定义函数的图形

我在图形方面有一项复杂的工作,更准确地说,我需要用
OCaml
构建一个
自动机
,但首先我想了解如何进行简单的思考,例如从图形中获取
节点
,如何转换节点和边的输入值,或者,我如何使用我这里的图形进行测试,例如,我如何在节点之间移动…(你能记住的每一个简单动作或我能获得更多信息的任何地方都会有帮助)

基本上,我想知道在网络上是否有任何地方可以让我在OCaml中获得关于图形或函数的更好信息,你们是否可以帮我一把

谢谢


PS:我已经完成了搜索,但没有发现任何真正有用的东西(对于像我这样的初学者来说,只会有很多复杂的代码)

好吧,我认为对于一个新的OCaml程序员来说,ocamlgraph有点复杂(但以后使用它会是一个好主意)

据我所知,您希望以一种可以理解的方式处理节点和边

首先,我建议您(使用它)测试,因为这是一种快速而简单的方法(我使用这个模块实现了,它运行得非常好)

要让您了解一些情况,请执行以下操作:

type ('state,'letter) automaton = {
  initial    : 'state ;
  final      : 'state -> bool ;
  transition : 'letter -> 'state -> 'state ;
}   
直到现在,你都是这样看待机器人的

type ('state,'letter) automaton = {
  initial    : 'state ;
  final      : 'state -> bool ;
  transition : ('letter, 'state) list Map.Make('state);
}   
这就是我对它的看法(这不是一个正确的实现,因为
'state
不是一个明显的有序类型,但思想就在这里)。您可以将任何状态映射到一个状态列表(如果您了解如何创建一个新的映射,您将使用它来代替列表)


试着自己实现它,它会非常有用,你可以学到很多东西。

好吧,我认为对于一个新的OCaml程序员来说,ocamlgraph有点复杂(但以后使用它会是个好主意)

据我所知,您希望以一种可以理解的方式处理节点和边

首先,我建议您(使用它)测试,因为这是一种快速而简单的方法(我使用这个模块实现了,它运行得非常好)

要让您了解一些情况,请执行以下操作:

type ('state,'letter) automaton = {
  initial    : 'state ;
  final      : 'state -> bool ;
  transition : 'letter -> 'state -> 'state ;
}   
直到现在,你都是这样看待机器人的

type ('state,'letter) automaton = {
  initial    : 'state ;
  final      : 'state -> bool ;
  transition : ('letter, 'state) list Map.Make('state);
}   
这就是我对它的看法(这不是一个正确的实现,因为
'state
不是一个明显的有序类型,但思想就在这里)。您可以将任何状态映射到一个状态列表(如果您了解如何创建一个新的映射,您将使用它来代替列表)


尝试自己实现它,它会非常有用,您可以从中了解到很多信息。

OCaml非常支持图形,这要感谢库。它有很好的文档记录,功能非常强大,但它非常依赖于函子,它们通常会让OCaml新手感到困惑。因此,你也可以考虑尝试另一个我们开始为程序分析的目的。它没有发布到官方opam存储库中,但您始终可以从我们自己的存储库中获得最新的alpha版本:

opam repository add git://github.com/BinaryAnalysisPlatform/opam-repository.git
opam install graphlib
p.S.Graphlib不是OCamlgraph的替代品,它能很好地使用它。只是焦点有点不同。OCamlGraph更侧重于在graphlib时适用于任何图形表示的通用算法
重点介绍图形数据结构。因此,它更容易使用,但更难扩展

OCaml非常支持图形,这要感谢库。它有很好的文档记录,功能非常强大,但它非常依赖于函子,它们通常会让OCaml新手感到困惑。因此,你也可以考虑尝试另一个我们开始为程序分析的目的。它没有发布到官方opam存储库中,但您始终可以从我们自己的存储库中获得最新的alpha版本:

opam repository add git://github.com/BinaryAnalysisPlatform/opam-repository.git
opam install graphlib
p.S.Graphlib不是OCamlgraph的替代品,它能很好地使用它。只是焦点有点不同。OCamlGraph更侧重于在graphlib时适用于任何图形表示的通用算法
重点介绍图形数据结构。因此,它更容易使用,但更难扩展

也许这将是一个很好的起点:这肯定会帮助我!谢谢我希望我能理解!!也许这将是一个很好的起点:这肯定会帮助我!谢谢我希望我能理解!!