2017-10-27 1 views
1

ArangoDB에서 최단 경로의 다양한 변종을 찾을 수 있습니까? 나는 첫번째 경로처럼, 많은 변종을 찾을 필요 - 거리를 2 제 2 경로 거리 3 등arangoDB에서 다중 경로 검색

이 있습니까 OOB가 algrorithm 포함되어 있습니까? 검색 결과에서 필수 노드를 지정하고 싶습니다.

벡터 가중치가 지원됩니까? 무게는 우선 순위에 따라 가중치가 적용되는 배열이 특징입니다.

미리 감사드립니다.

+0

이들은 세 가지 질문이며 별도로 게시해야합니다. 2와 3을 추가 설명과 함께 게시하십시오. 데이터베이스 쿼리 및 예상되는 결과에 대해 묻고있는 것이 명확하지 않으므로 게시하십시오. – CoDEmanX

답변

1

최단 경로 알고리즘은 하나의 최단 경로 만 결정할 수 있습니다. 이것은 전체 그래프 예를 들어
:

example graph

... 다음 C-A 최단 경로 조회 경로 A -> B -> C 또는 A -> D -> C을 반환하지만, 그 어느 미정의 (에지를 참가 여기에 가중치).

하면 최단 경로 길이를 결정하지만 효율적인 최단 경로 알고리즘을 사용할 수

RETURN LENGTH(
    FOR v IN OUTBOUND 
    SHORTEST_PATH "verts/A" TO "verts/C" edges 
    RETURN v 
) 

결과는 예시적인 그래프 3은 (개시 정점을 포함한다). 이제, 1을 뺀 다음 가장자리 수/통과 깊이를 구합니다. 패턴 매칭 트래버스를 실행하여이 길이를 가진 모든 경로를 찾을 수 있습니다 (최소 깊이와 최대 깊이를 늘림으로써 길이가 긴 경로). 포인트를 시작하면 다시 A이며, v (또는 p.vertices[-1])의 문서 ID에 필터 우리는 C에 종료 경로 검색 보장 :

FOR v, e, p IN 2..2 OUTBOUND "verts/A" edges 
    FILTER v._id == "verts/C" 
    RETURN CONCAT_SEPARATOR(" -> ", p.vertices[*]._key) 
[ 
    "A -> B -> C", 
    "A -> D -> C" 
] 

3..3의 탐색 깊이가 A -> E -> F -> C을 반환을 , 그리고 세 경로 모두 2..3.

최소 및 최대 깊이가 표현이 될 수 없기 때문에 최단 경로 길이를 계산하고 최단 경로 길이 (1을 기준으로 함)를 기반으로 패턴 일치를 수행하려면 두 개의 개별 쿼리가 필요합니다. 사전에 숫자 리터럴 또는 바인드 매개 변수가 있어야 함).