2009-06-04 2 views
10

반복적으로 정점을 제거하여 그래프의 k-core을 계산하는 것만으로도 충분합니다. 그러나, 내 응용 프로그램의 경우 시작 그래프에 정점을 추가하고 전체 k 코어를 처음부터 다시 계산하지 않고도 업데이트 된 코어를 얻을 수 있기를 바랍니다. 이전 반복에서 수행 된 작업을 활용할 수있는 안정적인 알고리즘이 있습니까?증분 k- 코어 알고리즘

k- 코어는 클릭 찾기 알고리즘에서 전처리 단계로 사용됩니다. 크기가 5 인 모든 클록은 그래프의 4 코어 부분에 포함되도록 보장됩니다. 내 데이터 세트에서 4 코어는 전체 그래프보다 훨씬 작아서 무차별 적으로 강제로 처리 할 수 ​​있습니다. 점을 점진적으로 추가하면 알고리즘이 가능한 한 작은 데이터 세트로 작동 할 수 있습니다. 내 꼭지점 세트는 무한하고 순서대로 (소수), 가장 낮은 번호의 도발에만 관심이 있습니다.

편집 : 그것에 대해 생각

가 좀 더 루프의 생성을 감지, akappa의 답변에 따라 참으로 중요합니다. 아래의 그래프에서 2 코어는 F를 추가하기 전에 비어 있습니다. F를 추가해도 A의 차수는 변경되지 않지만 여전히 2 코어에 A가 추가됩니다. 모든 크기의 루프를 닫으면 모든 정점이 동시에 2 코어에 결합하게되는 것을 확인하기 위해 이것을 확장하는 것은 쉽습니다.

정점을 추가하면 임의의 거리에있는 정점의 중심부에 영향을 미칠 수 있지만, 최악의 경우에는 너무 많이 집중됩니다.

A -- B; A -- C; A -- D -- E; B -- F; C -- F;

답변

3

대신에 "글로벌"반복 치기의 그래프의 로컬 탐색에 기초하여 증분 K 코어 계산하는 알고리즘을 참조하기 위해 증분 루프 검출을 필요 저 보인다 어떤 모서리가 k- 코어의 꼭지점에 들어가는 데 기여할 수 있다는 것은 어려운 문제입니다.

당신이 할 수있는 최선의 방법은 각 패스에서 k- 코어 알고리즘을 재 계산하는 것입니다. 이미 그래프에서 k- 코어에 이미있는 정점을 제거하고지도 정점 -> "k - 코어 인접 꼭지점 "이미 k- 코어에있는 인접 꼭지점의 수.

2

간략한 아이디어 : 목록 L에 내역을 저장할 수 있습니다. 즉, 제거 된 노드의 순서를 저장할 수 있습니다. 새로운 노드 v를 추가 할 때마다 v에 인접한 L의 첫 번째 노드 w에서 시작한 다음 선형 순서로 L의 나머지 노드를 진행합니다. (노드 v도 테스트 해보고 아마도 L에 추가하십시오.)

3

어려운 문제이지만, NP-Hard는 아닙니다. 지금까지 내가 아는 한 학계에서는 K 개의 코어를 점진적으로 업데이트하는 일반적인 해결책이 없습니다. 그러나 다음 두 개의 논문이 반드시 가치가 있습니다 :

[1] 분석 및 시각화 삼각형 K- 네트워크 내의 핵심 모티프. http://www.cse.ohio-state.edu/~zhangya/ICDE12_conf_full_179.pdf

[2] k- 코어 분해를위한 스트리밍 알고리즘. http://www.cse.ohio-state.edu/~sariyuce/file/Publications_files/VLDB13.pdf

데이터 관리 영역의 프리미어 컨퍼런스에 표시되므로 방법론을 신뢰할 수 있어야합니다.