This project contains experiments for jPerturb
- quicksort: Quicksort without memory version.
- zip: LZW compression.
- md5: MD5 hash function.
- sudoku: a Sudoku solver.
- simplex: solver of linear program with the Simplex algorithm from math3 of Apache lib.
- laguerre: root finder of polynomial function from math3 of Apache lib.
- mersenne: an implementation of the Mersenne-Twister PRNG: link
- rsa: asymmetric cryptosystem from Bouncy Castle
- rc4: symetric key stream cipher from Bouncy Castle
- tea: tiny encription algorithm in java, translation of this implementation
- torrent: implementation of bittorent protocol retrieve here.
- bitcoin: implementation of bitcoin node in java found here.
- classifier: a Naive bayes classifier from Weka.
- canny : edges detector : source
- sat : SAT4J solver find here
- lcs : longuest common subsequence, dynamic programming version.
If the source is not specified, sources come from RosettaCode
about quicksort-visualization: This package is out of the experiments because it is used to draw perturbation envelop of quicksort algorithm.
The experiments are the exploration of the perturbation envelop of each project.
In order to explore it, we use 5 explorations:
- Add 1 at each call of each perturbation Point.
- Add N, an increasing magnitude at each call of each perturbation points.
- Add 1 with an increasing random probability.
- Negation of Boolean at each call of each perturbation Point.
- Negation of Boolean with an increasing random probability.
Additionnal exploration :
- Minus 1 at each call of each perturbation Point.
You can use:
./src/script/light-install.sh
To have a quick start of jPerturb-experiments. Only little exp will remains in the project : quicksort sudoku zip md5 mersenne tea canny and lcs. The gui is available too.
In order to fully install, launch the following script:
./src/script/install.sh
It will install everything you will need to run experiments but it will take a while and need at least gradle version 2.13 installed and in your path.
mvn exec:java -Dexec.mainClass="experiment.Main" -Dexec.args="<options>"
Run the systematical call exploration with plus one perturbator model on quicksort, with 50 array of 200 integers with verbose mode:
mvn exec:java -Dexec.mainClass="experiment.Main" -Dexec.args="-v -s qs -nb 50 -size 200 -exp call one"
Run the gui on zip:
mvn exec:java -Dexec.mainClass="experiment.Main" -Dexec.args="-s zip -run gui"
Run the task size exploration on md5:
mvn exec:java -Dexec.mainClass="experiment.Main" -Dexec.args="-s md5 -run tasksize"
You can run each subject separately, or all of it with the Runner. Options remains the same.
Several options available :
- -size <integer> specify the size of each task
- -nb <integer> specify the number of task
- -time <integer> specify the number of seconds to wait until timeout
- -v or -verbose to active Runner verbose mode
- -s <subject> to specify the subject
- value for <subject> : qs zip rc4 laguerre tea torrent rsa sudoku bayes simplex mt md5 bc
- -exp <exp> specify the exp
- value for <exp> call rnd heatmap
- for call and rnd exp you have to specify which <exploration> just after it.
- value for <exploration> : pone mone magnitude boolean
- you can specify an array of magnitude to be used just after the key-word magnitude
- a list of integer separated with ":" (1:2:3 for example)
- after the exploration, you can specify the random rates list used by rnd explorer just as for the magnitude (but with float)
- -run tasksize tasknumber to run the exploration of the impact of the size or the number of task
- runs will be executed before everything else, you must specify a subject (with -s) before
- you can type -run gui to run the demo gui with success meter
- -help display this help