#python #julia #networkx #lightgraphs
#python #julia #networkx #графические изображения
Вопрос:
Есть ли функция LightGraph в Julia, которая эквивалентна функции предков в Networkx?
Ответ №1:
Возможно, более быстрый способ:
function ancestors(g::SimpleDiGraph{T}, src) where T <: Integer
reverse!(g)
a = Vector{T}()
for (v, d) in enumerate(gdistances(g, src))
if d < typemax(T)
push!(a, v)
end
end
reverse!(g)
return a
end
Ответ №2:
Не изначально, но должно быть легко приблизиться:
function ancestors(g, src)
reverse!(g)
a = reduce(union, enumerate_paths(dijkstra_shortest_paths(g, src))
reverse!(g)
return a
end
Это потребует проверки, и это немного рискованно, если функция завершится раньше второй reverse!
, но это намного эффективнее, чем немутирующая reverse()
.