【问题标题】:storing the graph with unknown nodes order以未知节点顺序存储图
【发布时间】:2012-01-25 09:08:14
【问题描述】:

将具有未知节点顺序的图存储在向量中的最佳方法是什么。例如,我的节点以未知顺序出现,例如 35,23,89,200,12,89,569 等...我想以不浪费内存的方式存储它们,并且如果在恒定时间内有效访问节点这将会非常棒。可能有些散列函数会起作用,但如果有一个可以区分节点的函数,请告诉我或者是否有其他方法。

谢谢

【问题讨论】:

  • 数字代表什么?节点只包含整数?
  • 这些是节点号 node # 35, node # 200 这样的

标签: algorithm graph graph-algorithm storing-data


【解决方案1】:

我想到的最简单的解决方案是将它们按顺序插入到您的向量中,并创建一个map<int,int> 以将它们的值映射到它们的索引。

在你的例子中:

map[35] == 0
ma[[23] == 1
map[89] == 2
map[200] == 3
map[12] == 4
...

现在,以vector[map[i]] 的身份访问节点i

编辑:
第二种可能性是使用set 而不是vector 来保存元素,但可能并不总是需要[set 没有重复项,并且不会按照您插入它们的顺序包含元素],但是考虑一下它是否适合你。

【讨论】:

  • 为什么不直接使用从索引到节点类/结构的映射? map 在内部也被实现为二叉树,你最好使用像 boost 中的哈希映射。
猜你喜欢
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多