7 #include "MapleCOMSPS_LRB/utils/System.h" 11 std::set<std::string>
computeS(
const std::set<std::string> &Sp,
const std::set<std::string> &Sm) {
12 std::set<std::string> S;
13 std::set_union(Sp.begin(), Sp.end(), Sm.begin(), Sm.end(), std::inserter(S, S.begin()));
18 std::set<std::string> prefixes;
19 for (
const auto &s : S) {
20 for (std::size_t i = 0; i <= s.size(); i++) {
21 prefixes.insert(s.substr(0, i));
28 std::set<char> alphabet;
29 for (
const auto &s : S) {
30 for (
const auto &c : s) {
37 void readFromFile(
const std::string &inputFile, std::set<std::string> &Sp, std::set<std::string> &Sm) {
38 std::ifstream in(inputFile);
41 while (getline(in, s)) {
54 void generateRandomly(
unsigned int numberWords,
unsigned int minLength,
unsigned int maxLength,
unsigned int alphabetSize, std::set<std::string> &Sp, std::set<std::string> &Sm,
double SpProbability) {
55 std::default_random_engine generator(time(0));
56 std::bernoulli_distribution toAcceptDistribution(SpProbability);
57 std::uniform_int_distribution<char> symbolDistribution(
'a',
'a' + alphabetSize - 1);
58 std::uniform_int_distribution<unsigned int> lengthDistribution(minLength, maxLength);
60 while (Sp.size() + Sm.size() < numberWords) {
64 unsigned int length = lengthDistribution(generator);
67 for (std::size_t j = 0 ; j < length ; j++) {
68 word.push_back(symbolDistribution(generator));
70 }
while (Sp.find(word) != Sp.end() || Sm.find(word) != Sm.end());
72 if (toAcceptDistribution(generator)) {
82 return Minisat::cpuTime();
The namespace of the library.
std::set< std::string > computePrefixes(const std::set< std::string > &S)
Computes .
std::set< std::string > computeS(const std::set< std::string > &Sp, const std::set< std::string > &Sm)
Computes .
void readFromFile(const std::string &inputFile, std::set< std::string > &Sp, std::set< std::string > &Sm)
Reads the and sets from a file.
std::set< char > computeAlphabet(const std::set< std::string > &S)
Computes the alphabet from the words in .
void generateRandomly(unsigned int numberWords, unsigned int minLength, unsigned int maxLength, unsigned int alphabetSize, std::set< std::string > &Sp, std::set< std::string > &Sm, double SpProbability=0.5)
Generates randomly a sample set.