타이탄 (hbase) 그래프에서 주어진 노드에 공통 조상을 얻고 싶습니다. gremlin을 사용하면 공통 조상을 얻을 수있는 방법이 있습니까? 또는 다른 노드/libs 주어진 노드에 대한 타이탄 그래프에서 공통 조상을 찾을 수 있습니까?타이탄 그래프의 공통 조상 ..
1
A
답변
3
나는 당신이 찾고있는 것을 정확히 가정 할 것이지만, 아마도이 대답은 당신이 찾고있는 것을 생각해 내는데 영감을 줄 것입니다. 나는이 접근법을 보여주기 위해 toy graph을 사용했고, 가장자리가 아이들을 가리키는 방향으로 가정했다. 분명히 이것은 완전한 나무는 아니지만 최소한 순회를 증명할 수있는 충분한 데이터가 있습니다. 다음은 내가 조상 찾기 위해 원하는 누구의 "아이들"을 보여줍니다
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> children = [g.v(2),g.v(5),g.v(6)]
==>v[2]
==>v[5]
==>v[6]
을 내가 할 수있는 재귀 적 조상을 통해 나무를 통해 루프까지 다음과 같이 경로를 참조하십시오
gremlin> children._().in.loop(1){it.loops<5}{true}.path
==>[v[2], v[1]]
==>[v[5], v[4]]
==>[v[5], v[4], v[1]]
위의 라인 캡 조상으로부터 5 단계 떨어져있는 루프와 {true}
클로저는 단순히 루프의 모든 단계에서 값을 출력하는 것을 의미합니다. 이런 의미 v[1]
에서
gremlin> children._().in.loop(1){it.loops<5}{true}.groupCount.cap.next().findAll{it.value>1}
==>v[1]=2
세 개의 자식 노드 사이의 유일한 공통 조상입니다 만 2 세 자식 노드의 그 조상을 공유 공통 조상은 각 경로가 두 번 이상 종료 하나가 될 것입니다.
gremlin> children._().in.loop(1){it.loops<5}{true}.groupCount.cap.next().findAll{it.value>1}
==>v[1]=3
==>v[4]=2
지금
4
을 정점 공통 조상으로 포함되어 있습니다 : 그것은 더 흥미로운 수 있도록하기 위해,이
4
을 정점과 순회를 다시 실행 정점
6
를 연결할 수 있습니다. 그것은 버텍스가
6
이고
5
입니다. 정점
4
의 공유 특성을 감안할 때
6
도 이제 정점
1
을 공유하므로 조상은 세 개의 정점 모두에서 공유됩니다.
업데이트 : 위의 대답은 TinkerPop 2.x 용이고 다음은 TinkerPop 3.x 용입니다.
은이 나무를 감안할 때 :이 항목은 TinkerPop recipes에 자세히 설명되어gremlin> g.V('A').
......1> repeat(out('hasParent')).emit().as('x').
......2> repeat(__.in('hasParent')).emit(hasId('D')).
......3> select('x').limit(1)
==>v[C]
:
gremlin> g.addV().property(id, 'A').as('a').
addV().property(id, 'B').as('b').
addV().property(id, 'C').as('c').
addV().property(id, 'D').as('d').
addV().property(id, 'E').as('e').
addV().property(id, 'F').as('f').
addV().property(id, 'G').as('g').
addE('hasParent').from('a').to('b').
addE('hasParent').from('b').to('c').
addE('hasParent').from('d').to('c').
addE('hasParent').from('c').to('e').
addE('hasParent').from('e').to('f').
addE('hasParent').from('g').to('f').iterate()
는 당신이 공통의 조상을 찾을 수 있습니다.
관련 문제
- 1. 타이탄 : 그래프의 범위 쿼리
- 2. Neo4j 최저 공통 조상
- 3. BeautifulSoup 가장 낮은 공통 조상
- 4. PL/SQL : 공통 조상 클래스?
- 5. HEAD 병합 공통 조상 오류
- 6. Tarjan의 최소 공통 조상 알고리즘 설명
- 7. 델파이의 객체 대리자에 대한 공통 조상
- 8. 이진 검색 트리에서 가장 낮은 공통 조상
- 9. 이진 트리의 첫 번째 공통 조상
- 10. 최저 공통 조상 (LCM) 포함하는 루트 노드
- 11. Tarjan의 오프라인 최소 공통 조상 알고리즘
- 12. NetworkX가있는 모든 가장 낮은 공통 조상
- 13. 이진 트리에서 가장 낮은 공통 조상
- 14. SQL : hierarchyids의 가장 낮은 공통 조상 찾기
- 15. 큰 타이탄 그래프의 모든 꼭지점을 Rexpro를 통해 반복하십시오.
- 16. 조상
- 17. Python : 이진 트리의 가장 낮은 공통 조상 CodeEval에 대한 challenge
- 18. BST의 가장 낮은 공통 조상 (반환 값에서 낯선 행둥)
- 19. 상위 ID가있는 일반 트리에서 가장 낮은 공통 조상 찾기
- 20. 이진 트리의 가장 낮은 공통 조상 (이진 검색 트리가 아님)
- 21. 가장 낮은 공통 조상 알고리즘의 실제 적용은 무엇입니까?
- 22. 은 대상 병합과 공통 조상 사이의 차이를 보여줍니다.
- 23. 내 C++ 코드의 문제점은 무엇입니까? 최소한의 공통 조상
- 24. 두 개 이상의 지점으로 구성된 공통 조상 찾기
- 25. 이진 트리 비 재귀 버전에서 최소한의 공통 조상 검색 - Java
- 26. 이진 트리에서 두 노드의 첫 번째 공통 조상
- 27. 타이탄 : 연결된 버텍스 필터
- 28. 타이탄 그래프 리프 노드
- 29. 타이탄 BluePrints Rexster
- 30. 타이탄 배치 그래프