gpt4 book ai didi

graph - JGraphX 构建图需要很长时间

转载 作者:行者123 更新时间:2023-12-01 05:20:57 27 4
gpt4 key购买 nike

我正在用 JGraphX 构建一个图表。使用以下代码,与类似的图实现(如 JGraphT)相比,构建需要非常长的时间。为什么会这样?创建顶点很快,但创建边的嵌套循环需要很长时间,尤其是当数组大小为 1000 时。

Vertex[] verts = new Vertex[1000]; // My own vertex class
mxCell[] cells = new mxCell[1000]; // From com.mxGraph.model.mxCell

// Create graph
mxGraph mx = new mxGraph(); // from com.mxgraph.view.mxGraph

// Create vertices
for(int i = 0; i < verts.length; i++)
{
verts[i] = new Vertex(Integer.toString(i));
cells[i] = new mxCell(verts[i]);
mx.getModel().beginUpdate();
mx.insertVertex(null, Integer.toString(i), cells[i], 1, 1, 1, 1);
mx.getModel().endUpdate();
}
System.out.println("Vertices created.");

// Connect graph
Random r = new Random();
for(int j = 0; j < verts.length; j++)
{
for(int k = 0; k < verts.length; k++)
{
if(k != j)
{
if(r.nextInt(5) == 0) // Random connections, fairly dense
{
mx.getModel().beginUpdate();
mx.insertEdge(null, Integer.toString(k) + " " + Integer.toString(j), "", cells[j], cells[k]);
mx.getModel().endUpdate();
}
}
}
}
System.out.println("Finished graph.");

最佳答案

beginend更新旨在将操作合二为一。结束更新会导致图形的完整验证。在这里,您只包装了每个原子操作,它们没有任何效果。

在创建图形后删除开始/结束,然后在此代码部分的底部放置一个开始并尝试这样做。

关于graph - JGraphX 构建图需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com