NAME
Algorithm::SAT::Expression - A class that represent an expression for Algorithm::SAT::Backtracking
SYNOPSIS
# with the default implementation (Algorithm::SAT::Backtracking)
use Algorithm::SAT::Expression;
my $exp = Algorithm::SAT::Expression->new;
$exp->or( 'blue', 'green', '-yellow' );
$exp->or( '-blue', '-green', 'yellow' );
$exp->or( 'pink', 'purple', 'green', 'blue', '-yellow' );
my $model = $exp->solve();
# $model now is { 'yellow' => 1, 'green' => 1 }
# using a specific implementation
use Algorithm::SAT::Expression;
my $exp = Algorithm::SAT::Expression->new->with("Algorithm::SAT::Backtracking::DPLL");
$exp->or( 'blue', 'green', '-yellow' );
$exp->or( '-blue', '-green', 'yellow' );
$exp->or( 'pink', 'purple', 'green', 'blue', '-yellow' );
my $model = $exp->solve();
# $model now is { 'yellow' => 1, 'green' => 1 }
DESCRIPTION
Algorithm::SAT::Expression is a class that helps to build an expression to solve with Algorithm::SAT::Backtracking.
Have a look also at the tests file for an example of usage.
METHODS
and()
Takes the inputs and build an AND expression for it
or()
Takes the inputs and build an OR expression for it
xor()
Takes the inputs and build an XOR expression for it
solve()
Uses Algorithm::SAT::Backtracking to return a model that satisfies the expression. The model it's a hash containing in the keys the literal and as the value if their presence represented by a 1 and the absence by a 0.
Note: if you use the Ordered implementation, the result is a Hash::Ordered.
with()
Allow to change the SAT Algorithm used to solve the given expression
my $exp_simple_backtracking = Algorithm::SAT::Expression->new->with("Algorithm::SAT::Backtracking::DPLL");
if you don't request a specific implementation, defaults to Algorithm::SAT::Backtracking.
LICENSE
Copyright (C) mudler.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
mudler <mudler@dark-lab.net>
SEE ALSO
Algorithm::SAT::Backtracking, Algorithm::SAT::Backtracking::DPLL, Algorithm::SAT::Backtracking::Ordered, Algorithm::SAT::Backtracking::Ordered::DPLL