Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Operator graph-shortest-paths znajduje najkrótsze ścieżki między zestawem węzłów źródłowych a zestawem węzłów docelowych na grafie i zwraca tabelę z wynikami.
Uwaga
Ten operator jest używany z operatorem make-graph.
Składnia
G|graph-shortest-paths [output=OutputOption] [where] project [ ...]
Parametry
Notacja wzorca ścieżki
W poniższej tabeli przedstawiono obsługiwane notacje wzorców ścieżek.
| Składnik | Nazwana zmienna | Element anonimowy |
|---|---|---|
| Węzeł |
(
n) |
() |
| Skierowana krawędź od lewej do prawej |
-[
e]-> |
--> |
| Skierowana krawędź od prawej do lewej |
<-[
e]- |
<-- |
| Dowolna krawędź kierunku |
-[
e]- |
-- |
| Krawędź zmiennej długości |
-[
e*3..5]- |
-[*3..5]- |
Krawędź zmiennej długości
Krawędź o zmiennej długości umożliwia wielokrotne powtarzanie określonego wzorca w ramach zdefiniowanych limitów. Gwiazdka (*) określa ten typ krawędzi, a następnie minimalne i maksymalne wartości wystąpień w formacie min..maksimum. Te wartości muszą być skalarnymi liczbami całkowitymi. Każda sekwencja krawędzi w tym zakresie może być zgodna ze zmienną krawędzią wzorca, pod warunkiem, że wszystkie krawędzie w sekwencji spełniają where ograniczenia klauzuli.
Zwraca
Operator graph-shortest-paths zwraca wynik tabelaryczny, w którym każdy rekord odpowiada ścieżce znalezionej na grafie. Zwrócone kolumny są definiowane w klauzuli project operatora przy użyciu właściwości węzłów i krawędzi zdefiniowanych we wzorcu. Właściwości i funkcje właściwości krawędzi o zmiennej długości są zwracane jako tablica dynamiczna. Każda wartość w tablicy odpowiada wystąpieniu krawędzi zmiennej długości.
Przykłady
W poniższym przykładzie pokazano, jak za pomocą graph-shortest-paths operatora znaleźć najkrótszą ścieżkę między dwoma stacjami w sieci transportowej. Zapytanie konstruuje graf z danych w connections obiekcie i znajduje najkrótszą ścieżkę z "South-West""North" do stacji, biorąc pod uwagę ścieżki do pięciu połączeń długich. Ponieważ domyślne dane wyjściowe to any, znajduje dowolną najkrótszą ścieżkę.
let connections = datatable(from_station:string, to_station:string, line:string)
[
"Central", "North", "red",
"North", "Central", "red",
"Central", "South", "red",
"South", "Central", "red",
"South", "South-West", "red",
"South-West", "South", "red",
"South-West", "West", "red",
"West", "South-West", "red",
"Central", "East", "blue",
"East", "Central", "blue",
"Central", "West", "blue",
"West", "Central", "blue",
];
connections
| make-graph from_station --> to_station with_node_id=station
| graph-shortest-paths (start)-[connections*1..5]->(destination)
where start.station == "South-West" and destination.station == "North"
project from = start.station, path = map(connections, to_station), line = map(connections, line), to = destination.station
Wyjście
| z | ścieżka | linia | na wartość |
|---|---|---|---|
| South-West (Południowy zachód) | [ "Południe", "Środkowy", "Północ" ] |
[ "czerwony", "czerwony", "czerwony" ] |
Północ |
Poniższy przykład, podobnie jak w poprzednim przykładzie, znajduje najkrótsze ścieżki w sieci transportowej. Jednak używa output=allmetody , więc zwraca wszystkie najkrótsze ścieżki.
let connections = datatable(from_station:string, to_station:string, line:string)
[
"Central", "North", "red",
"North", "Central", "red",
"Central", "South", "red",
"South", "Central", "red",
"South", "South-West", "red",
"South-West", "South", "red",
"South-West", "West", "red",
"West", "South-West", "red",
"Central", "East", "blue",
"East", "Central", "blue",
"Central", "West", "blue",
"West", "Central", "blue",
];
connections
| make-graph from_station --> to_station with_node_id=station
| graph-shortest-paths output=all (start)-[connections*1..5]->(destination)
where start.station == "South-West" and destination.station == "North"
project from = start.station, path = map(connections, to_station), line = map(connections, line), to = destination.station
Wyjście
| z | ścieżka | linia | na wartość |
|---|---|---|---|
| South-West (Południowy zachód) | [ "Południe", "Środkowy", "Północ" ] |
[ "czerwony", "czerwony", "czerwony" ] |
Północ |
| South-West (Południowy zachód) | [ "Zachód", "Środkowy", "Północ" ] |
[ "czerwony", "niebieski", "czerwony" ] |
Północ |