CSBitVectors 是一个在 C# 中实现的简洁位向量数据结构。简洁位向量是一种利用索引增强的位向量,索引的大小相对于向量本身的大小“无关紧要”。该索引用于在亚线性时间内处理以下查询:
- rank:返回指定范围内 0 或 1 的数量。形式如下:
rank : BitVector -> Nat -> {0, 1} -> Nat
具体实现为:
rank vec k b = |{i | i <- [0, ..., k) vec[i] = b }|
(注意:上面声明的范围是排他性的,即 i <- [0, ..., k)
,但某些形式主义可能使用包含性的定义范围:i <- [0, ..., k]
。)
- select:返回第 k 次出现 0 或 1 的位置。形式如下:
select : BitVector -> Nat -> {0, 1} -> Nat
暂无评论