处理Java中点格式图的节点和边

时间:2018-04-22 16:39:07

标签: java graphviz dot directed-acyclic-graphs

我有点格式的图表作为字符串。我想得到它的节点,边和它们的数据进行处理。我正在寻找一个处理给定点格式图的Java库。一个例子将不胜感激。

digraph G { rankdir=TB
    V1 [a=1, b=2, label="V1"]; 
    V2 [a=4, b=0, label="V2"]; 
    V3 [a=1, b=3, label="V3"]; 
    V4 [a=3, b=7, label="V4"];

    V1 -> V2 [path=a, label="a"];  
    V2 -> V3 [path=b, label="b"]; 
    V1 -> V4 [path=c, label="c"];
    V2 -> V4 [path=d, label="d"];
}

1 个答案:

答案 0 :(得分:1)

假设您要使用JGraphT - Library,您可以使用此类:http://jgrapht.org/javadoc/org/jgrapht/io/DOTImporter.html

你需要传递一个VertexProvider和一个EdgeProvider,它必须返回一个顶点和一个边;它们还可以包含其他属性的附加逻辑:

SimpleDirectedGraph< String ,DefaultEdge> labeledGraph = new SimpleDirectedGraph<>(DefaultEdge.class);
DOTImporter<Integer,DefaultEdge> importer = new DOTImporter<>(
    (String label, Map<String, Attribute> attributes) -> {
          // handle the attributes here
         return label;
    },
    (from, to, label, attributes) -> {
         // handle the attributes here
         return labelGraph.addEdge(from, to);
    });
importer.importGraph(labelGraph, yourFileReader)