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