CSBitVectorsC#中的简洁位向量实现
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
select vec k b
下载地址
用户评论