标签: jgrapht

Java:为什么这种方法有副作用?

我有一种产生副作用的方法,即使标记了某些变量final.为什么是这样?也许我对这是什么感到困惑final.

@Test
public void testSubGraph() {
    WeightedGraph<String, DefaultWeightedEdge> g = generateSimpleCaseGraph();

    Graph<String, DefaultWeightedEdge> sub = ChooseRoot.subgraphInDirection(g, "alpha", "l");

    assertEquals(g, generateSimpleCaseGraph()); //fails 
}

public static <V, E extends DefaultEdge> Graph<V, E> subgraphInDirection(final Graph<V, E> g, final V start, final V sink) {
    Graph<V, E> sub = removeEdges(g, start, sink);
    return removeUnconnectedNodes(sub, start);
}

private static <Vertex, Edge extends DefaultEdge> Graph<Vertex, Edge> removeEdges(final Graph<Vertex, Edge> g, Vertex start, Vertex sink) {
    final Set<Edge> outEdges = new HashSet<Edge>(g.edgesOf(start));
    boolean …
Run Code Online (Sandbox Code Playgroud)

java final side-effects jgrapht testcase

3
推荐指数
1
解决办法
1172
查看次数

Java:JGraphT使用循环添加边

是否可以通过使用循环将边添加到图形中?我正在解析一个String来确定合适的边和标签.由于某种原因,它只会为用于遍历String的while循环的第一轮添加边.对于所有其他人,出现以下消息...

警告:删除了边缘,因为底层JGraphT图表拒绝创建它.当违反基础图的约束时,例如,尝试将并行边或自循环添加到禁止它们的图中,就会发生这种情况.要避免此消息,请确保使用合适的基础JGraphT图.

import java.awt.*;
import java.awt.geom.*;

import javax.swing.*;

import org.jgraph.*;
import org.jgraph.graph.*;

import org.jgrapht.*;
import org.jgrapht.ext.*;
import org.jgrapht.graph.*;

// resolve ambiguity
import org.jgrapht.graph.DefaultEdge;

public class JGraphAdapterDemo
    extends JApplet
{

    private static final long serialVersionUID = 3256444702936019250L;
    private static final Color DEFAULT_BG_COLOR = Color.decode("#FAFBFF");
    private static final Dimension DEFAULT_SIZE = new Dimension(530, 320);

    static ListenableGraph<String, String> g =
        new ListenableDirectedMultigraph<String, String>(String.class);

    static int [] finalStates = new int[10];
    static int startState = 0;
    static char tran = ' ';
    static int …
Run Code Online (Sandbox Code Playgroud)

java jgrapht

3
推荐指数
1
解决办法
3134
查看次数

从解析树中获取某些节点

我正在研究一个涉及通过Hobbs算法进行回指解析的项目.我使用Stanford解析器解析了我的文本,现在我想操纵节点以实现我的算法.

目前,我不明白如何:

  • 基于其POS标签访问节点(例如,我需要以代词开头 - 我如何得到所有代词?).

  • 使用访客.我有点像Java的菜鸟,但是在C++中我需要实现一个Visitor仿函数然后处理它的钩子.我找不到Stanford Parser的Tree结构.那是jgrapht吗?如果是的话,你可以在代码片段中提供一些指示吗?

java nlp jgrapht stanford-nlp

3
推荐指数
2
解决办法
5782
查看次数

获得加权图在JGraphT中工作

为什么我得到这个程序的NULL指针错误,只要我看到一切看起来很好,我刚刚开始使用JGraphT并需要一些帮助.

背景:我需要能够向图表添加航班,每个航班都是双向的,航班应按其价格加权.

错误:

run:
Please enter the number of flights: 
2
Please enter the flight destination for flight 1:
Edinburg
Please enter the flight destination for flight 2:
Heathrow
Enter the edges
Edinburg
Heathrow
Please enter a price for this edge:
25.99
Exception in thread "main" java.lang.NullPointerException
    at org.jgrapht.graph.AbstractBaseGraph.setEdgeWeight(Unknown Source)
    at graphapp.MyGraph.setEdgeWeight(MyGraph.java:25)
    at graphapp.GraphApp.main(GraphApp.java:33)
Java Result: 1
BUILD SUCCESSFUL (total time: 14 seconds)
Run Code Online (Sandbox Code Playgroud)

MyGraph.java(类):

package graphapp;

import org.jgrapht.*;
import org.jgrapht.graph.*;
import org.jgrapht.alg.KruskalMinimumSpanningTree;

public class MyGraph {

    private final SimpleDirectedWeightedGraph<String, DefaultWeightedEdge> …
Run Code Online (Sandbox Code Playgroud)

java graph jgrapht

3
推荐指数
1
解决办法
3842
查看次数

JGraphT:无论边缘方向如何寻找最短路径

我使用 JGraphT 构建了以下图 A->B<-C,如下所示:

    DirectedPseudograph<Node, Edge> graph = new DirectedPseudograph<>(Edge.class);
    DijkstraShortestPath<Node, Edge> shortestPath = new DijkstraShortestPath<Node, Edge>(graph);
    Node bn1 = new Node("1", "A", null);
    Node bn2 = new Node("2", "B", null);
    Node bn3 = new Node("3", "C", null);

    graph.addVertex(bn1);
    graph.addVertex(bn2);
    graph.addVertex(bn3);

    Edge edge1 = new Edge("PART_OF");
    Edge edge2 = new Edge("IS_A");
    graph.addEdge(bn1, bn2, edge1);
    graph.addEdge(bn3, bn2, edge2);
Run Code Online (Sandbox Code Playgroud)

但每当我尝试打电话时:

shortestPath.getPath(node1, node3);
Run Code Online (Sandbox Code Playgroud)

我得到一个空数组,这意味着没有连接。我知道这可能与边缘的方向有关,因为 A->B->C 工作正常。有没有办法无论A和C之间的边的方向如何都能找到路径?

java jgrapht shortest-path

3
推荐指数
1
解决办法
281
查看次数

POM导入JGraphT nio包

尝试运行 JGraphT hello world示例,这里的POM如下所示:

<groupId>org.jgrapht</groupId>
<artifactId>jgrapht-core</artifactId>
<version>1.4.0</version>
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有拉下 org.jgrapht.nio.* ,文件树如下:

在此输入图像描述

我需要在 POM 中做什么才能成功完成这些操作:

import org.jgrapht.nio.*;
import org.jgrapht.nio.dot.DOTExporter;
Run Code Online (Sandbox Code Playgroud)

谢谢

java jgrapht

3
推荐指数
1
解决办法
1222
查看次数

Java:使用JGraphT的最小生成树?

我有一个基本上可以被视为图表的问题.我正在考虑使用JGraphT来实现它,而不是自己动手.使用JGraphT从图形中获取最小生成树的最佳方法是什么?

java graph jgrapht minimum-spanning-tree

2
推荐指数
1
解决办法
3525
查看次数

JgraphT导出到点文件

我正在构建一个关于图论算法的项目,为此我使用了JGraphT.我完全构建了我的图表,并在过去的几个月中完成了它的工作.现在我想导出它,以便我可以在Gephi中将其可视化.我不想使用JGraph和Java可视化,因为我已经有足够的代码,我想保持简单.我想使用JgraphT的DOTExporter类.我已达到一个点,我导出精细顶点和边,但没有边缘权重.

所以这是我的导出功能.我不知道如何实现ComponentAttributeProvider接口,无法找到解决这个问题的方法.

任何想法我应该放而不是null,null?

static public void exportGraph(){
    StringNameProvider<CustomVertex> p1=new StringNameProvider<CustomVertex>();
    IntegerNameProvider<CustomVertex> p2=new IntegerNameProvider<CustomVertex>();
    StringEdgeNameProvider<CustomWeightedEdge> p3 = new StringEdgeNameProvider<CustomWeightedEdge>();
    DOTExporter export=new DOTExporter(p2, p1, p3, null, null);
    try {
        export.export(new FileWriter("graph.dot"), g);
    }catch (IOException e){}
} 
Run Code Online (Sandbox Code Playgroud)

我做过这样的事情

ComponentAttributeProvider<CustomWeightedEdge> edgeAttributeProvider =
   new ComponentAttributeProvider<CustomWeightedEdge>() {
        public Map<String, String> getComponentAttributes(CustomWeightedEdge e) {
            Map<String, String> map =new LinkedHashMap<String, String>();
            map.put("weight", Double.toString(g.getEdgeWeight(e)));
            return map;
        }
   };
Run Code Online (Sandbox Code Playgroud)

java export interface dot jgrapht

2
推荐指数
1
解决办法
2498
查看次数

JGraphX中的无向图

我尝试在JGraphx中显示图表.只要我使用有向图形,一切都很好,但当我试图显示一个无向的图形时,它显示方向.

代码来自jgrapht的演示.

package org.jgrapht.demo; import com.mxgraph.layout.*; import com.mxgraph.swing.*; import java.awt.*; import java.nio.file.FileSystem; import javax.swing.*; import org.jgrapht.*; import org.jgrapht.ext.*; import org.jgrapht.graph.*; /** * A demo applet that shows how to use JGraphX to visualize JGraphT graphs. * Applet based on JGraphAdapterDemo. * * @since July 9, 2013 */ public class JGraphXAdapterDemo extends JApplet { private static final long serialVersionUID = 2202072534703043194L; private static final Dimension DEFAULT_SIZE = new Dimension(530, 320); private JGraphXAdapter<String, DefaultEdge> jgxAdapter; /** * An alternative starting point for …
Run Code Online (Sandbox Code Playgroud)

java jgrapht jgraphx

2
推荐指数
1
解决办法
1942
查看次数

获取 JgraphT 中的所有顶点

在 jgrapht 中,我添加了一些顶点。

我想知道如何获取我在 jgrapht 中添加或已经存在的所有顶点?

有没有办法得到它?

jgrapht

2
推荐指数
1
解决办法
1646
查看次数