2012-10-28 2 views
0

각 노드에 (int id, String categoryName)이 포함 된 그래프 표현이 있습니다. 그리고 약 500,000 개의 노드로 구성됩니다. 지금은 categoryName "computing"이 그래프에 존재하는지 확인하고 싶습니다. 그러면 BSF 메서드를 사용하는 것처럼 전체 그래프를 통과해야합니까? (내가 틀렸다면 나를 바로 잡아라.) categoryName이 존재하는지 확인하는 것은 꽤 느립니다 (약 3 분 소요). 검색 및 문자열 값 비교 속도를 향상시키는 방법에 대한 조언이 있습니까?그래프의 문자열 비교

+1

카테고리 이름에서 노드로 'HashMap'을 사용할 수 있습니까? –

+1

그래프가 어떻게 구성되어 있는지,'id' 필드의 의미는 무엇인지에 달려 있습니다. – dan

+0

[그래프 데이터베이스] (http://en.wikipedia.org/wiki/Graph_database)가 적합 할 수도 있습니다. –

답변

2

다른 데이터가 없다면 그래프를 검색해야합니다.

그러나 사전 처리 및 사용할 수있는 Map<String,Node> (Node는 노드 클래스 인 경우) 실제 노드에 문자열에서 매핑하고 특정 String가 해당 노드가있는 경우 신속하게 찾을 수있다.

사용하여 문자열에서 노드를 얻을 수 있습니다 : map.get(string)

당신이 사용할 수있는 TreeMap 해시 테이블을 구현하며 HashMap ((O를 (logn) & 삽입 시간과 주문한를 추구이있는) 이 더 중복을지지 않습니다 어떤 문자열을 나타내는 두 개의 서로 다른 노드가 없습니다 즉 : 및


주) O(1) 평균 경우 & 삽입 탐색 시간이있다.
이 가정이 올바르지 않은 경우 Guava Multimap

+0

네 가정은 옳다. 많은 감사합니다! = D 나는 그것을 시도 할 것이다. – user1685426