2010-07-01 35 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