173 Commits

Author SHA1 Message Date
Matthew Barr
1891f14755 Add support for Hamming distance approx matching 2018-01-19 06:11:43 -05:00
Matthew Barr
5021d7ab78 De-const the empty maps.
Clang 3.8 complains about attempting to default init const objects
without a user-provided constructor.
2017-09-22 15:17:56 +10:00
Justin Viiret
ea2e85ac87 ng_squash: switch to using unordered_map
Also some cleaning up, small performance improvements.
2017-09-18 13:29:34 +10:00
Alex Coyte
2a492273b5 remove !LBR constraints from merge passes
we have either converted candidates to castles already or we have converted them
back in the hope of merging them with other holders
2017-09-18 13:22:56 +10:00
Justin Viiret
3ff70d5568 insertion_ordered_{map,set}: add new containers
These are associative map/set structures that are iterable in insertion
order.
2017-08-21 11:25:21 +10:00
Alex Coyte
72973ccb47 violet: don't bother swapping holders if unable to trim graph 2017-08-21 11:25:21 +10:00
Alex Coyte
34ed4a6991 violet: maintain a reference to all the known implementable graphs 2017-08-21 11:25:12 +10:00
Alex Coyte
c693c44646 violet: do not remove more states from holders if dfa has been built 2017-08-21 11:25:12 +10:00
Matthew Barr
d33dcc0534 Remove unwanted move constructor 2017-08-21 11:20:22 +10:00
Alex Coyte
68c8845d15 Do equivalency removal before violet's implementablity check.
This is helpful as removing/restoring literals may introduce redundancy in the
graphs. Also improve the implementation by caching known good holders.
2017-08-21 11:18:30 +10:00
Alex Coyte
aa6025012b Ensure max width of repeat before transforming graph. 2017-08-21 11:18:30 +10:00
Justin Viiret
33823d60d1 tidy: "ue2::flat_set/map" -> "flat_set/map" 2017-08-21 11:14:59 +10:00
Justin Viiret
9cf66b6ac9 util: switch from Boost to std::unordered set/map
This commit replaces the ue2::unordered_{set,map} types with their STL
versions, with some new hashing utilities in util/hash.h. The new types
ue2_unordered_set<T> and ue2_unordered_map<Key, T> default to using the
ue2_hasher.

The header util/ue2_containers.h has been removed, and the flat_set/map
containers moved to util/flat_containers.h.
2017-08-21 11:14:55 +10:00
Alex Coyte
482e1ef931 Ensure that reports would be sustained after self loop is removed
Approximante matching means that is now possible to get a non-standard report
on a cyclic during edge redundancy passes which means checks are now needed.
2017-08-21 11:12:26 +10:00
Justin Viiret
b454ab6484 ng_prefilter.cpp: remove interior edges first
This allows us to avoid looking them up while we're in copyOutEdges(),
halves time on large cases.
2017-08-21 11:12:26 +10:00
Justin Viiret
2fba9bd16c ng_mcclellan: reject determinise if NFA is too big 2017-08-21 11:12:26 +10:00
Justin Viiret
e8f09aa8c6 ng_violet: fail on added_count limit quicker
- also fixes typo "splitForImplementability"
- adds more detail in debug output
2017-08-21 11:12:26 +10:00
Justin Viiret
c0320b8cdc ng_depth: more use of small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
90faea4ce9 ng_depth: use small_color_map in findLoopReachable 2017-08-21 11:12:26 +10:00
Justin Viiret
9c046db360 ng_util: make more use of small_color_map in DFS 2017-08-21 11:12:26 +10:00
Justin Viiret
8d178d52ef ng_util: use small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
f98ccedf27 ng_prune: use small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
33141e64b6 ng_netflow: use small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
b97fa8c808 ng_literal_analysis: use small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
32270725c6 ng_repeat: use small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
8982e7177c ng_region: use small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
1392be048a ng_width: use small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
03c1af1173 ng_misc_opt: use small_color_map 2017-08-21 11:12:26 +10:00
Justin Viiret
a1ff4d3293 small_color_map: add efficient 2-bit color map 2017-08-21 11:12:26 +10:00
Justin Viiret
e9f4adba0d ng_dump: use StdioFile 2017-08-21 11:12:16 +10:00
Justin Viiret
b09e3acd04 ng_misc_opt: improve performance in large cases 2017-08-21 11:10:11 +10:00
Justin Viiret
95e3fd3f32 ng_misc_opt: remove dead code 2017-08-21 11:10:11 +10:00
Justin Viiret
7ec757c7ce ng_cyclic_redundancy: persist colour map 2017-08-21 11:10:11 +10:00
Justin Viiret
fe2654b086 ng_small_literal_set: pre-check for narrow reach 2017-08-21 11:10:11 +10:00
Justin Viiret
92c28d28c1 ng_mcclellan: use flat_set in triggerAllowed() 2017-08-21 11:10:11 +10:00
Justin Viiret
d0e4a703ed ng_literal_analysis: reserve space for fwd_edges 2017-08-21 11:10:11 +10:00
Justin Viiret
e27e76a595 ng_literal_decorated: remove unused header 2017-08-21 11:10:11 +10:00
Justin Viiret
5837f68b9a ng_literal_decorated: pre-check for narrow reach 2017-08-21 11:10:11 +10:00
Justin Viiret
5a7d5958d1 ng_violet: skip analysis on graphs with wide reach 2017-08-21 11:10:11 +10:00
Justin Viiret
63973175ed ng_calc_components: check tail shell too 2017-08-21 11:10:11 +10:00
Justin Viiret
f6adc4f464 ng_calc_components: skip if shell has 1 path only 2017-08-21 11:10:11 +10:00
Justin Viiret
85f7790a21 dfa: standardise 'using' instead of typedef 2017-08-21 10:40:18 +10:00
Justin Viiret
0d7d52625c ng_haig: make StateMap an unordered_map 2017-08-21 10:40:18 +10:00
Justin Viiret
31141dd35b determinise: use queue, improve api
- Use a queue rather than always building the full vector of state
   sets.
 - Make more use of move, emplace, reserve.
 - Write directly into dstates argument.
 - Return bool rather than int.
2017-08-21 10:40:18 +10:00
Justin Viiret
9aee3b22b5 ng_expr_info: more complete analysis passes 2017-06-09 10:12:03 +10:00
Justin Viiret
cfdac66404 accel: limit how far we will search in findBest 2017-05-30 14:00:45 +10:00
Matthew Barr
423569ec82 De-multiaccel 2017-05-30 13:59:00 +10:00
Matthew Barr
c510b85bf1 whitespace changes 2017-05-30 13:59:00 +10:00
Justin Viiret
923e602601 ng_equivalence: use flat_set for VertexInfoSet 2017-05-30 13:59:00 +10:00
Alex Coyte
725de51f89 determinisation: cleanups, remove shrinkStateSet 2017-05-30 13:59:00 +10:00