当前位置: 首页 > 知识库问答 >
问题:

使用JGraphT库的EdgeProvider类

章岳
2023-03-14

为了将其上下文化,我试图加载一个.dot文件,我真正关心的是标签,所以我的图将真正由字符串顶点组成,因此边也将是一个(字符串,字符串)结构。它真的很简单,因此我不介意实现自己的图结构来使用它,但我真的想利用DotimPorter。

如果有人能为我提供一些关于如何正确实现EdgeProvider的具体类以及如何使用DefaultEdge类的帮助,我将不胜感激。

共有1个答案

容磊
2023-03-14

简短的回答:这里有一个完整的DOTImporter示例(非常简单…):

JGraphT直到1.4.x版本的示例代码:

public class DOTTest {

    public static void main(String[] args) throws ImportException {
        //Example graph
        String input =
                "digraph graphname {\r\n" + "     a -> b -> c;\r\n" + "     b -> d;\r\n" + " }";

        GraphImporter<String, DefaultEdge> importer = new DOTImporter<>(
                (label, attributes) -> label, 
                (from, to, label, attributes) -> new DefaultEdge()
        );

        Graph<String, DefaultEdge> result = new SimpleDirectedGraph<>(DefaultEdge.class);
        importer.importGraph(result, new StringReader(input));

        System.out.println(result);
    }
}

JGraphT 1.5.0及更高版本的新示例代码:

public class DOTTest {

    public static void main(String[] args) throws ImportException {
        //Example graph
        String input =
                "digraph graphname {\r\n" + "     a -> b -> c;\r\n" + "     b -> d;\r\n" + " }";

    Graph<String, DefaultEdge> result = new SimpleDirectedGraph<>(DefaultEdge.class);

    DOTImporter<String, DefaultEdge> dotImporter = new DOTImporter<>();
    dotImporter.setVertexFactory(label -> label);
    dotImporter.importGraph(result, new StringReader(input);

    System.out.println(result);
}
 类似资料:
  • JGraphT 是一个免费的 Java 图库,提供数学图论对象和算法。JGraphT支持各种类型的图,包括: 有向图和无向图。 具有加权/非加权/标记或任何用户定义的边的图。 各种边的多重性选项,包括:简单图、多图、伪图。 不可修改的图 - 允许模块提供对内部图的 "只读 "访问。 可监听图 - 允许外部监听者跟踪修改事件。 子图--在其他图上自动更新子图视图的图。 上述图形的所有组合。

  • 我有一个任务列表,它们之间有依赖关系,我正在考虑如何使用JGraphT来管理任务的顺序。我会将图形设置为有向图,并在处理顶点时删除顶点(或者我应该屏蔽它们吗?如果我一次只执行一个任务,我可以使用,但我希望并行化这些任务。我可以获取并检查直到我找到尽可能多的我想要执行一次,但理想情况下,会有像这样的东西。我看到Netflix提供了一个获取叶顶点的实用程序,所以我可以反转图形并使用它,但它可能不值得。

  • 我想在有向(无环)图中找到最长的路径。假设我知道起始节点-汇。路径应该从这一点开始。我在想我可以将边的权重设置为-1。有很多方法可以找到所有最短的路径,但你必须通过终点。有没有可能得到最短的路径(无论最终节点如何)? 假设我想为节点 nr 1(汇)找到最长路径。所以这个算法给了我1-2-3-4-5-6。

  • 在jgrapht中,我添加了一些顶点。 我想知道如何获得所有我添加的顶点或jgrapht中已经存在的顶点? 有办法弄到吗?

  • 我正在尝试使用jgraph T解决一个链接预测问题。我正在根据两个节点的邻居计算两个节点之间的相似性。每个节点都有一些属性。计算变得太多了,因为一些节点有大约700个邻居,而我有4500个这样的节点。我有谁对的700K边,我计算相似性。 现在,我不想使用节点的所有邻居,我只想使用每个节点的k个最近邻居来计算一对节点之间的相似度。我可以根据边共享的两个节点的属性数,或节点之间长度为n的最短路径数等,

  • 假设我有以下两个树图: 我需要从第一个图中提取子图<code>b</code>并将其替换为第二个图,如下所示: JGraphT中是否有任何现有的API允许这样做?