dualize: improve performance on small automata with large |AP|

For issue #566.

* spot/twaalgos/dualize.cc (dualizer::copy_edges): Implement another
loop to be used when the number of outgoing edges of a state is
smaller than the number of AP.
* tests/core/566.test: New file.
* tests/Makefile.am: Add it.
* NEWS: Mention the improvement.
This commit is contained in:
Alexandre Duret-Lutz 2024-03-17 21:27:04 +01:00
parent 75e552fdac
commit 1e512d422b
4 changed files with 205 additions and 16 deletions

4
NEWS
View file

@ -148,6 +148,10 @@ New in spot 2.11.6.dev (not yet released)
should raise an exception of return nullptr if it requires more
acceptance sets than supported.
- spot::dualize() learned a trick to be faster on states that have
less outgoing edges than atomic proposition declared on the
automaton. (Issue #566.)
- [Potential backward incompatibility] spot::dualize() does not call
cleanup_acceptance() anymore. This change ensures that the dual
of a Büchi automaton will always be a co-Büchi automaton.