0
Gremlin/TinkerPop 쿼리 언어를 사용하면 방향성이있는 비순환 그래프의 위상 순서를 계산할 수 있습니까?Gremlin의 위상 별 정렬
예를 들어, I는 다음과 같은 순서, 위상 중 하나를 획득하려는 다음 에지
a -> b, a -> d, b -> c, c -> d, e -> c
와 그래프 주어진 : a, b, e, c, d
또는 a, e, b, c, d
또는 e, a, b, c, d
한다.
g = TinkerGraph.open().traversal()
g.addV(id, "a").as("a").
addV(id, "b").as("b").
addV(id, "c").as("c").
addV(id, "d").as("d").
addV(id, "e").as("e").
addE("link").from("a").to("b").
addE("link").from("a").to("d").
addE("link").from("b").to("c").
addE("link").from("c").to("d").
addE("link").from("e").to("c").iterate()
을 그리고 이것은 그렘린에 Kahn's algorithm를 구현됩니다 :
이 예를 들어 그래프'주어진 올바른 위상 순서를 제공하지 않습니다 -> b, b -> c, c -> d, a -> d' 질의는'a, d, b, c'를 반환하지만 정답은'a, b, c, d '이다. 부수적으로 타임 아웃을 발생시키지 않고이 쿼리를 실행하기 위해서 나는 거대한 DAG를 가지고 있기 때문에'repeat (...) '안에'dedup()'을 옮겨야했다. 나는 그것이 의미 론적으로 동등하다고 생각한다. – Federico
업데이트 됨. 샘플 그래프와 예상 결과는 많은 도움이되었습니다. –
고마워요! 그래프에 루프가 있어도 종료됩니다. 완벽합니다. – Federico