当前位置: 首页 > 工具软件 > JGraphT > 使用案例 >

java中建有向图_java – 避免在有向图中创建重复顶点(使用jgrapht)

岑经纶
2023-12-01

我正在寻找一种避免在我的有向图中创建重复项的方法(我使用jgrapht库).

我读了一些据说要使用的主题:directedGraph.setCloneable(false);

但它似乎不对,在图书馆的文档中找不到它,我在这一行上得到一个错误,说它不存在.

我用以下方法创建了图表:

public static DirectedGraph directedGraph = new DefaultDirectedGraph(DefaultEdge.class);

然后它根据泛光填充算法为它添加顶点(在算法遍历每个点时添加顶点和边,下面是它的一部分):

// Up

xToFillNext = x-1;

yToFillNext = y;

if (xToFillNext==targetX && yToFillNext==targetY && !forbiddenDirection.equals(Direction.UP)) {

Point myPoint = new Point(x, y);

Point myNextPoint = new Point(xToFillNext, yToFillNext);

directedGraph.addVertex(myPoint);

directedGraph.addVertex(myNextPoint);

directedGraph.addEdge(myPoint, myNextPoint);

return true;

} else if (xToFillNext>=0 && originValue==matrix[xToFillNext][yToFillNext] && !forbiddenDirection.equals(Direction.UP)) {

Point myPoint = new Point(x, y);

Point myNextPoint = new Point(xToFillNext, yToFillNext);

directedGraph.addVertex(myPoint);

directedGraph.addVertex(myNextPoint);

directedGraph.addEdge(myPoint, myNextPoint);

fillingReachedTargetPosition =

fillReachesTargetPosition(matrix, xToFillNext, yToFillNext, targetX, targetY, fillValue, Direction.DOWN );

if (fillingReachedTargetPosition) {

return true;

}

}

但是当我打印顶点列表时,我需要摆脱重复,或者避免创建它们.有办法吗?

编辑:我创建了一个Point类:

public static class Point {

public int x;

public int y;

public Point(int x, int y)

{

this.x = x;

this.y = y;

}

@Override

public String toString() {

return ("[x="+x+" y="+y+"]");

}

}

 类似资料: