我需要存储图形分区的数据分组节点,例如:
[节点 1, 节点 2] [节点 3] [节点 4, 节点 5, 节点 6]
我的第一个想法是只有一个简单的 vector 或整数数组,其中数组中的位置表示 node_id,它的值是某种 group_id
问题是许多分区算法依赖于对组内的节点对进行操作。使用这种方法,我认为我会浪费大量计算来搜索 vector 以找出哪些节点属于同一组。
我也可以存储为一组 STL 集合,这似乎更接近分区的数学定义,但我的印象是不建议或不需要嵌套集合,我需要修改我的内部集合我不确定是否可能。
有什么建议吗?
最佳答案
根据你想对集合做什么,你可以尝试 disjoint set data structure .在这个结构中,每个元素都有一个方法 find
返回它所属集合的“代表”。
C++ 实现在 Boost 中可用.
关于c++ - 适合集合(图形)分区的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713658/