2010-07-01 76 views
3

我有一个大图,我正在使用JUNG处理。我想知道JUNG是否提供了一种方法来提取一个顶点的2跳邻居(其中包含所有边),并将其分解为单独的图?使用JUNG从图中提取子图?

回答

0

edu.uci.ics.jung.algorithms.connectivity.KNeighborhoodExtractor尝试

+0

这是来自现在非常过时的JUNG 1.x.以上答案是正确的。 – 2012-02-08 23:47:10

7

在JUNG 2.0它是edu.uci.ics.jung.algorithms.filters.KNeighborhoodFilter

用于提取围绕一个或多个根 节点(一个或多个)的k附近的过滤器。 k邻域被定义为由距离根节点为k或更少跳(顶点最短路径为 距离)的顶点集引起的子图。

这里是你如何使用它(假设你已经有一个图,顶点/边类型):

Graph<V, E> graph = // ... 
int k = 3; // maximum hops 
V startVertex = // ... (pick your starting node) 
Filter<V, E> filter = new KNeighborhoodFilter<V, E>(
    startVertex, k, EdgeType.IN_OUT); 
Graph<V, E> neighborhood = filter.transform(graph); 

neighborhood图将是相同的类作为您的原始图形。您将不得不为每个不同的起始节点创建一个新的过滤器。

+1

你能提供一个示例代码吗? – Daniel 2012-07-31 10:24:39

+0

@Christoph,感谢您发布此示例代码,它对我有很大的帮助。我知道这个职位是四岁,但嘿,我刚刚遇到这个答案,是迄今为止最好的。这应该被标记为正确答案! – David 2014-12-01 14:04:51