gpt4 book ai didi

graph - Julia DiGraph 以用户定义的对象作为节点

转载 作者:行者123 更新时间:2023-12-04 17:09:07 25 4
gpt4 key购买 nike

在 Julia 中,我可以使用编写得很好的 Graphs.jl 库轻松创建图形:

julia> using Graphs
julia> g = SimpleDiGraph(2)
{2, 0} directed simple Int64 graph
julia> add_edge!(g, 1,2)
true
julia> add_edge!(g, 2, 1)
true

但是,我似乎无法将节点设为整数以外的任何值。也就是说,我想做这样的事情:

julia> using Graphs
julia> abstract type Foo end
julia> s = SimpleDiGraph(typeof(Foo)) # doesn't work.
julia> mutable struct Bar <: Foo
b::Bool
end
julia> mutable struct Baz <: Foo
b::Bool
end
julia> bar = Bar(true)
Bar(true)
julia> baz = Baz(false)
Baz(false)
julia> add_edge!(g, bar, baz) # Again, doesn't work.

如何使节点成为自定义类型?

注意:我尝试了以下解决方法,因为节点中似乎只允许整数类型:

julia> add_edge!(g, Int64(pointer_from_objref(bar)), Int64(pointer_from_objref(baz)))

但是这个,虽然没有抛出异常,但返回 false。

最佳答案

在 Graphs.jl tutorial ,声明“整数,而且只有整数,可以用于描述顶点”。所以我的第一个目标是不可能的(尽管它可能在 MetaGraphs.jl 中实现)。建议使用顶点中的整数值作为向量的索引,并将对象存储在向量中。

此外,由于声明目标是索引到向量中,整数必须是连续的,因此我的第二个使用对象地址的想法也不可行。

但是,使用图形索引到向量中对我来说是一个完全可以接受的解决方案。

关于graph - Julia DiGraph 以用户定义的对象作为节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69859608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com