如何从jGraphT图中随机选取顶点或边

如何从jGraphT图中随机选取顶点或边,graph,data-mining,prediction,jgrapht,Graph,Data Mining,Prediction,Jgrapht,我创建了一个带有一组边(4000K边和4K节点)的图。 现在我想从语料库中提取10%的边缘来创建一个训练和测试数据集 我想随机拾取一条边,验证该边的顶点是否具有具有随机顶点的边。如果是这样,我将删除图形中的该边,并将该边写入测试文件。因此,稍后我将使用一些相似性函数预测测试文件的边缘 逻辑是我试图预测A->C,给定A->B和B->C 现在的问题是,我无法在JGraphT中随机选取边和顶点。我的顶点名称是一些带有随机数的字符串 任何人都有解决办法吗?这是有可能的。首先请参见示例: Directed

我创建了一个带有一组边(4000K边和4K节点)的图。 现在我想从语料库中提取10%的边缘来创建一个训练和测试数据集

我想随机拾取一条边,验证该边的顶点是否具有具有随机顶点的边。如果是这样,我将删除图形中的该边,并将该边写入测试文件。因此,稍后我将使用一些相似性函数预测测试文件的边缘

逻辑是我试图预测A->C,给定A->B和B->C

现在的问题是,我无法在JGraphT中随机选取边和顶点。我的顶点名称是一些带有随机数的字符串


任何人都有解决办法吗?

这是有可能的。首先请参见示例:

DirectedGraph<String, DefaultEdge> graph = new DefaultDirectedGraph<String, DefaultEdge>(DefaultEdge.class);
Object[] vertexSet = graph.vertexSet().toArray();
Object[] edgeSet = graph.edgeSet().toArray();
String someRndNode = (String) vertexSet [ getSomeRandomNumberBetween(0, vertexSet.length)];
DefaultEdge someRndEdge = (DefaultEdge) edgeSet [ getSomeRandomNumberBetween(0, edgeSet.length)];
DirectedGraph图形=新的DefaultDirectedGraph(DefaultEdge.class);
Object[]vertexSet=graph.vertexSet().toArray();
Object[]edgeSet=graph.edgeSet().toArray();
String someRndNode=(String)顶点集[getSomeRandomNumberBetween(0,vertexSet.length)];
DefaultEdge someRndEdge=(DefaultEdge)edgeSet[getSomeRandomNumberBetween(0,edgeSet.length)];
您只需获取图形的边和节点集。根据数组确定一个随机数。把你需要的东西拿出来