decompose_strength: work with inherently weak SCCs
* wrap/python/tests/decompose.ipynb: Adjust text. * spot/twaalgos/strength.hh, spot/twaalgos/strength.cc: Adjust to extract inherently weak SCCs instead of weak SCCs. This gets rids of the special handling for the "corner cases". * spot/tests/strength.test: Adjust. * NEWS: Mention it.
This commit is contained in:
parent
9bbcf85b3a
commit
2e15ed959d
5 changed files with 102 additions and 93 deletions
|
|
@ -199,7 +199,7 @@ namespace spot
|
|||
{
|
||||
if (si.is_accepting_scc(i))
|
||||
{
|
||||
if (all_accepting | is_weak_scc(si, i))
|
||||
if (all_accepting | is_inherently_weak_scc(si, i))
|
||||
{
|
||||
if (keep & Weak)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -87,15 +87,21 @@ namespace spot
|
|||
///
|
||||
/// The string \a keep should be a non-empty combination of
|
||||
/// the following letters:
|
||||
/// - 'w': keep only weak SCCs (i.e., SCCs in which all transitions belong
|
||||
/// to the same acceptance sets) that are not terminal.
|
||||
/// - 't': keep terminal SCCs (i.e., weak SCCs that are complete)
|
||||
/// - 's': keep strong SCCs (i.e., SCCs that are not weak).
|
||||
/// - 'w': keep only inherently weak SCCs (i.e., SCCs in which
|
||||
/// all transitions belong to the same acceptance sets) that
|
||||
/// are not terminal.
|
||||
/// - 't': keep terminal SCCs (i.e., inherently weak SCCs that are complete)
|
||||
/// - 's': keep strong SCCs (i.e., SCCs that are not inherently weak).
|
||||
///
|
||||
/// This algorithm returns a subautomaton that contains all SCCs of the
|
||||
/// requested strength, plus any upstream SCC (but adjusted not to be
|
||||
/// accepting).
|
||||
///
|
||||
/// The definition are basically those used in the following paper,
|
||||
/// except that we extra the "inherently weak" part instead of the
|
||||
/// weak part because we can now test for inherent weakness
|
||||
/// efficiently enough (not enumerating all cycles as suggested in
|
||||
/// the paper).
|
||||
/** \verbatim
|
||||
@inproceedings{renault.13.tacas,
|
||||
author = {Etienne Renault and Alexandre Duret-Lutz and Fabrice
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue