假设我有一个“重”节点的图形,即每个节点都是一个已经携带大量数据的对象。我想进行图形转换,要求我为每个节点计算一个特殊属性。只需临时记住此属性即可应用转换。如何有效地存储此属性?
为每个节点添加一个special_property字段似乎是浪费,因为我只需要在短时间内记住它。另一种可能性是创建一个“阴影”图形,它是一个与原始图形具有完全相同连接的图形,只存储了special_property,尽管这看起来很笨拙。
解决这个问题的普遍可接受的方法是什么?
答案 0 :(得分:1)
每个节点都应该有一个小整数标识符。将其用作索引以将属性存储在临时数组中。除了O(1)访问时间外,数组还具有处理器缓存的强大数据局部性。
答案 1 :(得分:1)
“重”对象不应该是图中的实际节点。图中的每个节点都应该有一个指向它所代表的“重”对象的指针,以及在图形上操作时需要的其他任何属性。
答案 2 :(得分:0)