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

时间:2013-04-23 03:48:23

标签: graph data-mining prediction jgrapht

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

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

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

现在问题是,我无法在JGraphT中随机选择一条边并随机选择一个顶点。我的顶点名称是一些随机数字的字符串。

任何人都有解决方案吗?

1 个答案:

答案 0 :(得分:1)

有可能。首先参见示例:

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)];

您只需获取图表的边缘和节点集。根据数组确定随机数。从中获取所需的东西。