Skip to content

tuzz/machine_maker

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 

##Machine Maker

The Cook–Levin theorem proves SAT is NP-complete, in part, by demonstrating a polynonial-time reduction from any non-deterministic Turing machine to SAT. In practice, this reduction is rarely constructed for any practical application.

Under normal circumstances, a Turing machine description and an initial configuration are provided and the resulting SAT problem is satisfiable if the machine represented by the SAT problem accepts its input.

This project explores a novel application of this reduction. Instead of providing a machine description and initial configuration, it provides multiple input/output pairs that specify how the machine should behave, i.e. what its description should be to produce each computation.

The project was successful in that it can find Turing machines from input/output pairs, but in practice, the search process is prohibitively slow for all but trivial machines. For an example, refer to spec/machine_maker/search_spec.rb.

About

An exploration of the reduction in the Cook–Levin theorem

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages