为了将其上下文化,我试图加载一个.dot文件,我真正关心的是标签,所以我的图将真正由字符串顶点组成,因此边也将是一个(字符串,字符串)结构。它真的很简单,因此我不介意实现自己的图结构来使用它,但我真的想利用DotimPorter。
如果有人能为我提供一些关于如何正确实现EdgeProvider的具体类以及如何使用DefaultEdge类的帮助,我将不胜感激。
简短的回答:这里有一个完整的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允许这样做?