Performance improvement idea for cardinality constraint encoders #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Improves
encode_at_most_k_constraint_binomial
execution speed while keeping the output the same:itertools.combinations
is faster than the custom implementation.subsets_of_size_k
is faster than negating the output, as the input is smaller.encode_at_most_k_constraint_binomial(...)
is now a generator. Some callers expect the return value to be a list, the call needs to be wrapped inlist(encode_at_most_k_constraint_binomial(...))
there. I did not integrate these changes with other parts of the code, I expect there are additional places where this needs to happen, so this PR can not be merged without some adjustments but may be useful to some.