什么是桶或双桶数据结构?

时间:2017-02-22 18:21:19

标签: algorithm data-structures dijkstra bucket

我正在阅读有关最短路径算法实现的一些内容,并且已经反复尝试使用Double-Bucket数据结构实现Dijkstra算法是一个很好的实现。

然而,我似乎无法找到双桶实现的实际含义,维基百科上的文章有点模糊。从我所见,它类似于哈希表/地图。我以前从未在数据结构或算法类中听说过这个。

我正在阅读的特定论文是这个,

Cherkassky,B。V.,Goldberg,A。V.,& Radzik,T。(1996)。最短路径算法:理论和实验评估。数学规划,73(2),129-174。

1 个答案:

答案 0 :(得分:3)

桶数据结构是使用键值作为桶的索引的数据结构,并且将相同键值的项存储在相应桶中。当然,使用具有整数键值的桶数据结构是最有意义的。

假设B是一个存储桶数据结构,以便存储桶B[x]存储键值为x的所有项目。

使用最短路径问题作为示例,如果Frontier集中有3个节点uvw,则当前已知的最短距离为3,3和7,分别是B[3] = {u, v}B[7] = {w}

与最短路径问题相关的存储区数据结构的时间分析:

  • 插入:O(1)
  • 删除:O(1)
  • 减少密钥:O(1)
  • 查找最低要求:O(c),其中c是最大键值。

因此,如果使用存储桶数据结构实现Dijkstra算法,则总时间复杂度为O(m + nc),其中m为边数,n为节点数。

双桶数据结构在大多数情况下是指桶数据结构,其中每个桶包含桶数据结构。