Skip to content

A system for sequential and parallel NFA Determinization and DFA minimization - my Bachelor Disseration Project

Notifications You must be signed in to change notification settings

UnikMask/nfdeterminize

Repository files navigation

Compilation

Make sure to run a version of rust above 1.63 stable, or 1.58 nightly to compile nfdeterminize, as it uses features that were flagged as experimental before then.

To get the latest version of run, download and run rustup to get rust on your local directory.

To compile after this is done, run cargo build -r.

Running

To run, either do:

  • cargo run -r -- <arguments>
  • target/release/nfdeterminize <arguments>

Refer to the --help argument or the user manual in the dissertation for more help.

Extra Scripts

The directory contains extra runnable scripts, such as:

  • generate-test-nfa.sh - uses GAP to generate testing NFAs for use with nfdeterminize. Provide the path to the gap executable as argument to the script in order to generate the NFAs.
  • clean-tmp-nfas.sh - script called by generate-test-nfa.sh. Modifies and cleans temporary NFAs generated by GAP. This needs to run because of the way GAP prints items to output, in which GAP adds backslashes and endline characters every so characters. The amount of characters before the next linebreak depends on your terminal size when GAP generated and printed the NFA, and I could not find a way to remove this behaviour, hence the script.
  • get-flamegraphs-bns.sh - generates flamegraphs in the flamegraphs directory for use to study the behaviour of nfdeterminize during runtime.

GAP Scripts

Some GAP scripts included in the project, that deal with automaton generation using GAP.

  • generate-bns.g - Generates and prints buffer and stack TPN NFAs of size 2-2 to 3-7.
  • generate-seqstack.g - Generates two-stack automata of size 2-2 to 3-5.

Benchmarks

To run benchmarks, run cargo bench. NOTE: Make sure to generate the GAP-generated automatons before running benchmarks (See above).

About

A system for sequential and parallel NFA Determinization and DFA minimization - my Bachelor Disseration Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages