|
Go to the documentation of this file.
20 std::stringstream errstr;
21 errstr << "Generator must be deterministic, but is nondeterministic";
22 throw Exception( "ConditionalDecomposabilityExtension", errstr.str(), 201);
26 if (gen. IsTrim() == false) {
27 std::stringstream errstr;
28 errstr << "Generator must be trim, but is blocking";
29 throw Exception( "ConditionalDecomposabilityExtension", errstr.str(), 201);
33 if (rAlphabets. Size() < 2) {
34 std::stringstream errstr;
35 errstr << "At least two alphabets must be included in the EventSetVector";
36 throw Exception( "ConditionalDecomposabilityExtension", errstr.str(), 201);
45 for (i = 0; i < ee. Size(); i++) {
50 for (i = 0; i < ee. Size(); i++) {
51 for ( Idx j = 0; j < ee. Size(); j++) {
63 std::stringstream errstr;
64 errstr << "Generator alphabet is not included in union of the alphabets";
65 throw Exception( "ConditionalDecomposabilityExtension", errstr.str(), 100);
71 std::stringstream errstr;
72 errstr << "Generator alphabet does not include the alphabet ek";
73 throw Exception( "ConditionalDecomposabilityExtension", errstr.str(), 100);
79 std::stringstream errstr;
80 errstr << "Ek does not include all shared events";
81 throw Exception( "ConditionalDecomposabilityExtension", errstr.str(), 100);
98 EventSet::Iterator eit;
100 for ( Idx i = 0; i < ee. Size(); i++) {
106 for (eit = EiEkdifUnionset.Begin(); eit != EiEkdifUnionset.End(); ++eit) {
114 for ( Idx i = 1; i < copies. Size(); i++) {
126 std::stack< std::pair<Idx,Idx> > todo;
128 std::map< std::pair<Idx,Idx>, Idx> testedTrans;
131 std::pair<Idx,Idx> currentstates, newstates;
134 StateSet::Iterator lit1, lit2;
136 std::map< std::pair<Idx,Idx>, Idx>::iterator rcit;
141 currentstates = std::make_pair(*lit1, *lit2);
142 todo.push(currentstates);
143 testedTrans[currentstates] = tmpstate++;
148 while (! todo.empty()) {
150 currentstates = todo.top();
154 tit1_end = tildeGen. TransRelEnd(currentstates.first);
155 for (; tit1 != tit1_end; ++tit1) {
157 if (! sharedalphabet. Exists(tit1->Ev)) {
158 newstates = std::make_pair(tit1->X2, currentstates.second);
160 rcit = testedTrans.find(newstates);
161 if (rcit == testedTrans.end()) {
162 todo.push(newstates);
163 testedTrans[newstates] = tmpstate++;
166 tmpstate = rcit->second;
173 tit2_end = rGen. TransRelEnd(currentstates.second, tit1->Ev);
175 if (tit2 == tit2_end) {
176 if (! ek. Exists(tit1->Ev)) {
178 std::cerr << "ConDecExtension: Event " << rGen. EventName(tit1->Ev)
179 << " has been added to Ek." << std::endl;
183 for (; tit2 != tit2_end; ++tit2) {
184 newstates = std::make_pair(tit1->X2, tit2->X2);
186 rcit = testedTrans.find(newstates);
187 if (rcit == testedTrans.end()) {
188 todo.push(newstates);
189 testedTrans[newstates] = tmpstate++;
192 tmpstate = rcit->second;
libFAUDES 2.24g
--- 2014.09.15
--- c++ api documentaion by doxygen
|