le_estimator¶
- class cryptographic_estimators.LEEstimator.le_estimator.LEEstimator(n: int, k: int, q: int, memory_bound=inf, **kwargs)¶
Bases:
BaseEstimator
Construct an instance of the Linear Code Equivalence Estimator.
- Parameters:
n (int) – Code length
k (int) – Code dimension
q (int) – Field size
excluded_algorithms – A list/tuple of excluded algorithms (default: None)
nsolutions – No. of solutions
- algorithm_names()¶
Return a list of the name of considered algorithms.
- algorithms()¶
Return a list of considered algorithms.
- property bit_complexities¶
Returns a list of bit_complexities attributes of included algorithms.
- property complexity_type¶
Returns a list of complexity_type attributes of included algorithms.
- estimate(**kwargs)¶
Returns dictionary describing the complexity of each algorithm and its optimal parameters.
- property estimator_type¶
Returns the type of the estimator.
Either problem or scheme
- excluded_algorithms_by_default = []¶
- fastest_algorithm(use_tilde_o_time=False)¶
Return the algorithm with the smallest time complexity.
- Parameters:
use_tilde_o_time (bool) – Use Ō time complexity, i.e., ignore polynomial factors. Default is False.
- property memory_access¶
Returns a list of memory_access attributes of included algorithms.
- nalgorithms()¶
Return the number of considered algorithms.
- reset()¶
Resets the internal states of the estimator and all included algorithms.
- table(show_quantum_complexity=0, show_tilde_o_time=0, show_all_parameters=0, precision=1, truncate=0)¶
Print table describing the complexity of each algorithm and its optimal parameters.
- Parameters:
show_quantum_complexity (int) – Show quantum time complexity (default: 0)
show_tilde_o_time (int) – Show Ō time complexity (default: 0)
show_all_parameters (int) – Show all optimization parameters (default: 0)
precision (int) – Number of decimal digits output (default: 1)
truncate (int) – Truncate rather than round the output (default: 0)
Examples
>>> from cryptographic_estimators.LEEstimator import LEEstimator >>> A = LEEstimator(n=30, k=20, q=251) >>> A.table(show_all_parameters=1) +-----------+------------------------------------------+ | | estimate | +-----------+------+--------+--------------------------+ | algorithm | time | memory | parameters | +-----------+------+--------+--------------------------+ | Leon | 35.1 | 12.2 | {'w': 9} | | Beullens | 29.7 | 14.4 | {'w': 11} | | BBPS | 25.3 | 12.2 | {'w': 12, 'w_prime': 10} | +-----------+------+--------+--------------------------+
- Tests:
>>> if skip_long_doctests: ... pytest.skip() >>> from cryptographic_estimators.LEEstimator import LEEstimator >>> A = LEEstimator(n=200, k=110, q=31) >>> A.table(precision=3, show_all_parameters=1) # long time +-----------+----------------------------------------------+ | | estimate | +-----------+---------+--------+---------------------------+ | algorithm | time | memory | parameters | +-----------+---------+--------+---------------------------+ | Leon | 103.038 | 33.624 | {'w': 58} | | Beullens | 123.109 | 42.252 | {'w': 79} | | BBPS | 95.960 | 33.624 | {'w': 101, 'w_prime': 59} | +-----------+---------+--------+---------------------------+