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 |     {}     |
+-----------+---------+--------+------------+