Edge Cases - RobinBalzer/approximateQueries GitHub Wiki
There are currently six different cases of an edge that's suitable for the productAutomaton.
- incoming epsilon edge
- outgoing epsilon edge
- approximated edge
- negated incoming epsilon edge
- negated outgoing epsilon edge
- negated approximated edge
In the following table you can find a breakdown of the cases.
Query behaviour | Transducer behaviour | Database behaviour | |
---|---|---|---|
Case 1 | pause | move | move |
Case 2 | move | move | pause |
Case 3 | move | move | move |
Case 4 | pause | move | move backwards |
Case 5 | move | move | pause |
Case 6 | move | move | move backwards |
Actions move, pause and move backwards are described in the following table:
starting point | labeling | target point | |
---|---|---|---|
move | sourceNode | (label) | targetNode |
pause | sourceNode | (label) | targetNode |
move backwards | targetNode | -(label) | sourceNode |
Note that case 2 and 5 behave the same, yet they are implemented twice with duplicate code. This might get changed in the future but currently I keep both cases separately to prevent confusion.