У меня есть простой график с узлами, которые представляют собой повторяющийся идентификатор записи в приведенной ниже форме.
Duplicate Id, Original Id
A,B
B,C
C,D
X,Y
Y,Z
Направленный граф выглядит как A - ›B -› C - ›D, и мне нужен результат CSV, который выглядит как ниже, который имеет каждый узел с конечным листовым узлом без более исходящих ребер.
A,D
B,D
C,D
X,Z
Y,Z
Выше приведен упрощенный сценарий для объяснения проблемы, однако фактические данные будут иметь более сложные сценарии, как показано ниже, где у меня есть 24 узла от A до X, где каждый узел подключен к другим 23, имеющим 24C2 = 276 направленных ребер, и для каждого из 24 узлов I требуется конечный узел, у которого больше нет исходящих ребер.
A,B
A,C
A,D
A,E
A,F
A,G
A,H
A,I
A,J
A,K
A,L
A,M
A,N
A,O
A,P
A,Q
A,R
A,S
A,T
A,U
A,V
A,W
A,X
B,C
B,D
B,E
B,F
B,G
B,H
B,I
B,J
B,K
B,L
B,M
B,N
B,O
B,P
B,Q
B,R
B,S
B,T
B,U
B,V
B,W
B,X
C,D
C,E
C,F
C,G
C,H
C,I
C,J
C,K
C,L
C,M
C,N
C,O
C,P
C,Q
C,R
C,S
C,T
C,U
C,V
C,W
C,X
D,E
D,F
D,G
D,H
D,I
D,J
D,K
D,L
D,M
D,N
D,O
D,P
D,Q
D,R
D,S
D,T
D,U
D,V
D,W
D,X
E,F
E,G
E,H
E,I
E,J
E,K
E,L
E,M
E,N
E,O
E,P
E,Q
E,R
E,S
E,T
E,U
E,V
E,W
E,X
F,G
F,H
F,I
F,J
F,K
F,L
F,M
F,N
F,O
F,P
F,Q
F,R
F,S
F,T
F,U
F,V
F,W
F,X
G,H
G,I
G,J
G,K
G,L
G,M
G,N
G,O
G,P
G,Q
G,R
G,S
G,T
G,U
G,V
G,W
G,X
H,I
H,J
H,K
H,L
H,M
H,N
H,O
H,P
H,Q
H,R
H,S
H,T
H,U
H,V
H,W
H,X
I,J
I,K
I,L
I,M
I,N
I,O
I,P
I,Q
I,R
I,S
I,T
I,U
I,V
I,W
I,X
J,K
J,L
J,M
J,N
J,O
J,P
J,Q
J,R
J,S
J,T
J,U
J,V
J,W
J,X
K,L
K,M
K,N
K,O
K,P
K,Q
K,R
K,S
K,T
K,U
K,V
K,W
K,X
L,M
L,N
L,O
L,P
L,Q
L,R
L,S
L,T
L,U
L,V
L,W
L,X
M,N
M,O
M,P
M,Q
M,R
M,S
M,T
M,U
M,V
M,W
M,X
N,O
N,P
N,Q
N,R
N,S
N,T
N,U
N,V
N,W
N,X
O,P
O,Q
O,R
O,S
O,T
O,U
O,V
O,W
O,X
P,Q
P,R
P,S
P,T
P,U
P,V
P,W
P,X
Q,R
Q,S
Q,T
Q,U
Q,V
Q,W
Q,X
R,S
R,T
R,U
R,V
R,W
R,X
S,T
S,U
S,V
S,W
S,X
T,U
T,V
T,W
T,X
U,V
U,W
U,X
V,W
V,X
W,X
Вот графическая визуализация с использованием Neo4j -
В приведенном выше случае каждый узел от A до W будет иметь X как конечный узел листа.
Также будут циклические циклы, которых мне нужно избегать в общем решении. Сложить все за один шаг может быть слишком много, но мы будем благодарны за руководство.
Обновление: 2020-10-15. Оптимизация обхода необходима для оптимизации выполнения поиска пути от начального узла к конечному узлу.
Для приведенного ниже сценария данных результат для вершин A и B должен быть
A,G
A,H
B,G
B,H
Кратчайший путь от A до G - A- ›C-› E- ›G; возможно ли подавить любые дальнейшие переходы от A к G, когда найден любой 1 кратчайший путь к конечному узлу? иначе это приведет к нежелательному выполнению, особенно для больших кластеров подключенных узлов. Эти шаги необходимо повторить еще раз от A до H, путь которого будет A- ›C-› F- ›H, а затем предотвратить любые дальнейшие попытки найти пути между A и H.
Спасибо
addV
иaddE
, которые строят небольшой график, представляющий ваш вариант использования. - person Kelvin Lawrence   schedule 22.09.2020