22 std::vector<verti> res;
30 while (v < w) res.push_back(v++);
34 while (v < V) res.push_back(v++);
35 assert(n == (
verti)res.size());
69 if (!
solve(
game, substrat)) strategy.clear();
96 std::vector<verti> unsolved;
103 for (
verti v = 0; v < V; ++v)
108 assert(!min_prio_attr.
empty());
111 if (min_prio_attr.
size() == V)
break;
121 if (!
solve(subgame, substrat))
return false;
127 for ( std::vector<verti>::const_iterator it = unsolved.begin();
128 it != unsolved.end(); ++it )
136 if (lost_attr.
empty())
break;
148 strat.
swap(substrat);
158 const verti V = graph.
V();
161 for (
verti v = 0; v < V; ++v)
181 for (
verti w = 0; w < V; ++w)
206 const verti *vertex_map,
verti vertex_map_size )
209 (void)vertex_map_size;
std::size_t verti
type used to number vertices
player_t opponent(const player_t p)
static std::vector< verti > get_complement(verti V, const DenseSet< verti > &s)
int first_inversion(const ParityGame &game)
int first_inversion(const ParityGame &game)
void make_attractor_set_2(const ParityGame &game, ParityGame::Player player, SetT &vertices, StrategyT &strategy)
bool aborted()
Returns whether this instance has been aborted.
std::pair< iterator, bool > insert(const Key &k)
const ParityGame & game() const
const ParityGame & game_
Game being solved.
priority_t priority(verti v) const
verti cardinality(int p) const
void make_subgame(const ParityGame &game, ForwardIterator vertices_begin, ForwardIterator vertices_end, bool proper, StaticGraph::EdgeDirection edge_dir=StaticGraph::EDGE_NONE)
Player player(verti v) const
void swap(ParityGame &pg)
void assign(const ParityGame &game)
const StaticGraph & graph() const
std::vector< verti > Strategy
ParityGameSolver * create(const ParityGame &game, const verti *vertex_map, verti vertex_map_size)
Returns a new ResuriveSolver instance.
ParityGame::Strategy solve()
RecursiveSolver(const ParityGame &game)
EdgeDirection edge_dir() const
const_iterator succ_begin(verti v) const
const_iterator pred_begin(verti v) const
const_iterator pred_end(verti v) const
const verti * const_iterator
ParityGame::Player winner(verti v, ParityGame::Player p)
Returns the winner for vertex v assuming it is controlled by p.
void swap(Substrategy &other)
Swaps this substrategy ovbect with another.
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.