具有O(1)分摊关联查找的静态功能数据结构

时间:2015-02-24 08:37:36

标签: data-structures functional-programming

我正在寻找具有分摊的常量时间关联查找的静态数据结构。我想要执行的唯一操作是查找和构造。功能也是必须的。我看过手指树,但我似乎无法绕过它们。有没有关于它们的好文档,或者更好的是,更简单的静态功能数据结构?

2 个答案:

答案 0 :(得分:1)

我假设“功能”和“静态”是指一个不可变的结构,在构造之后无法修改,“查找”你的意思是字典式,键值查找和“构造”你表示来自给定元素集的数据结构的初始构造。

在这种情况下,基于哈希表的不可变字典将起作用。这样做的缺点是插入和移除 O(N),但是你声明这在你的情况下是可以接受的。

根据您使用的编程语言,可能用于实现此操作的数据类型可能会也可能不可用。在Erlang中可以使用元组。 Haskell在Data.Array.IArray中有一个不可变数组。

答案 1 :(得分:0)

您必须从信息理论的角度来看待这一点:您存储的键/值对越多,您在关联查找中必须识别的键越多。因此,无论你做什么,你拥有的密钥越多,你的查找就越复杂。

只有当您的密钥直接为您提供要查找的元素的地址(或等效的地址)时,才能进行恒定时间查找。

相关问题