使用JUNG从图中提取子图?

Leg*_*end 3 java algorithm jung

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

Chr*_*oph 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);
Run Code Online (Sandbox Code Playgroud)

neighborhood图形与原始图形属于同一类.您必须为每个不同的起始节点创建一个新过滤器.