Skip to content

Latest commit

 

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unbordered Words Enumeration

This project provides an implementation for enumerating unbordered words of length up to ( n ),
where each character is drawn from an alphabet of size ( \sigma ).

Each unbordered word is represented in an implicit form, storing its Lyndon conjugate and the corresponding border correlation function.
The implementation supports multiple algorithms and evaluation modes for analyzing efficiency and compression ratio.


Dependencies

This project depends on the following external libraries:

  • libdivsufsort
    Used for suffix array and LCP construction in border correlation computations.

  • GoogleTest
    Used for unit testing under the tests/ directory.

Installation (Ubuntu example)

sudo apt install libdivsufsort-dev
sudo apt install libgtest-dev

Compilation

We use CMake to build the project:

mkdir build
cd build
cmake ..
make

Run

Follow the steps below to perform different evaluations and experiments related to unbordered word enumeration and border correlation function construction.

  1. Enumeration evaluation between the implicit one and the Nielsen's algorithm The log is stored in the file "size_log".
./exp 0 [alphabet_size, max_length]
  1. Border correlation function building evaluation The program will randomly generate [repeat] strings of length [length] and evaluate the time consumption (ms) for building the border correlation function by using the KMP and Algorithm~1.
./exp 1 [alphabet_size, length, repeat, len_gap]
  1. Compute the border correlation function of a string
./exp 2 [string]
  1. (Sampled) enumeration evaluation between the implicit one and the Nielsen's algorithm
./exp 3 [alphabet_size, len, sample_number]

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages