Line data Source code
1 : // Copyright (c) 2009-2013 University of Twente 2 : // Copyright (c) 2009-2013 Michael Weber <michaelw@cs.utwente.nl> 3 : // Copyright (c) 2009-2013 Maks Verver <maksverver@geocities.com> 4 : // Copyright (c) 2009-2013 Eindhoven University of Technology 5 : // 6 : // Distributed under the Boost Software License, Version 1.0. 7 : // (See accompanying file LICENSE_1_0.txt or copy at 8 : // http://www.boost.org/LICENSE_1_0.txt) 9 : 10 : // Don't include this directly; include ParityGame.h instead! 11 : 12 : #ifndef MCRL2_PG_PARITYGAME_IMPL_H 13 : #define MCRL2_PG_PARITYGAME_IMPL_H 14 : 15 : #include "mcrl2/pg/ParityGame.h" 16 : 17 : template<class ForwardIterator> 18 0 : void ParityGame::make_subgame( const ParityGame &game, 19 : ForwardIterator vertices_begin, 20 : ForwardIterator vertices_end, 21 : bool proper, 22 : StaticGraph::EdgeDirection edge_dir ) 23 : { 24 0 : assert(this != &game); 25 : 26 0 : const verti num_vertices = std::distance(vertices_begin, vertices_end); 27 0 : ForwardIterator it; 28 : verti v; 29 : 30 0 : reset(num_vertices, game.d()); 31 0 : for (it = vertices_begin, v = 0; v < num_vertices; ++v, ++it) 32 : { 33 0 : vertex_[v] = game.vertex_[*it]; 34 : } 35 0 : graph_.make_subgraph(game.graph_, vertices_begin, vertices_end, 36 : proper, edge_dir); 37 0 : recalculate_cardinalities(num_vertices); 38 0 : } 39 : 40 : template<class StrategyT> 41 0 : ParityGame::Player ParityGame::winner(const StrategyT &s, verti v) const 42 : { 43 : /* A vertex is won by its player iff the player has a strategy for it: */ 44 0 : return (s[v] != NO_VERTEX) ? player(v) : opponent(player(v)); 45 : } 46 : 47 : #endif // MCRL2_PG_PARITYGAME_IMPL_H