pe_estimator¶
- class cryptographic_estimators.PEEstimator.pe_estimator.PEEstimator(n: int, k: int, q: int, memory_bound=inf, **kwargs)¶
Bases:
BaseEstimator
Construct an instance of Permutation Code Equivalence Estimator.
- Parameters:
n (int) – Code length.
k (int) – Code dimension.
q (int) – Field size.
memory_bound (float) – Memory bound (default: inf).
**kwargs –
Additional keyword arguments.
excluded_algorithms (list/tuple) - A list/tuple of excluded algorithms (default: None).
sd_parameters (dict) - Dictionary of parameters for SDEstimator used as a subroutine by some algorithms (default: {}).
nsolutions (int) - 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: true)
show_tilde_o_time (int) – Show Ō time complexity (default: true)
show_all_parameters (int) – Show all optimization parameters (default: true)
precision (int) – Number of decimal digits output (default: 1)
truncate (int) – Truncate rather than round the output (default: false)
Examples
>>> from cryptographic_estimators.PEEstimator import PEEstimator >>> A = PEEstimator(n=60, k=20, q=7) >>> A.table(precision=3, show_all_parameters=1) +-----------+-------------------------------+ | | estimate | +-----------+---------+--------+------------+ | algorithm | time | memory | parameters | +-----------+---------+--------+------------+ | Leon | 33.274 | 11.718 | {'w': 25} | | Beullens | 29.631 | 11.901 | {'w': 25} | | SSA | 127.480 | 14.040 | {} | +-----------+---------+--------+------------+
- Tests:
>>> if skip_long_doctests: ... pytest.skip() >>> from cryptographic_estimators.PEEstimator import PEEstimator >>> A = PEEstimator(n=150, k=100, q=51) >>> A.table(precision=3, show_all_parameters=1) # long time +-----------+-------------------------------+ | | estimate | +-----------+---------+--------+------------+ | algorithm | time | memory | parameters | +-----------+---------+--------+------------+ | Leon | 82.588 | 34.601 | {'w': 33} | | Beullens | 72.962 | 44.308 | {'w': 41} | | SSA | 302.551 | 17.377 | {} | +-----------+---------+--------+------------+