아주 작은 네트워크 (5000 개의 노드와 25k 개의 비 방향성 에지)에서 모든 노드의 이웃을 거리 2에서 찾고 싶습니다.JUNG와 거리 -2 이웃 찾기
ArrayList<Node> twoDistNei = new ArrayList<Node>();
Collection<Node> myThreads = g.getNeighbors(u);
for(Node t:myThreads){
Collection<Node> neighbors = g.getNeighbors(t);
for(Node uu:neighbors){
if(!twoDistNei.contains(uu)){
twoDistNei.add(uu);
}
}
}
를하지만 정말 느리고 이러한 목표를 달성하기 위해보다 효율적이고 빠른 방법이 있는지 궁금 : 지금은 사용하고 있습니다.
편집 : 내가 언급 한 바와 같이 KNeighborhoodFilter를 사용하는 관리, 이것은 내가 함께 나온 것입니다 : 나는 필터 만) (원래 네트워크를 변화시키고있는 서브 그래프를 유도 할 수 있다는보고 이제
KNeighborhoodFilter filter = new KNeighborhoodFilter(u, 2,KNeighborhoodFilter.EdgeType.IN_OUT);
Graph<Node, Edge> transform = filter.transform(zpa);
Collection<Node> vertices = transform.getVertices();
Set<Node> twoDistThreads = new HashSet<Node>();
for (Node v : vertices) {
if(v.getColor().equals("blue")){
twoDistThreads.add((Thread)v);
}
System.out.println("thread " + v.getName() + " has color " + v.getColor());
}
모든 선택된 노드들 (그리고 선택된 노드들에 링크 된 노드들 ... 그러나 왜?). 이것은 내가 관심있는 2-dist 버텍스 만 잡기 위해 새로운 노드 컬렉션을 필터링해야 함을 의미합니다. 노드 집합이 "파란색"이고 다른 집합이 "빨간색"인 이분 그래프가 있습니다. 내가 여기서 일을하고 있니, 조슈아? 도와 줘서 고마워!
안부, 시몬
, breadfirst, dikistra 등등) – qwr