simulation: heuristically use a separated-label approach to rebuild

Closes issue #568.

* spot/twaalgos/simulation.cc (direct_simulation::build_result):
Implement an alternate loop based on edge_separator::basis to iterate
over a signature to build results.
* tests/core/568.test: New file.
* tests/Makefile.am: Add it.
* NEWS: Mention the optimization.
This commit is contained in:
Alexandre Duret-Lutz 2024-03-22 23:01:50 +01:00
parent 7ee2d9995f
commit bda40a5f19
4 changed files with 199 additions and 55 deletions

12
NEWS
View file

@ -165,12 +165,12 @@ New in spot 2.11.6.dev (not yet released)
- spot::dualize() learned a trick to be faster on states that have
less outgoing edges than atomic proposition declared on the
automaton. spot::remove_alternation() and
spot::tgba_determinize() learned a similar trick, except it isn't
applied at the state level but of the entire alternating use few
distinct labels. These changes may speed up the complementation
of some very weak automata, and the minimization of some
WDBA. (Issue #566.)
automaton. spot::remove_alternation(), spot::tgba_powerset(), and
simulation-based reductions learned a similar trick, except it
isn't applied at the state level but if the entire automaton use
few distinct labels. These changes may speed up the processing of
automata with many atomic propositions but few distinct labels.
(Issue #566 and issue #568.)
- [Potential backward incompatibility] spot::dualize() does not call
cleanup_acceptance() anymore. This change ensures that the dual