Modify the powerset algorithm to keep track of accepting states

from the initial automaton.

* src/tgba/tgbaexplicit.cc, src/tgba/tgbaexplicit.hh:
Added class tgba_explicit_number, a tgba_explicit where states are
labelled by integers.
* src/tgbaalgos/powerset.hh, src/tgbaalgos/powerset.cc:
When building the deterministic automaton, keep track of which states
were created from an accepting state in the initial automaton.
The states are added to the new optional parameter (if not 0),
acc_list.
Use tgba_explicit_number instead of tgba_explicit_string to build
the result.
* src/tgbaalgos/scc.cc (spot): Small fix.
Print everything on std::cout.
This commit is contained in:
Felix Abecassis 2010-03-20 14:01:10 +01:00 committed by Alexandre Duret-Lutz
parent bd742ef6a4
commit e2e138f6e6
6 changed files with 95 additions and 18 deletions

View file

@ -22,6 +22,7 @@
#ifndef SPOT_TGBAALGOS_POWERSET_HH
# define SPOT_TGBAALGOS_POWERSET_HH
# include <list>
# include "tgba/tgbaexplicit.hh"
namespace spot
@ -32,7 +33,11 @@ namespace spot
/// This create a deterministic automaton that recognize the
/// same language as \a aut would if its acceptance conditions
/// were ignored. This is the classical powerset algorithm.
tgba_explicit* tgba_powerset(const tgba* aut);
/// If acc_list is not 0. Whenever a power state is created from one
/// accepting state (a state belonging to an accepting SCC), then this power
/// state is added to acc_list.
tgba_explicit* tgba_powerset(const tgba* aut,
std::list<const state*>* acc_list = 0);
}
#endif // SPOT_TGBAALGOS_POWERSET_HH