26 std::vector<priority_t> region_function(graph.
V(), 0);
38 for (
verti v = 0; v < graph.
V(); ++v) {
42 lowestRegion = std::max(lowestRegion,
game().priority(v));
46 m_regions = std::vector<verti>(lowestRegion + 1, 0);
56 query(region_function, strategy, prio);
58 if (
isOpen(region_function, prio,
true)) {
66 if (!
isOpen(region_function, prio,
false)) {
74 if (region_function[v] == prio) {
92 if (region_function[v] == prio) {
140 if (region_function[v] == prio) {
153 std::deque<verti>& todo,
161 while (!todo.empty()) {
162 const verti w = todo.front();
172 if (region_function[v] == prio || region_function[v] ==
COMPUTED_REGION || (inSubgraph && region_function[v] < prio))
continue;
181 bool isSubset =
true;
188 if (region_function[x] == prio || region_function[x] ==
COMPUTED_REGION) {
193 if (region_function[x] > prio || !inSubgraph) {
194 isSubset =
false;
break;
214 region_function[v] = prio;
230 if (region_function[w] == prio) {
259 if (region_function[v] == prio) {
270 && ((inSubgraph && region_function[u] > prio)
271 || (!inSubgraph && region_function[u] != prio))) {
286 if (region_function[u] == prio) {
317 if (region_function[v] == prio &&
game().
player(v) != alpha) {
323 if (region_function[u] < prio) {
324 promotion = std::max(promotion, region_function[u]);
336 if (region_function[v] == prio) {
340 region_function[v] = promotion;
345 else if (region_function[v] > promotion) {
370 if (region_function[v] == prio) {
std::size_t verti
type used to number vertices
const ParityGame & game() const
const ParityGame & game_
Game being solved.
priority_t priority(verti v) const
Player player(verti v) const
const StaticGraph & graph() const
std::vector< verti > Strategy
const_iterator succ_end(verti v) 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
#define mCRL2log(LEVEL)
mCRL2log(LEVEL) provides the stream used to log.