Skip to content
Snippets Groups Projects
Commit d8858fb1 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

fix different results of automaton vs dynamic programming distance

simulation
parent 7b80a7a4
No related branches found
No related tags found
No related merge requests found
...@@ -60,10 +60,8 @@ automaton::EpsilonNFA < SymbolType, void, ext::pair<unsigned int, unsigned int> ...@@ -60,10 +60,8 @@ automaton::EpsilonNFA < SymbolType, void, ext::pair<unsigned int, unsigned int>
to = ext::make_pair(i, j + 1); to = ext::make_pair(i, j + 1);
   
for (const SymbolType& symbol : pattern.getAlphabet()) { for (const SymbolType& symbol : pattern.getAlphabet()) {
if (symbol != pattern.getContent()[i]) { // add horizontal transition representing insertion
// add horizontal transition representing insertion result.addTransition(from, symbol, to);
result.addTransition(from, symbol, to);
}
} }
} }
} }
......
...@@ -78,15 +78,18 @@ void GeneralizedLevenshteinMatchingAutomatonTest::testSimpleConstruction() { ...@@ -78,15 +78,18 @@ void GeneralizedLevenshteinMatchingAutomatonTest::testSimpleConstruction() {
res.addTransition(q5, q8); res.addTransition(q5, q8);
   
res.addTransition(q1, 'a', q4); // insertions res.addTransition(q1, 'a', q4); // insertions
res.addTransition(q1, 'b', q4);
res.addTransition(q1, 'c', q4); res.addTransition(q1, 'c', q4);
res.addTransition(q1, 'd', q4); res.addTransition(q1, 'd', q4);
   
res.addTransition(q2, 'a', q5); res.addTransition(q2, 'a', q5);
res.addTransition(q2, 'b', q5); res.addTransition(q2, 'b', q5);
res.addTransition(q2, 'c', q5);
res.addTransition(q2, 'd', q5); res.addTransition(q2, 'd', q5);
   
res.addTransition(q5, 'a', q7); res.addTransition(q5, 'a', q7);
res.addTransition(q5, 'b', q7); res.addTransition(q5, 'b', q7);
res.addTransition(q5, 'c', q7);
res.addTransition(q5, 'd', q7); res.addTransition(q5, 'd', q7);
   
res.addTransition(q0, 'b', r1); // transposition res.addTransition(q0, 'b', r1); // transposition
......
...@@ -77,15 +77,18 @@ void GeneralizedLevenshteinSequenceMatchingAutomatonTest::testSimpleConstruction ...@@ -77,15 +77,18 @@ void GeneralizedLevenshteinSequenceMatchingAutomatonTest::testSimpleConstruction
test.addTransition(q5, q8); test.addTransition(q5, q8);
   
test.addTransition(q1, 'a', q4); // insertions test.addTransition(q1, 'a', q4); // insertions
test.addTransition(q1, 'b', q4);
test.addTransition(q1, 'c', q4); test.addTransition(q1, 'c', q4);
test.addTransition(q1, 'd', q4); test.addTransition(q1, 'd', q4);
   
test.addTransition(q2, 'a', q5); test.addTransition(q2, 'a', q5);
test.addTransition(q2, 'b', q5); test.addTransition(q2, 'b', q5);
test.addTransition(q2, 'c', q5);
test.addTransition(q2, 'd', q5); test.addTransition(q2, 'd', q5);
   
test.addTransition(q5, 'a', q7); test.addTransition(q5, 'a', q7);
test.addTransition(q5, 'b', q7); test.addTransition(q5, 'b', q7);
test.addTransition(q5, 'c', q7);
test.addTransition(q5, 'd', q7); test.addTransition(q5, 'd', q7);
   
test.addTransition(q1, 'a', q1); // loops for sequence matching test.addTransition(q1, 'a', q1); // loops for sequence matching
......
...@@ -74,15 +74,18 @@ void LevenshteinMatchingAutomatonTest::testSimpleConstruction() { ...@@ -74,15 +74,18 @@ void LevenshteinMatchingAutomatonTest::testSimpleConstruction() {
res.addTransition(q5, q8); res.addTransition(q5, q8);
   
res.addTransition(q1, 'a', q4); // insertions res.addTransition(q1, 'a', q4); // insertions
res.addTransition(q1, 'b', q4);
res.addTransition(q1, 'c', q4); res.addTransition(q1, 'c', q4);
res.addTransition(q1, 'd', q4); res.addTransition(q1, 'd', q4);
   
res.addTransition(q2, 'a', q5); res.addTransition(q2, 'a', q5);
res.addTransition(q2, 'b', q5); res.addTransition(q2, 'b', q5);
res.addTransition(q2, 'c', q5);
res.addTransition(q2, 'd', q5); res.addTransition(q2, 'd', q5);
   
res.addTransition(q5, 'a', q7); res.addTransition(q5, 'a', q7);
res.addTransition(q5, 'b', q7); res.addTransition(q5, 'b', q7);
res.addTransition(q5, 'c', q7);
res.addTransition(q5, 'd', q7); res.addTransition(q5, 'd', q7);
   
CPPUNIT_ASSERT(res == automaton::simplify::UnreachableStatesRemover::remove(resulting_automata)); CPPUNIT_ASSERT(res == automaton::simplify::UnreachableStatesRemover::remove(resulting_automata));
......
...@@ -73,14 +73,17 @@ void LevenshteinSequenceMatchingAutomatonTest::testSimpleConstruction() { ...@@ -73,14 +73,17 @@ void LevenshteinSequenceMatchingAutomatonTest::testSimpleConstruction() {
test.addTransition(q5, q8); test.addTransition(q5, q8);
   
test.addTransition(q1, 'a', q4); // insertions test.addTransition(q1, 'a', q4); // insertions
test.addTransition(q1, 'b', q4);
test.addTransition(q1, 'c', q4); test.addTransition(q1, 'c', q4);
test.addTransition(q1, 'd', q4); test.addTransition(q1, 'd', q4);
   
test.addTransition(q2, 'a', q5); test.addTransition(q2, 'a', q5);
test.addTransition(q2, 'b', q5); test.addTransition(q2, 'b', q5);
test.addTransition(q2, 'c', q5);
test.addTransition(q2, 'd', q5); test.addTransition(q2, 'd', q5);
   
test.addTransition(q5, 'a', q7); test.addTransition(q5, 'a', q7);
test.addTransition(q5, 'c', q7);
test.addTransition(q5, 'b', q7); test.addTransition(q5, 'b', q7);
test.addTransition(q5, 'd', q7); test.addTransition(q5, 'd', q7);
   
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment