0

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

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

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

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

有人对此有解决方案吗?

4

1 回答 1

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

您只需获取图形的一组边和节点。根据数组确定一个随机数。从中取出你需要的东西。

于 2013-04-26T08:54:23.980 回答