这是什么抽象数据类型?

时间:2017-09-10 19:09:44

标签: algorithm collections abstraction abstract-data-type

以下是常见数据类型(即它是否有名称)?

与常规Set不同,它的独特之处在于它包含了"宇宙"使用O(C)内存开销进行初始化,以及O(N/2)的最大内存开销(仅当您删除其他所有元素时才会发生):

> s = new Structure(701)
s = Structure(0-700)

> s.remove(100)
s = Structure(0-99, 101-700)

> s.add(100)
s = Structure(0-700)

> s.remove(200)
s = Structure(0-199, 201-700)

> s.remove(202)
s = Structure(0-199, 201, 203-700)

> s.removeAll()
s = Structure()

这样的东西有标准名称吗?

2 个答案:

答案 0 :(得分:0)

我过去曾经多次使用它,并且看到它用于多边形裁剪的平面扫描算法等。

有时它所代表的抽象数据类型只是一个集合,而数据结构是一种优化。我使用它来表示由正则表达式给出的匹配字符集,例如[^ a-zA-z0-9.-],并对这些集合执行交集,并集和其他操作。

这种数据结构是在一些其他有序集或映射结构之上实现的,只需存储集合中成员资格的密钥而不是集合本身中的密钥。在我看过这种事情的所有其他情况中,作者引用了底层结构,而不是给概念本身命名。

我喜欢为它命名的想法,因为正如我所说,我已经多次使用过它。也许我会把它称为“in& out set”,以纪念我吃汉堡包时最喜欢的汉堡包。

答案 1 :(得分:0)

这是Compressed Bit SetCompressed Bitmap

Bit SetBitmap是专为存储Integer而设计的集合。大多数语言都提供这些标准的实现。它们通常通过在1的内部数组中为N位分配Integers来工作,其中N是您要添加到集合中的数字。 0表示该值不存在。这些类型的Bit Sets的内存使用量由您存储的最大数量决定。

Compressed Bit Set是压缩01 s范围的工具。

在这种情况下,问题演示了一种称为“run-length-encoding”的压缩(谢谢@Ralf Kleberhoff),因此它特别是Run-length Encoded Bitmap

Compressed Bitmaps的常见实现(从最新到最旧)是: