This is a short overview on different source files and scripts used to obtain results in the publications of "Computational methods in codes and games". The sources are provided as they are, with the notice that they were not originally intended to be released (hence the documentation in the source files is less than complete in most of the time). Running programs/scripts without parameters should give simple usage information (excluding few helper scripts). Some functionality for recalculating results in publications might not be present: for instance different neighborhood implementations [I]; compatibility for CrazyPatterns or implementation of "nearby" predictor [VII]. This is due (if put in nicely) failures in archiving. On the other hand, the sources may well include some parts which are not present in publications---these are relics from less successful attempts to get better results. In order to compile source gcc is needed. In order to run majority of scripts perl should be installed (as well as sed). "New lower bounds for multiple coverings" ========================================= You should have nauty in sub directory nauty22 to compile source, see http://cs.anu.edu.au/~bdm/nauty/. Version 22 is used in the publications, but other versions should work as well. For integer programming related functionality you should have glpk http://www.gnu.org/software/glpk/ installed. Sources: -------- exhaustive.c code.c file.c global.c neighbor.c canon.c search.c bounds.c hash.c depth.c Source codes with functionality divided into various files (whose name describes the contents more or less, e.g., file contains file input and output functionality and canon.c functionality to operate with nauty). Scripts: -------- makeES.sh: Compile 'exhaustive' search program form the sources. makeIPsphereProb.pl: Perl script for generating integer programming problems for a) getting minimum cardinality for a multiple coverings; and for b) determining maximum and minimum values for specific last(w) (e.g. maximum and minimum number of codewords with given weight w). enumerateDistributions.pl: Perl script for enumerating all weight distributions with given cardinality between "lowlimits" and "highlimits" fulfilling sphere covering bound. calculateBounds.pl: Perl script for generating "lowlimits" and "highlimits". listExhaustiveTasks.pl: Perlscript for generating all tasks for proving (non-)existence of a multiple covering with given parameters. Obtained results: ----------------- domax0IPsphere.sh & doIPsphere.sh: Helpers scripts (generate a problem and solve it). byExhaustive.sh: Results by exhaustive search. byIPsphere.sh: Results by IPsphere. bymax0IPsphere.sh: Results by IPsphere by noticing that last(0) = 0. Examples: --------- ./makeES.sh #compile exhaustive ./byIPsphere.sh #recalculate results by IPsphere... #...objective in result files give lower bound ./bymax0IPsphere.sh #recalculate results by max0IPspere... #...objective Z = 0 should non-existence ./byExhaustive.sh #recalculate results by exhaustive search... #...this would take a long time... "Further results on constructing asymmetric covering codes by tabu search" ========================================================================= Sources: -------- tabu.c: The latest version of tabu search algorithm for construction asymmetric, unidirectional and symmetric covering codes with given parameters. The implementation has some extra parameters for tuning fitness function. Again, these are (a#ap, b#bp and c#cp) are "relics" from less successful attempts to enhance performance of the search algorithm. The output line has following format Result Count [Parameters] Time (Iterations) where Result: Y = covering code was found, N = no covering code Count: Number of uncovered words... a bit redundant with Result [Parameters]: All parameters Time: How long the search proceeded Iterations: Number of iterations the search continued test.c: Simple program for testing whether given code is an asymmetric/a unidirectional/a covering code. The output has the number of uncovered words (three times... but calculated differently). Scripts: -------- iterator.pl: Perl script for calling given cmd repeatedly with different parameters. Examples: --------- gcc -otabu -tabu.c #compile tabu search algorithm ./tabu N10 R1 K200 oN10R1K200a -a #use it to construct a covering code... #...which should succeed with first try ./iterator.pl "./tabu N10 R1 K%1 iN10R1K%2a oN10R1K%1a -ae" 20 199 -1 4 200 -1 4 will try to generate new covering code using the previous code as a starting point (this will also generate some errors along the way... the iterator script is more convenient for testing different parameters than generating codes iteratively). "Entropy in Go" =============== One should install gnugo for related functionality. At the present time the binaries for MoGo (Release 3) seem not to be available on the web, please consult: http://www.lri.fr/~teytaud/mogo.html Sources: -------- parser.h, sgf2raw: Program to parse sgf-file and covert moves (in principal variation) in sgf to "human readable" format (alphabet for horizontal coordinate---skipping I---and number for vertical coordinate) and and cleaning all except moves themselves. Scripts: -------- askGNU.sh: Helper script for asking about single move from gnugo. ripsgf.pl: Helper script for cleaning a sgf from undesired commands. ripallsgf.pl: Helper script for cleaning a bunch of sgfs from undesired commands. s2r.sh: Helper script for for calling sgf2raw and cleaning away two last pass moves. cmpGameAndPredictionsMoGo.pl: Helper script for converting predictions by MoGo to the same format as with gnugo. makeExpectScriptForMogo.pl: Helper script for making an expect script to interact with MoGo (because sgf needs to "typed in" in order to query about moves). processMoGoGTPlog.pl: Helper script for processing MoGo log file. selectSGFs.pl: Perl script for selecting sgfs between players with equal strength with given rank and with sufficiently long games (>=100 moves) from a bunch of sgf (from KGS). replayGameGNU.pl: Perl script for replaying game with gnugo and getting predictions. replayGameMoGo.pl: Perl script for replaying game with MoGo and getting predictions. calStuffFromPred.pl: Perl script for calculating entropy from predictions. Files: ------ test200set/*.sgf: Sgfs from KGS along with some professional games (200 games per rank). The sgf have been cleaned from information (player names, dates, etc.). Examples: --------- gcc -osgf2raw sgf2raw.c #compile sgf2raw ./replayGameGNU.pl 1 test200set/2d.0000.*.sgf #replay game with gnugo... #...which may take a while ./calcStuffFromPred.pl 2d.*.GNU.1 #calculate stuff from result COMMON: ======= taskList.pl: Perl script for processing commands in given files and removing them. divideTaskList.pl: Perl script for dividing commands in a file to multiple files. Assuming shared file system which can be accessed by with multiple computers, these tow scripts enable convenient way to divide workload between computers: having all commands in one shared file 'alltasks' and the running './taskList.pl alltasks' make the computers fetch a new task from the list once they are finished with their current task. Some care must be taken though, so computers don't accessing and editing list at the same time... hence individual task should be sufficiently time consuming (so that list is not accessed all the time) and that the commands in the list were indeed executed. takeSmaller.pl: Perl script taking two files (number in each row) and picking the smaller into a total sum. For example, can be used to calculate the amount of necessary computing time if "optimal" processing order for weights could be always used with exhaustive search.