使用JUNG从图中提取子图?

时间:2010-07-01 23:05:06

标签: java algorithm jung

我有一个大图,我正在使用JUNG处理。我想知道JUNG是否提供了一种方法来提取一个顶点的两跳邻域(其中包含所有边缘)到一个单独的图形中?

2 个答案:

答案 0 :(得分: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 :(得分:0)

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