存储具有未知节点顺序的图形

时间:2012-01-25 09:08:15

标签: algorithm graph graph-algorithm storing-data

在向量中存储具有未知节点顺序的图的最佳方法是什么。例如,我有节点以35,23,89,200,12,89,569等未知顺序进入...我想以这样的方式存储它们,即内存不会浪费,如果在恒定时间内节点被有效访问这将会非常棒。可能是某些哈希函数可以工作,但如果有一个可以区分节点,请告诉我或是否有任何其他方法。

谢谢

1 个答案:

答案 0 :(得分:1)

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

在你的例子中:

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

现在,以i

的身份访问节点vector[map[i]]

修改
第二种可能性是使用set代替vector来保存元素,但可能并不总是需要[set没有重复,并且不会按顺序包含元素插入它们,但考虑它是否适合你。