【问题标题】:how to draw automata in java如何在java中绘制自动机
【发布时间】:2012-04-28 00:35:17
【问题描述】:

我想画一个带有边缘和循环状态的自动机,比如http://pop-art.inrialpes.fr/~girault/Cours/Automates/td5.html,你有一个例子

【问题讨论】:

  • 我把它翻译成英文,第二个链接说“一组球”..
  • 我想做的就是画一个这样的自动机google.com/…
  • @DanRedux:所以?我把它翻译成德语,它是“Kugelspiel”,这是这种自动机的通用名称。
  • 这些图表可能是使用 LaTeX 绘制的,所以也许你可以使用它:从 Java 生成一个.tex 文件,然后让latex 完成这项工作。
  • 另一种选择:从 java 生成一个 .dot 文件,然后让graphviz.org 以您喜欢的任何图像格式进行渲染。

标签: java swing expression-trees finite-automata automata


【解决方案1】:

JGraph 是一个您可以使用的库,它是 Java 原生的并且相当容易使用,或者您可以生成一个 .dot 文件并让 GraphViz 为您处理。

【讨论】:

    【解决方案2】:

    如果您不想进行诸如以正确方式表示图形之类的事情,例如您尝试不越线,或者在同一位置没有两个或多个节点,那么我建议您使用 grail 图形库所以您可以使用 yed 作品查看图表(我可以为您提供一个示例,只需在评论中编写正则表达式即可),或者如果您想自己绘制图表,那么您可能很适合学习分层图表绘制: http://en.wikipedia.org/wiki/Layered_graph_drawing 和 Coffman Graham 算法 http://en.wikipedia.org/wiki/Coffman%E2%80%93Graham_algorithm

    【讨论】:

    • 谢谢你的回答,事实上,我试图解析一个 XMl 文件,然后我必须为 XML 文件生成正则表达式,然后我必须绘制自动机,那里是这篇文章中的一个例子stackoverflow.com/questions/10395825/…
    • 啊哈,我想你在这里有很多工作要做。我以这种方式做了类似的事情:首先我为有效的正则表达式创建了一个 ANTLR 规范语法,以及 AST。然后使用从 antlr 获得的解析器和词法分析器,我为每个正则表达式获得了一个特定的 CommonTree,我遍历了该树并首先构建了 NFA(使用 Thompson 算法)。当您拥有 NFA 时,您可以使用子集构造算法创建 DFA 图。
    猜你喜欢
    • 2017-06-13
    • 2012-02-18
    • 1970-01-01
    • 2014-04-10
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    相关资源
    最近更新 更多