我正在努力实现dijsktra的算法来遍历图表,我遇到了一个小障碍。
class Node{
private:
int id = -1;
unordered_map<Node*, int> edges;
};
正如您所看到的,图中的每个节点都包含一个id的int以及一个无序映射,其中包含一个节点*作为键值,边长作为底层数据。我遇到的问题是,我不知道如何最好地散列这些内容。
ID将从文件中读入并按顺序编号。在没有多次碰撞的情况下散列这些id的最佳方法是什么?
编辑:我目前只是以一种返回id mod edges.size()的方式进行哈希,但我不相信这是最好的方式。答案 0 :(得分:1)
甚至不打扰% edges.size()
。 unordered_map本身已经执行% this -> _Table.size()
。
请注意,对于稀疏连接的图形(例如&lt; 8 edge / node),简单的std::vector<std::pair<Node*,int>>
可能更有效。