SDSL: Succinct Data Structure Library
A C++ template library for succinct data structures
|
A class that provides support for bit_vectors that represent a balanced parentheses sequence. Implementation was proposed by Geary et al. (CPM 2004) and extended by Ohlebusch and Gog (SPIRE 2009). More...
#include <bp_support_g.hpp>
Public Types | |
typedef bit_vector::size_type | size_type |
Public Member Functions | |
bp_support_g (const bit_vector *bp=NULL, uint32_t used_block_size=840) | |
Constructor. | |
bp_support_g (const bp_support_g &bp_support) | |
Copy constructor. | |
bp_support_g & | operator= (const bp_support_g &bp_support) |
Assignment operator. | |
void | swap (bp_support_g &bp_support) |
void | set_vector (const bit_vector *bp) |
size_type | excess (size_type i) const |
size_type | rank (size_type i) const |
size_type | select (size_type i) const |
size_type | find_close (size_type i) const |
size_type | find_open (size_type i) const |
Calculate the matching opening parenthesis to the closing parenthesis at position i. | |
size_type | find_open_in_pioneers (size_type i) const |
size_type | enclose (size_type i) const |
Calculate the index of the opening parenthesis corresponding to the closest matching parenthesis pair enclosing i. | |
size_type | rr_enclose (const size_type i, const size_type j) const |
The range restricted enclose operation. | |
size_type | rmq_open (const size_type l, const size_type r) const |
size_type | rr_enclose_naive (size_type i, size_type j) const |
The range restricted enclose operation. | |
size_type | rmq (size_type l, size_type r) const |
The range minimum query (rmq) returns the index of the parenthesis with minimal excess in the range ![]() | |
size_type | double_enclose (size_type i, size_type j) const |
The double enclose operation. | |
size_type | preceding_closing_parentheses (size_type i) const |
Return the number of zeros which procede position i in the balanced parentheses sequence. | |
size_type | size () const |
size_type | serialize (std::ostream &out, structure_tree_node *v=NULL, std::string name="") const |
Serializes the bp_support_g to a stream. | |
void | load (std::istream &in, const bit_vector *bp) |
Load the bp_support_g for a bit_vector v. | |
std::string | get_info () const |
Public Attributes | |
const RankSupport & | bp_rank |
const SelectSupport & | bp_select |
A class that provides support for bit_vectors that represent a balanced parentheses sequence. Implementation was proposed by Geary et al. (CPM 2004) and extended by Ohlebusch and Gog (SPIRE 2009).
This data structure supports the following methods on a bit_vector b that represents a balanced parentheses sequence:
An opening parenthesis in the balanced parentheses sequence is represented by a 1 in the bit_vector and a closing parenthesis by a 0.
This class could be parametrized by four parameters:
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::double_enclose | ( | size_type | i, |
size_type | j | ||
) | const [inline] |
The double enclose operation.
i | Index of an opening parenthesis. |
j | Index of an opening parenthesis ![]() |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::enclose | ( | size_type | i | ) | const [inline] |
Calculate the index of the opening parenthesis corresponding to the closest matching parenthesis pair enclosing i.
i | Index of an opening parenthesis. |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::excess | ( | size_type | i | ) | const [inline] |
Calculates the excess value at index i.
i | The index of which the excess value should be calculated. |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::find_close | ( | size_type | i | ) | const [inline] |
Calculate the index of the matching closing parenthesis to the parenthesis at index i.
i | Index of an parenthesis. 0 <= i < size(). |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::find_open | ( | size_type | i | ) | const [inline] |
Calculate the matching opening parenthesis to the closing parenthesis at position i.
i | Index of a closing parenthesis. |
void sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::load | ( | std::istream & | in, |
const bit_vector * | bp | ||
) | [inline] |
Load the bp_support_g for a bit_vector v.
in | The instream from which the data strucutre is read. |
bp | Bit vector representing a balanced parentheses sequence that is supported by this data structure. |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::preceding_closing_parentheses | ( | size_type | i | ) | const [inline] |
Return the number of zeros which procede position i in the balanced parentheses sequence.
i | Index of an parenthesis. |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::rank | ( | size_type | i | ) | const [inline] |
Returns the number of opening parentheses up to and including index i.
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::rmq | ( | size_type | l, |
size_type | r | ||
) | const [inline] |
The range minimum query (rmq) returns the index of the parenthesis with minimal excess in the range .
l | The left border of the interval ![]() ![]() |
r | The right border of the interval ![]() ![]() |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::rmq_open | ( | const size_type | l, |
const size_type | r | ||
) | const [inline] |
Search the interval [l,r-1] for an opening parenthesis, say i, such that find_close(i) >= r.
l | The left end (inclusive) of the interval to search for the result. |
r | The right end (exclusive) of the interval to search for the result. |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::rr_enclose | ( | const size_type | i, |
const size_type | j | ||
) | const [inline] |
The range restricted enclose operation.
i | Index of an opening parenthesis. |
j | Index of an opening parenthesis/ ![]() |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::rr_enclose_naive | ( | size_type | i, |
size_type | j | ||
) | const [inline] |
The range restricted enclose operation.
i | Index of an opening parenthesis. |
j | Index of an opening parenthesis/ ![]() |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::select | ( | size_type | i | ) | const [inline] |
Returns the index of the i-th opening parenthesis.
i | Number of the parenthesis to select. |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::serialize | ( | std::ostream & | out, |
structure_tree_node * | v = NULL , |
||
std::string | name = "" |
||
) | const [inline] |
Serializes the bp_support_g to a stream.
out | The outstream to which the data structure is written. |
size_type sdsl::bp_support_g< NearestNeighbourDictionary, RankSupport, SelectSupport, RangeMaxSupport >::size | ( | ) | const [inline] |
The size of the supported balanced parentheses sequence.