【问题标题】:How to copy an Erlang digraph?如何复制 Erlang 有向图?
【发布时间】:2016-06-19 14:01:02
【问题描述】:

如何复制 Erlang 有向图?文档中似乎没有复制功能。我必须手动构建副本吗?

我正在用 Elixir 编码。

【问题讨论】:

  • 为什么要复制非可变变量?
  • @Pascal 有向图在 erlang 中是可变的,出于性能原因,它们使用 ETS。
  • 谢谢,这对性能来说是有意义的,但它看起来很奇怪,我认为文档中应该有一个更大的警告(当你将有向图从一个进程传递到另一个进程时要小心......也许制作副本的原因:o)
  • 图表不能被创建者以外的任何进程改变。也有一些标志使其无法被其他进程读取。 :)

标签: erlang elixir directed-graph


【解决方案1】:

我认为复制整个二合字母的最佳方法是将digraph_utils:subgraph/2Vertices = digraph:vertices(Digraph) 结合使用。

测试:
Digraph 中创建A->B 图,将其复制到Digraph2 并通过仅将"C" 顶点添加到Digraph2 来检查它是否是不同的图。

1> Digraph = digraph:new().
{digraph,16400,20497,24594,true}
2> digraph:add_vertex(Digraph,"A").
"A"
3> digraph:add_vertex(Digraph,"B").
"B"
4> digraph:add_edge(Digraph,"A","B").
['$e'|0]
5> Digraph2 = digraph_utils:subgraph(Digraph, digraph:vertices(Digraph)). 
{digraph,28691,32788,36885,true}
6> digraph:add_vertex(Digraph2, "C").
"C"
7> digraph:vertices(Digraph).
["B","A"]
8> digraph:vertices(Digraph2).
["C","B","A"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2019-10-22
    • 2014-08-26
    • 2013-01-24
    • 1970-01-01
    • 2019-05-16
    相关资源
    最近更新 更多