* src/tgbaalgos/se05.hh, src/tgbaalgos/tau03.hh: Typo.

* src/tgbaalgos/tau03.cc: Suppress optimisations, the algorithm is now
the original one.
* src/tgbaalgos/tau03opt.hh, src/tgbaalgos/tau03opt.cc: New files
implementing most of all the optimisations of tau03.
* src/tgbaalgos/Makefile.am: Add them.
* src/tgbatest/ltl2tgba.cc, src/tgbatest/randtgba.cc: Make them public.
* src/tgbatest/tba_samples_from_spin.test: Test them.
This commit is contained in:
Denis Poitrenaud 2004-11-18 16:09:41 +00:00
parent 321177331d
commit 121d582480
10 changed files with 635 additions and 77 deletions

View file

@ -38,6 +38,7 @@
#include "tgbaalgos/magic.hh"
#include "tgbaalgos/se05.hh"
#include "tgbaalgos/tau03.hh"
#include "tgbaalgos/tau03opt.hh"
#include "tgbaalgos/gtec/gtec.hh"
#include "tgbaalgos/gtec/ce.hh"
#include "tgbaparse/public.hh"
@ -128,7 +129,8 @@ syntax(char* prog)
<< std::endl
<< " bsh_se05_search_repeated[(heap size in MB - 10MB"
<< " by default)]" << std::endl
<< " tau03_search" << std::endl;
<< " tau03_search" << std::endl
<< " tau03_opt_search" << std::endl;
exit(2);
}
@ -147,8 +149,8 @@ main(int argc, char** argv)
int output = 0;
int formula_index = 0;
std::string echeck_algo;
enum { None, Couvreur, Couvreur2, MagicSearch, Se05Search, Tau03Search }
echeck = None;
enum { None, Couvreur, Couvreur2, MagicSearch, Se05Search,
Tau03Search, Tau03OptSearch } echeck = None;
enum { NoneDup, BFS, DFS } dupexp = NoneDup;
bool search_many = false;
bool bit_state_hashing = false;
@ -415,6 +417,10 @@ main(int argc, char** argv)
{
echeck = Tau03Search;
}
else if (echeck_algo == "tau03_opt_search")
{
echeck = Tau03OptSearch;
}
else
{
std::cerr << "unknown emptiness-check: " << echeck_algo << std::endl;
@ -669,6 +675,18 @@ main(int argc, char** argv)
{
ec = spot::explicit_tau03_search(a);
}
case Tau03OptSearch:
if (a->number_of_acceptance_conditions() == 0)
{
std::cout << "To apply tau03_opt_search, the automaton must "
<< "have at least on accepting condition. "
<< "Try with another algorithm." << std::endl;
}
else
{
ec = spot::explicit_tau03_opt_search(a);
}
break;
}

View file

@ -36,6 +36,7 @@
#include "tgbaalgos/magic.hh"
#include "tgbaalgos/se05.hh"
#include "tgbaalgos/tau03.hh"
#include "tgbaalgos/tau03opt.hh"
#include "tgbaalgos/replayrun.hh"
void
@ -212,6 +213,10 @@ main(int argc, char** argv)
ec_obj.push_back(spot::explicit_tau03_search(a));
ec_name.push_back("explicit_tau03_search");
ec_safe.push_back(true);
ec_obj.push_back(spot::explicit_tau03_opt_search(a));
ec_name.push_back("explicit_tau03_opt_search");
ec_safe.push_back(true);
}
if (opt_n_acc <= 1)

View file

@ -33,6 +33,7 @@ expect_ce()
./ltl2tgba -X -ese05_search "$1"
./ltl2tgba -X -ebsh_se05_search "$1"
./ltl2tgba -X -etau03_search "$1"
./ltl2tgba -X -etau03_opt_search "$1"
}
expect_no()
@ -44,6 +45,7 @@ expect_no()
./ltl2tgba -X -Ese05_search "$1"
./ltl2tgba -X -Ebsh_se05_search "$1"
./ltl2tgba -X -Etau03_search "$1"
./ltl2tgba -X -Etau03_opt_search "$1"
}
dir=$srcdir/tba_samples_from_spin