Code Monkey home page Code Monkey logo

lsencode's Introduction

# Generator of Quasigroup Completion Problem and related problems

"lsencode" is a generator of QWH (Quasigroup with Holes) and QCP
(Quasigroup Completion Problem). The distribution contains a README
file, source code in c of the generator, examples (directory PLS),
and four related papers.

Also see http://www.cs.cornell.edu/gomes/QUASIdemo.html for a demo of solving
QCP instances.

# General descriptions of lsencode:
        - Program to generate QWH (Quasigroup with Holes) and QCP (Quasigroup 
	Complete Problem) instances using different models (e.g., random and 
	balanced), to perform forward checking, and to convert to SAT.

        Use: for file names (.pls, .ols, or .sol files) only specify the
                root, do NOT include the extension.
                For each operation, creates a line in the
                log file "record" in the current directory.

	File formats used in lsencode:
                *.pls -- files containing partial Latin squares
                *.cnf -- files containing the CNF encoding of a 
                        partial Latin square
                *.sol -- files containing a solution to the CNF
                        encoding of a .pls file, in the form of
                        a list of literals
                *.ols -- files containing latin squares generated
                        by the old sgenuls program.

	Compile lsencode by simply typing "make"

# Usage

        lsencode poke {random | balanced | most | least | | banded} INFILE NUMHOLE OUTFILE { SEED }
                reads INFILE.pls, pokes NUMHOLE holes in it using 
		specified model (random, balanced, most, least and banded),
		outputs OUTFILE.pls.
		Pls see the paper of IJCAI-01 for difference between
		random and balanced models. 

        lsencode pls2sat INFILE { minimal }
                reads INFILE.pls, creates INFILE.cnf; if "minimal"
                included use reduced set of axioms.  Does forward
                checking during conversion.

        lsencode ols2pls INFILE
                reads INFILE.ols, converts format to INFILE.pls

        lsencode forward INFILE { OUTFILE }
                reads INFILE.pls, perform forward checking, 
                output optionally to OUTFILE.pls.
                
                Tracing information includes:
                csp_vars: number of squares left uncolored after
                        forward checking.
                binary_vars: number of Boolean variables in SAT
                        encoding after forward checking; note that this may range 
                        from csp_vars to order*csp_vars.
                fwd_csp_bb: number of squares colored by forward
                        checking.
                fwd_bin_bb: number of Boolean variables determined
                        by forward checking.   The "Forward checking Boolean backbone".

        lsencode sat2pls INFILE { OUTFILE }
                read INFILE.pls and INFILE.sol, test validity of
                solution, write solved latin square to OUTFILE.pls

        lsencode new {empty | regular} OUTFILE ORDER
                create OUTFILE.pls of size ORDER, either as an empty
                latin square or a solved regular latin square

        lsencode new {qcp | bqcp} OUTFILE ORDER HOLES {SEED}
                create OUTFILE.pls of size ORDER with HOLES holes using 
		random (qcp) or balanced (bqcp) models. The created instance
		can be satisfiable or unsatisfiable
                                
        lsencode shuffle INFILE SHUFFLES OUTFILE { SEED }
                read INFILE.pls, shuffle it SHUFFLES times, and write
                result to OUTFILE.pls
                

# Examples

Example of generating a balanced QWH instance of order 30 and 400 holes:

    // create an empty square bqwh-30-empty.pls of order 30:
    lsencode new empty bqwh-30-empty 30

    // convert it into cnf format:
    lsencode pls2sat bqwh-30-empty

    // fill the empty square using walksat and save the solution in bqwh-30-empty.sol:
    walksat  -out bqwh-30-empty.sol < bqwh-30-empty.cnf

    // transform the solution into pls format
    lsencode sat2pls bqwh-30-empty bqwh-30-walksat

    // shuffle it
    lsencode shuffle bqwh-30-walksat 10000 bqwh-30-shuffle

    // poke holes in balanced model
    lsencode poke balanced bqwh-30-shuffle 400 bqwh-30-400

Note that we start with an empty square and use  walksat to fill it into a 
full square instead of generating a full square directly by lsencode. The
reason is that the first way give us an random start point for the later shuffling.

# REPORTING BUGS

If you find a bug in the generator, please make sure to tell us about it!

Report bugs and propose modifications and enhancements to
[email protected] (original author) or in the GitHub issues.

# Remarks

I did not develop this project.
I just put it on GitHub, because it's no longer available on its original home and probably not maintained anymore.

lsencode's People

Contributors

helges avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.