【发布时间】:2010-11-28 21:07:19
【问题描述】:
我有一个排序图,当我加载边时,我使用哈希表来查找顶点。边缘按源排序,因此我只需要查找“更深”的顶点。如果给定边的源顶点在 n 级别,则汇顶点必须在 m 级别,其中 m > n。我需要利用这种行为来提高性能。
“理想”的幼稚解决方案是每个级别的哈希表,我可以使用该级别找到正确的表,然后在表中找到元素。这也让我能够在源级别 n 大于级别时回收内存的额外好处。不幸的是,图表对于这种方法来说太大了,10^6 个级别和 10^9 个顶点。
有人对我应该查看什么数据结构有任何建议吗? 格拉西亚斯
【问题讨论】:
-
为什么每个级别都需要一个哈希表?仅仅拥有一个普通的图结构有什么问题(为每个节点分配内存并有一个从每个节点到每个接收器的指针)?这仍然可以让您查找任何顶点,给定它的地址,并且从每个顶点中您可以找到它指向的所有顶点。也许我不明白您需要执行哪些操作。
-
我正在创建和“着色”图表。我有一个包含所有边的文件,当我遇到新顶点时读取文件时,我给它一个颜色。问题是我只想为新顶点着色,我不想保留所有顶点的“平面”散列。我找不到节点并查找其邻居,因为我仍在创建图形,或者更确切地说是从磁盘加载它。