在Ruby中处理这种情况下的一些集合的合适数据结构是什么?

时间:2015-09-29 14:17:51

标签: ruby

我有一个包含一些节点的图表。我定义了一个名为nodes的集合,其中包含图表中的所有节点(我将节点编号放在集合{1,2,3,4,...}中)。

我还使用此代码为每个节点(例如节点#1)定义了一个集合,其中只包含节点的编号(即{1}):

setsofnode=Hash.new
nodes.each do |i|
  setsofnode[i]=Set.new()
  setsofnode[i].add(i)
end

setsofnode是集合的散列。

我需要合并一些集合,例如节点#1的集合和节点#2的集合。这将是{1,2}并为每个节点使用此集合,而不是将{1}用于节点1,将{2}用于节点2.

我在考虑用setsofnode中的先前集合替换这个新集合,这意味着:

{1} --> {1,2}
{2} --> {1,2}

但如果以这种方式合并大量节点,这将占用大量空间,并且我将拥有如此多的重复集。那么,如果不在{1,2}中定义两次,我怎样才能将节点#1和节点#2引用到setsofnodes?我应该更改我的datastrcutrec(setsofnodes)吗?这些更有效的方法是定义用于存储每个节点包含在哪个集合中的数据结构吗?

0 个答案:

没有答案