그래프에서 유사성 메트릭을 테스트하고 있습니다. JUNG API를 사용하여 그래프를 처리하고 있습니다. 필자는 공통 이웃 및 prefferential 첨부와 같은 기본 메트릭을 계산할 수있었습니다. 이제 다음과 같이 katz 메트릭을 계산하려고합니다 : katz (v1, v2) = B.paths_1 (v1, v2) + B^2.paths_2 (v1, v2) + ... + B^n.paths_n (v1, v2) 여기서, paths_n (v1, v2)는 v1과 v2 사이의 길이 "n"의 경로 수이고; B는 스칼라이다. 나는 n을 4로 제한하고 있으므로 마지막 katz 행렬은 다음과 같이 쉽게 계산할 수 있습니다. B.A + (B.A)^2 + ... + (B.A)^4 여기서 A는 그래프의 인접 행렬입니다. 것은 내가 작업하고있는 그래프가 매우 거대하고 전체 katz 행렬을 메모리에 저장할 수 없다는 것입니다. 게다가, 나는 단지 몇 쌍의 노드만을 테스트하기 때문에 모든 점수가 필요하지는 않습니다. 그래도 그래프를 보지 않고도 개별 점수를 계산할 수있는 효율적인 방법을 찾을 수 없습니다. 아이디어가 있으십니까?카츠 유사성 - 행렬/그래프 연산 (JAVA + JUNG)
0
A
답변
1
개별 점수 ketz(v1,v2)
을 계산하려면 v1 또는 v2에서 4 미만의 거리에있는 꼭지점 만 포함하는 인접성 부분 행렬을 고려하면됩니다.
v1 및 v2에서 숨 한 우선 검색을 사용하여 이러한 꼭지점을 찾을 수 있습니다.
v1에서 시작하는 BFS를 수행하는 동안 #paths를 직접 계산하면 실제로 더 잘 수행 할 수 있습니다. v1로부터의 거리와 v2에 도달했는지 여부를 각 정점 검사에서만 기억하면됩니다. 그렇다면 적절한 카운터를 증가시킵니다. 그 (의사 코드) 같은
뭔가 : 당신이 실행 한 후
Queue q = new Queue();
q.enqueue((v1, 0));
int[] counts = new int[] { 0,0,0,0,0 };
while (!q.empty()) {
(v, dist) = q.dequeue();
for(Vertex w : v.Neighbors()) {
if(dist < 3)
q.enqueue((w, dist+1));
if(dist < 4 && w == v2)
counts[dist+1]++;
}
}
그래서, 당신은 N을 위해 counts[n] = paths_n(v1,v2)
을해야합니다 = 1, 2, 3, 4
관련 문제
- 1. Wordnet 유사성 : JAWS, JWNL 또는 Java WN : 유사성?
- 2. mysql의 단어 유사성/유사성
- 3. JAVA 부동 소수점 연산
- 4. 유사성
- 5. 도 순서를 취하는 Java Jung Graph 생성자
- 6. Java Jung 서브 그래프 구성 요소
- 7. java 프로그램을 사용하여 코사인 유사성 계산
- 8. Java. 웹 페이지 구조 (dom) 유사성 비교
- 9. 해싱 유사성
- 10. 유사성 일치
- 11. JUNG 및 Java로 MouseEvents
- 12. JUNG 라이브러리와 함께 작업
- 13. JUNG 레이아웃 질문
- 14. Jung 색칠 정점 값이
- 15. JUNG 그래프의 렌더링 향상
- 16. JUNG : 어떤 라이브러리가 필요합니까?
- 17. 시각화에 JUNG 노드가 잘립니다.
- 18. 자바 코사인 유사성 문제
- 19. Mahout의 사전 컴파일 된 항목 유사성 목록과 유사성 만들기
- 20. JUNG (Java Graph) : Vertex와 Edge-Labels가 겹치지 않게하는 방법은 무엇입니까?
- 21. Java EE 웹 개발 비트 단위 연산
- 22. 변수를 정의 할 때 JAVA 다중 연산
- 23. Java 비트 연산 긴 - 일부 비트 제거
- 24. 연산 오버플
- 25. .NET에서 단 정밀도 연산 연산?
- 26. JUNG 그래프에 JLabel을 추가하려면 어떻게합니까?
- 27. JUNG : 순서대로 트리 노드 배치
- 28. JUNG 가장자리 길이를 얻는 방법?
- 29. Lucene : 유사성 등급 ... 여러 가지 유사성 척도를 정의하는 방법?
- 30. 코사인 유사성 문제
참고로, 정의 당신 ' Katz 메트릭을 사용하는 것이 익숙한 방법이 아닙니다. 짧은 경로를 더 많이 계산합니다. 자세한 내용은 http://www.cs.cornell.edu/home/kleinber/link-pred.pdf를 참조하십시오. 즉, Petar의 제안에 따라 경로를 적절하게 조정할 수 있습니다. –