* src/tgbaalgos/reductgba_sim_del.cc
(parity_game_graph_delayed::get_relation): Disable for generalized automata, it's wrong.
This commit is contained in:
parent
fc4f4f7288
commit
8a5fd909b3
3 changed files with 12 additions and 46 deletions
|
|
@ -1,3 +1,9 @@
|
||||||
|
2005-06-06 Alexandre Duret-Lutz <adl@src.lip6.fr>
|
||||||
|
|
||||||
|
* src/tgbaalgos/reductgba_sim_del.cc
|
||||||
|
(parity_game_graph_delayed::get_relation): Disable for generalized
|
||||||
|
automata, it's wrong.
|
||||||
|
|
||||||
2005-05-25 Alexandre Duret-Lutz <adl@src.lip6.fr>
|
2005-05-25 Alexandre Duret-Lutz <adl@src.lip6.fr>
|
||||||
|
|
||||||
* src/tgbaalgos/reductgba_sim_del.cc
|
* src/tgbaalgos/reductgba_sim_del.cc
|
||||||
|
|
|
||||||
|
|
@ -69,8 +69,7 @@ namespace spot
|
||||||
int opt = -1);
|
int opt = -1);
|
||||||
|
|
||||||
/// Compute a delayed simulation relation on state of tgba \a f.
|
/// Compute a delayed simulation relation on state of tgba \a f.
|
||||||
// FIXME: This method is correct but it builds sometime (when there are more
|
/// \bug Does not work for generalized automata.
|
||||||
// than one acceptance condition) only a part of the simulation relation.
|
|
||||||
delayed_simulation_relation* get_delayed_relation_simulation(const tgba* a,
|
delayed_simulation_relation* get_delayed_relation_simulation(const tgba* a,
|
||||||
std::ostream& os,
|
std::ostream& os,
|
||||||
int opt = -1);
|
int opt = -1);
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ namespace spot
|
||||||
/// The one priority is represent by a \a acceptance_condition_visited_
|
/// The one priority is represent by a \a acceptance_condition_visited_
|
||||||
/// which differ of bddfalse.
|
/// which differ of bddfalse.
|
||||||
/// This spoiler node are looser for the duplicator.
|
/// This spoiler node are looser for the duplicator.
|
||||||
|
/// FIXME: get rid of these ugly globals
|
||||||
static int nb_spoiler_loose_;
|
static int nb_spoiler_loose_;
|
||||||
|
|
||||||
static int nb_spoiler;
|
static int nb_spoiler;
|
||||||
|
|
@ -549,48 +550,7 @@ namespace spot
|
||||||
void
|
void
|
||||||
parity_game_graph_delayed::lift()
|
parity_game_graph_delayed::lift()
|
||||||
{
|
{
|
||||||
// Before the lift we compute each vertices
|
|
||||||
// to know if he belong to a all accepting cycle
|
|
||||||
// of the graph.
|
|
||||||
|
|
||||||
if (this->nb_set_acc_cond() > 1)
|
|
||||||
{
|
|
||||||
for (std::vector<duplicator_node*>::iterator i
|
|
||||||
= duplicator_vertice_.begin();
|
|
||||||
i != duplicator_vertice_.end(); ++i)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
for (std::vector<duplicator_node*>::iterator i2
|
|
||||||
= duplicator_vertice_.begin();
|
|
||||||
i2 != duplicator_vertice_.end(); ++i2)
|
|
||||||
dynamic_cast<duplicator_node_delayed*>(*i2)->seen_ = false;
|
|
||||||
for (std::vector<spoiler_node*>::iterator i3
|
|
||||||
= spoiler_vertice_.begin();
|
|
||||||
i3 != spoiler_vertice_.end(); ++i3)
|
|
||||||
dynamic_cast<spoiler_node_delayed*>(*i3)->seen_ = false;
|
|
||||||
*/
|
|
||||||
dynamic_cast<duplicator_node_delayed*>(*i)->set_lead_2_acc_all();
|
|
||||||
}
|
|
||||||
for (std::vector<spoiler_node*>::iterator i
|
|
||||||
= spoiler_vertice_.begin();
|
|
||||||
i != spoiler_vertice_.end(); ++i)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
for (std::vector<duplicator_node*>::iterator i2
|
|
||||||
= duplicator_vertice_.begin();
|
|
||||||
i2 != duplicator_vertice_.end(); ++i2)
|
|
||||||
dynamic_cast<duplicator_node_delayed*>(*i2)->seen_ = false;
|
|
||||||
for (std::vector<spoiler_node*>::iterator i3
|
|
||||||
= spoiler_vertice_.begin();
|
|
||||||
i3 != spoiler_vertice_.end(); ++i3)
|
|
||||||
dynamic_cast<spoiler_node_delayed*>(*i3)->seen_ = false;
|
|
||||||
*/
|
|
||||||
dynamic_cast<spoiler_node_delayed*>(*i)->set_lead_2_acc_all();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Jurdzinski's algorithm
|
// Jurdzinski's algorithm
|
||||||
//int iter = 0;
|
|
||||||
bool change = true;
|
bool change = true;
|
||||||
|
|
||||||
while (change)
|
while (change)
|
||||||
|
|
@ -620,10 +580,11 @@ namespace spot
|
||||||
state_couple* p = 0;
|
state_couple* p = 0;
|
||||||
seen_map::iterator j;
|
seen_map::iterator j;
|
||||||
|
|
||||||
/*
|
// This does not work for generalized automata. A tarjan-like
|
||||||
if (this->nb_set_acc_cond() > 1)
|
// algorithm is required to tell whether a state can lead to an
|
||||||
|
// acceptance cycle.
|
||||||
|
if (this->nb_set_acc_cond() > 1)
|
||||||
return rel;
|
return rel;
|
||||||
*/
|
|
||||||
|
|
||||||
for (std::vector<spoiler_node*>::iterator i
|
for (std::vector<spoiler_node*>::iterator i
|
||||||
= spoiler_vertice_.begin();
|
= spoiler_vertice_.begin();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue