图形实现提前了解边缘

时间:2013-01-17 15:37:46

标签: data-structures graph hashtable adjacency-list

我正在寻找一种有效的方法来实现一个加权无向图,只知道提前边的数量。

样本输入:
N(边数)
A B x(x是从A到B的距离)


我认为在动态哈希表中使用Node *的邻接列表(我需要知道邻居)和存储的节点(我不知道我将采用多少个节点,所以我需要一个动态 - 搜索/插入 - 容器)。

有更好的方法吗?

抱歉我的英语不好! :d

1 个答案:

答案 0 :(得分:0)

考虑到你输入的格式,一种非常合理的方法是使用列表的哈希表,其中键是节点,值是(节点,距离)对的列表。或者,如果你有一个密集图并希望能够快速确定从一个节点到另一个节点的距离,那么最好有一个哈希表的哈希表,其中顶级哈希表将节点映射到第二个哈希表,然后将原始节点具有边缘的每个节点映射到其成本。这仍然允许您遍历节点的传出边缘,但可以更快地查找距离。

另一个想法(取决于用例)将首先构建第一个数据结构(列表的哈希表),然后通过构建邻接矩阵来对其进行后处理。如果您不需要遍历节点的传出边缘并且需要快速随机访问节点之间的距离,那么这将非常有用。它类似于哈希表的哈希表,但可能更节省空间。

希望这有帮助!