C# Class StopGuessing.DataStructures.FilterArray

A FilterArray is a bit array that contains additional methods to support probabilistic data structures that map elements (keys) to a set of deterministic, pseudorandom indexes in the bit array. These methods support data structures such as bloom filters and binomial ladder filters that store information about an element within the bits at the indexes that are pseudorandomly associated with the element.
Exibir arquivo Open project: Microsoft/StopGuessing Class Usage Examples

Protected Properties

Property Type Description
BitArray System.Collections.BitArray
HashFunctionsMappingElementsToBitsInTheArray StopGuessing.EncryptionPrimitives.UniversalHashFunction[]

Public Methods

Method Description
AssignBit ( int indexOfTheBitToAssign, bool desiredValue ) : bool

Assign the bit at a given index to a desired value, and return true if and only if the bit was already set to that value.

AssignRandomBit ( int value ) : void

Assign the value of either zero or one to a randomly-selected bit of the filter array.

ClearBitToZero ( int indexOfBitToClear ) : bool

Clear the bit an in index to zero (false).

ClearRandomBitToZero ( ) : void

Clear a randomly-selected bit of the filter array to zero.

FilterArray ( int numberOfBitsInArray, int maximumBitIndexesPerElement, bool initilizeBitsOfArrayAtRandom, string saltForHashFunctions = "" ) : System

Construct a filter array.

GetIndexesAssociatedWithAnElement ( byte element, int numberOfIndexesRequested = null ) : IEnumerable

Map a element to its corresponding bits in the array.

GetIndexesAssociatedWithAnElement ( string element, int numberOfIndexesRequested = null ) : IEnumerable

Get the set of indexes associated with an element.

SetBitToOne ( int indexOfBitToSet ) : bool

Set the bit an in index to one (true).

SetRandomBitToOne ( ) : void

Set a randomly-selected bit of the filter array to one.

SwapBits ( int indexA, int indexB ) : void

Swap the values of the bits at two indexes into the filter array.

this ( int index ) : bool

Read or write bits of the filter array directly.

Method Details

AssignBit() public method

Assign the bit at a given index to a desired value, and return true if and only if the bit was already set to that value.
public AssignBit ( int indexOfTheBitToAssign, bool desiredValue ) : bool
indexOfTheBitToAssign int The index of the bit to set.
desiredValue bool The value to set the bit to.
return bool

AssignRandomBit() public method

Assign the value of either zero or one to a randomly-selected bit of the filter array.
public AssignRandomBit ( int value ) : void
value int The value to be assigned. Passing 0 causes a value 0 (false) to be stored /// and passing any other value causes a one (true) to be stored in the randomly-selected bit.
return void

ClearBitToZero() public method

Clear the bit an in index to zero (false).
public ClearBitToZero ( int indexOfBitToClear ) : bool
indexOfBitToClear int The index of the bit to clear.
return bool

ClearRandomBitToZero() public method

Clear a randomly-selected bit of the filter array to zero.
public ClearRandomBitToZero ( ) : void
return void

FilterArray() public method

Construct a filter array.
public FilterArray ( int numberOfBitsInArray, int maximumBitIndexesPerElement, bool initilizeBitsOfArrayAtRandom, string saltForHashFunctions = "" ) : System
numberOfBitsInArray int The size of the array in bits.
maximumBitIndexesPerElement int The maximum (and default) number of indexes (bits) in the array to associate with elements.
initilizeBitsOfArrayAtRandom bool If set to true, the bits of the filter array will be set to 0 or 1 at random (indpendently, each with probability 0.5).
saltForHashFunctions string A salt used to generate the hash functions. /// Any two filter arrays generated with the same salt will use the same hash functions. /// The salt should be kept secret from attackerse who might try to manipulate the selection of elements, /// such as to intentionally cause bit collisions with the array.
return System

GetIndexesAssociatedWithAnElement() public method

Map a element to its corresponding bits in the array.
public GetIndexesAssociatedWithAnElement ( byte element, int numberOfIndexesRequested = null ) : IEnumerable
element byte The element to be mapped to indexes
numberOfIndexesRequested int The number of indexes to associate with the element. If not set, /// uses the MaximumBitIndexesPerElement specified in the constructor.
return IEnumerable

GetIndexesAssociatedWithAnElement() public method

Get the set of indexes associated with an element.
public GetIndexesAssociatedWithAnElement ( string element, int numberOfIndexesRequested = null ) : IEnumerable
element string The value that should be associated with a set of indexes.
numberOfIndexesRequested int The optional number of indexes to associate with the element. If not provided, /// the number of indexes returned will be equal to the default (MaximumBitIndexesPerElement) set in the constructor.
return IEnumerable

SetBitToOne() public method

Set the bit an in index to one (true).
public SetBitToOne ( int indexOfBitToSet ) : bool
indexOfBitToSet int The index of the bit to set.
return bool

SetRandomBitToOne() public method

Set a randomly-selected bit of the filter array to one.
public SetRandomBitToOne ( ) : void
return void

SwapBits() public method

Swap the values of the bits at two indexes into the filter array.
public SwapBits ( int indexA, int indexB ) : void
indexA int Index to the first of the two bits to swap.
indexB int Index to the second of the two bits to swap.
return void

this() public method

Read or write bits of the filter array directly.
public this ( int index ) : bool
index int The index of the bit to read/write.
return bool

Property Details

BitArray protected_oe property

The bit array used by a filter
protected BitArray,System.Collections BitArray
return System.Collections.BitArray

HashFunctionsMappingElementsToBitsInTheArray protected_oe property

The hash functions used to index into the bit array to map elements to a set of bits
protected UniversalHashFunction[],StopGuessing.EncryptionPrimitives HashFunctionsMappingElementsToBitsInTheArray
return StopGuessing.EncryptionPrimitives.UniversalHashFunction[]