首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Graphs.jl改变顶点值

用Graphs.jl改变顶点值
EN

Stack Overflow用户
提问于 2014-07-04 16:52:09
回答 1查看 277关注 0票数 2

我正在尝试使用模块Ising模型制作一个图形(以模拟2D Graphs.jl )。

我已经发现了如何用问题构造一个简单的图,但是,使用所提供的答案,我无法找到改变顶点值的方法。也许我应该尝试另一种图形类型,但我真的无法理解文档来找到答案

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-12 05:00:45

这个包看起来不错,但是简单的图有整数作为顶点,所以你不能给它们贴上标签。因此,您必须使用更通用的类型ExVertexExEdge 请看这里。正确使用此接口需要构造正确的类型,这很难使用REPL。这里有一个模块,您可以使用它来帮助图形构造。

代码语言:javascript
复制
module GraphUtil
   import Graphs
   export empty_graph,add_label!,add_connection!

   function empty_graph()
      va::Array{Graphs.ExVertex,1} = {}
      ea::Array{Graphs.ExEdge{Graphs.ExVertex},1} = {}
      G = Graphs.graph(va,ea)
   end

   function add_label!(G,s::String)
      v = Graphs.ExVertex(Graphs.num_vertices(G) + 1,s)
      Graphs.add_vertex!(G,v)
      v
   end

   function add_connection!(G,from::Int,to::Int)
      va = Graphs.vertices(G)
      e = Graphs.ExEdge(Graphs.num_edges(G) + 1,va[from],va[to])
      Graphs.add_edge!(G,e)
      e
   end
end

一旦访问了通用图,就可以很容易地设置顶点标签。

代码语言:javascript
复制
julia> using Graphs
julia> using GraphUtil
julia> G = empty_graph()
Directed Graph (0 vertices, 0 edges)

G添加标记为"a“和"b”的新顶点;它们将具有索引1和2

代码语言:javascript
复制
julia> add_label!(G,"a")
vertex [1] "a"
julia> add_label!(G,"b")
vertex [2] "b"

连接顶点1和顶点2

代码语言:javascript
复制
julia> add_connection!(G,1,2)
edge [1]: vertex [1] "a" -- vertex [2] "b"

获取顶点列表

代码语言:javascript
复制
julia> va = vertices(G)
2-element Array{ExVertex,1}:
 vertex [1] "a"
 vertex [2] "b"

更改顶点1的标签和/或属性

代码语言:javascript
复制
julia> va[1].label = "c"
"c"

julia> vertices(G)
2-element Array{ExVertex,1}:
 vertex [1] "c"
 vertex [2] "b"

julia> va[1].attributes["weight"] = 2
2

julia> vertices(G)[1].attributes
Dict{UTF8String,Any} with 1 entry:
  "weight" => 2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24578430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档