11#ifndef CKPTTN_MIDLEVEL_VERTEX_HPP
12#define CKPTTN_MIDLEVEL_VERTEX_HPP
32 const std::vector<int>&
get_bits()
const {
return bits_; }
34 const int&
operator[](
int i)
const {
return this->bits_[i]; }
35 int size() {
return static_cast<int>(this->bits_.size()); }
36 int size()
const {
return static_cast<int>(this->bits_.size()); }
47 std::vector<int> bits_;
48 void rev_inv(
int left,
int right);
49 int first_touchdown(
int a)
const;
50 int first_dive()
const;
51 void steps_height(std::vector<std::vector<int>>& usteps_neg,
52 std::vector<std::vector<int>>& usteps_pos,
53 std::vector<std::vector<int>>& dsteps_neg,
54 std::vector<std::vector<int>>& dsteps_pos)
const;
55 int count_flaws()
const;
56 int count_ones()
const;
57 void compute_flip_seq_0_rec(std::vector<int>& seq,
int& idx,
int left,
int right,
58 int* next_step)
const;
59 void compute_flip_seq_1_rec(std::vector<int>& seq,
int& idx,
int left,
int right,
60 int* next_step)
const;
61 void aux_pointers(
int a,
int b,
int* next_step)
const;
Bitstring vertex for middle-levels Gray code algorithm.
Definition vertex.hpp:24
void compute_flip_seq_0(std::vector< int > &seq, bool flip)
int size()
Definition vertex.hpp:35
const int & operator[](int i) const
Definition vertex.hpp:34
const std::vector< int > & get_bits() const
Definition vertex.hpp:32
void compute_flip_seq_1(std::vector< int > &seq) const
int & operator[](int i)
Definition vertex.hpp:33
bool is_first_vertex() const
bool is_last_vertex() const
int size() const
Definition vertex.hpp:36
MidVertex(const std::vector< int > &x)
Construct a MidVertex from a bitstring vector.
bool operator!=(const MidVertex &lhs, const MidVertex &rhs)
Inequality comparison for MidVertex.
Definition vertex.hpp:69
bool bitstrings_less_than(const int *x, const int *y, int length)
Lexicographic comparison of bitstrings.
bool operator==(const MidVertex &lhs, const MidVertex &rhs)
Equality comparison for MidVertex.
Definition vertex.hpp:65
bool bitstrings_equal(const int *x, const int *y, int length)
Equality comparison of bitstrings.
std::ostream & operator<<(std::ostream &os, const MidVertex &v)
Stream output operator for MidVertex.