java - 使用 jGraphT 读取图形 GML 文件

标签 java parsing graph-algorithm jgrapht

我正在尝试在图表上运行 Dijkstra 算法。我需要阅读图形建模语言(gml 文件到我的图形、顶点和边数据结构中)。 gml文件有点像这样 图形 [ 定向 0 节点 [ 编号 0 标签“杨百翰” 值 7 ] 节点 [ 编号 1 标签“佛罗里达州” 值 0 ] 。 。 。 。 java 是否有任何库可以将这些数据读取到我的类中?或者关于用 java 创建解析器有什么建议吗?我正在尝试 jgraphT 但似乎无法弄清楚。有一个类 GMLImporter 但我不明白如何使用它。它需要顶点提供商和边缘提供商。请建议一些解决方法!

最佳答案

在 2016 年 9 月发布的 1.0.0 版本中,我们包含了全新的 GML 导入器/导出器。使用它们非常容易。 Jgrapht 中的每个类都附带了广泛的测试套件(只是为了确保我们不会在版本之间破坏任何内容)。这些测试类的好处是它们包含大量示例。例如,请参见类 GmlImporterTest.java

示例:从 GML 文件读取无向加权图:

Graph<String, E> g=new SimpleWeightedGraph<String, E>(DefaultWeightedEdge.class);

VertexProvider<String> vp = new VertexProvider<String>()
        {
            @Override
            public String buildVertex(String label, Map<String, String> attributes)
            {
                return label;
            }
        };

        EdgeProvider<String, E> ep = new EdgeProvider<String, E>()
        {

            @Override
            public E buildEdge(String from, String to, String label, Map<String, String> attributes)
            {
                return g.getEdgeFactory().createEdge(from, to);
            }

        };

        GmlImporter<String, E> importer = new GmlImporter<String, E>(vp, ep);
        importer.importGraph(g, new File("myGraph.gml"));

VertexProviderEdgeProvider 告诉导入器如何创建顶点/边对象。

关于java - 使用 jGraphT 读取图形 GML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825995/

相关文章:

java - 在 AWS Beanstalk 中运行 WAR 文件

SQL - openjson 从 json 中提取 key

algorithm - 将叶约束 MST p‌r‌o‌b‌l‌e‌m 简化为哈密顿路径 p‌r‌o‌b‌l‌e‌m

c# - 图中节点的拓扑排序子集

java - 从 JTextField 读取文本时出现 NullPointerException

java - 在同一模拟对象上模拟不同方法时出现错误

java - 循环数组的简单方法

C、解析一些http头

python - 将 csv 文件作为 float 读取到 pandas 数据帧

algorithm - 具有锁定和未锁定边的无向图中的最小路径