假设我有一个带有“重”节点的图,也就是说每个节点都是一个已经承载了大量数据的对象。我想做一个图形转换,它需要我为每个节点计算一个特殊的属性。只需临时记住此属性即可应用转换。如何有效地存储此属性?
向每个节点添加一个special_property字段似乎是一种浪费,因为我只需要记住它很短的一段时间。另一种可能是创建一个“影子”图,这是一个与原始图具有完全相同的连接,并且只存储special_property的图,尽管这看起来很笨拙。
解决此问题的一般可接受方法是什么?
发布于 2009-11-20 10:58:32
每个节点都应该有一个较小的整数标识符。将其用作索引以将属性存储在临时数组中。除了O(1)的访问时间外,数组对于处理器缓存也有很好的数据局部性。
发布于 2009-11-20 11:18:21
“重”对象不应该是图中的实际节点。图中的每个节点都应该有一个指向它所表示的“重”对象的指针,以及在对图进行操作时所需的任何其他属性。
发布于 2009-11-20 10:58:22
查看Boost library
https://stackoverflow.com/questions/1768013
复制相似问题