java运行Louvain算法,运行这位老哥的代码出现了问题https://blog.csdn.net/weixin_42111859/article/details/108537783
我想从数据库中批量添加边,然后我的数据量很大,导致第二个dst值很大,然后,即使我试着只读取10条数据,也运算不出来,该怎么解决
这是我的表
src dst weight
3 87743 1
5 87746 1
11 87749 1
12 87753 1
13 87755 1
15 87757 1
18 87759 1
19 87762 1
21 87764 1
原来老哥这部分代码是这样的:
public void testSingle() {
Graph g = new Graph();
// 0->1->2->0
g.addLinks(Arrays.asList(new Link(0, 1, 1.0)));
g.addLinks(Arrays.asList(new Link(1, 2, 1.0)));
g.addLinks(Arrays.asList(new Link(2, 0, 1.0)));
// 3->4->5->3
g.addLinks(Arrays.asList(new Link(3, 4, 1.0)));
g.addLinks(Arrays.asList(new Link(4, 5, 1.0)));
g.addLinks(Arrays.asList(new Link(5, 3, 1.0)));
// 构造计算器
LouvainCalculator louvainCalculator = new LouvainCalculator(g);
// 执行划分
CommunityInfo communityInfo = louvainCalculator.findCommunitiesSingleLevel();
// 输出结果
System.out.println(communityInfo);
}
我修改完的代码:
Graph g = new Graph();
for (Point point : points) {
g.addLinks(Arrays.asList(new Link(point.getSrc(), point.getDst(), point.getWeight())));
}
// g.addLinks(Arrays.asList(new Link(0, 1, 1.0)));
// 构造计算器
LouvainCalculator louvainCalculator = new LouvainCalculator(g);
// 执行划分
CommunityInfo communityInfo = louvainCalculator.findCommunitiesSingleLevel();
// 输出结果
System.out.println(communityInfo);
return communityInfo;
}