19 insert_id_(order < HEAP ? new uint64_t[game.graph().V()] : 0),
20 pq_pos_(new
verti[game.graph().V()]),
21 pq_(new
verti[game.graph().V()]), pq_size_(0)
29 for (
verti j; i > 0 &&
cmp(i, j = (i - 1)/2) > 0; i = j)
swap(i, j);
109 static long long ops;
119 for (std::vector<verti>::iterator it =
bumped_.begin();
138 for (std::vector<verti>::reverse_iterator it =
bumped_.rbegin();
149 Logger::debug(
"checking heap integrity");
170 return (x > y) - (x < y);
182 const verti *w1,
const verti *w2,
int w_len,
bool w_carry )
184 for (
int i = 0; i < v_len || i < w_len; ++i)
186 int a = i < v_len ? v2[i] - v1[i] : 0;
187 int b = i < w_len ? w2[i] - w1[i] : 0;
188 if (a != b)
return (a > b) - (a < b);
190 if (v_carry || w_carry)
192 if (!w_carry)
return +1;
193 if (!v_carry)
return -1;
194 if (v_len < w_len)
return +1;
195 if (v_len > w_len)
return -1;
252 if (
cmp(i, (i - 1)/2) > 0)
return false;
261 for (
verti v = 0; v < V; ++v)
std::size_t verti
type used to number vertices
static int cmp_step(const verti *v1, const verti *v2, int v_len, bool v_carry, const verti *w1, const verti *w2, int w_len, bool w_carry)
static int cmp_ids(uint64_t x, uint64_t y)
const std::unique_ptr< verti[]> pq_pos_
for each vertex: position in the p.q. or -1
std::unique_ptr< uint64_t[]> insert_id_
for each vertex: last insertion time
const Order order_
vertex extraction order
const std::unique_ptr< verti[]> pq_
priority queue of lifted vertices
const SmallProgressMeasures & spm_
SPM instance being solved.
uint64_t next_id_
number of insertions
MaxMeasureLiftingStrategy2(const ParityGame &game, const SmallProgressMeasures &spm, Order order, Metric metric)
verti pq_size_
priority queue size
int cmp(verti i, verti j)
void swap(verti i, verti j)
std::vector< verti > bumped_
const Metric metric_
comparison metric
const MaxMeasureLiftingStrategy2::Order order_
const MaxMeasureLiftingStrategy2::Metric metric_
LiftingStrategy * create(const ParityGame &, const SmallProgressMeasures &)
bool supports_version(int version)
LiftingStrategy2 * create2(const ParityGame &game, const SmallProgressMeasures &spm)
const StaticGraph & graph() const
std::size_t len_
length of SPM vectors
bool compare_strict(verti v) const
const ParityGame & game() const
verti get_successor(verti v) const
int vector_cmp(const verti vec1[], const verti vec2[], int N) const
virtual const verti * vec(verti v) const =0
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.