Skip to content

Reference implementations of algorithms for free bands.

Notifications You must be signed in to change notification settings

reiniscirpons/freebandlib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

86a2c6a · Sep 12, 2022

History

70 Commits
Sep 12, 2022
Sep 12, 2022
May 6, 2022
Sep 12, 2022
Nov 17, 2021
Aug 18, 2022
Aug 23, 2022
Apr 1, 2022
Aug 30, 2022
Sep 12, 2022
May 3, 2022
Aug 30, 2022
Apr 1, 2022
Sep 12, 2022
Apr 1, 2022

Repository files navigation

logo DOI

Freebandlib

This repository contains reference implementations of the algorithms described in the paper:

R. Cirpons and J. D. Mitchell
"Polynomial time multiplication and normal forms in free bands"

The following table gives the correspondence between the formal algorithm description in the paper and the implementation in freebandlib.

Algorithm in paper Algorithm in freebandlib
IntervalTranducer interval_transducer
Minimize transducer_minimize
TrimTransducerIsomorphism transducer_isomorphism
EqualInFreeBand equal_in_free_band
Multiply multiply
MinWord min_word

To run the tests

Type:

python3 -m pip install -r tests/requirements.txt

Then inside the freebandlib top level directory type:

pytest

To run the benchmarks

Download the benchmark sample data files (i.e. input data for the benchmarks). To do so type:

./get_benchmark_sample_data.sh

Then type:

python3 -m pip install -r benchmarks/requirements.txt
make benchmark-all

It is also possible to generate entirely new benchmark sample data by using the code in benchmarks/generate_sample_data.py.

The benchmarks can then be parsed by running python3 ./benchmarks/extract_data.py