跳到内容

代数图/fsharp

阿尔加。F竖琴

生成状态

阿尔加。FSharp是的F#端口代数图库通过安德烈·莫霍夫。图书馆是。NET标准,因此可以在Windows、Linux和macOS上构建和运行。

签出、构建和编辑

在阿尔加工作。FSharp,我建议使用跨平台编辑器Visual Studio代码使用离子扩展。

首先,确保已安装以下内容:

现在,在终端中运行以下命令:

git克隆https://github.com/nickcowle/alga-fsharp.gitcd藻类锐化dotnet构建代码。

主要想法

考虑在顶级模块中定义的以下数据类型图表库的:

类型 “a 图表 =
    |清空|顶点属于 “a
    |覆盖属于 “a 图表 * “a 图表
    |连接属于 “a 图表 * “a 图表

我们可以根据对为构造函数提供以下语义(V、E)图形的顶点边缘:

  • 清空构造空图(∅, ∅).
  • 顶点x构造包含单个顶点的图,即。({x},∅).
  • 叠加(x,y)覆盖图(Vx,Ex)(Vy,Ey)建造(VxáVy,ExáEy).
  • 连接(x,y)连接图形(Vx,Ex)(Vy,Ey)建造(VxкVy,ExкEyкVx×Vy).

与此类构造函数相关的定律与半环,所以我们使用+*作为方便快捷方式覆盖连接,分别为:

  • (+,清空)是一个幂等交换幺半群。
  • (*,清空)是一个幺半群。
  • *分布在+,即:x*(y+z)==x*y+x*z(x+y)*z==x*z+y*z.
  • *可以分解为:x*y*z==x*y+x*z+y*z.

这个代数结构对应于无标记有向图:每个表达式表示一个图形,每个图形可以用表达式表示。可以通过修改上述法律。代数图为使用F#中的图提供了方便、安全和强大的界面,并允许应用等式推理来证明图形算法的正确性。

发布

未发布版本

包装

未发布包

语言文字