Package net.sf.tweety.logics.pl.util
Class SyntacticRandomSampler
- java.lang.Object
-
- net.sf.tweety.commons.BeliefSetSampler<PlFormula,PlBeliefSet>
-
- net.sf.tweety.logics.pl.util.SyntacticRandomSampler
-
- All Implemented Interfaces:
java.util.Iterator<PlBeliefSet>,BeliefSetIterator<PlFormula,PlBeliefSet>
public class SyntacticRandomSampler extends BeliefSetSampler<PlFormula,PlBeliefSet>
This sampler implements a random generation algorithm for generating formulas, based on the syntax tree of propositional formulas. Consider the following BNF for a propositional logic formula:
F ::== !F | F >> F | F || F | Awith propositions A. The algorithm for constructing formulas takes four parameters:
- probneg: the probability to generate a negation
- probconj: the probability to generate a conjunction
- probdisj: the probability to generate a disjunction
- recDecrease: a value in (0,1) by which the above probabilities are multiplied in each recursive step to increase likelihood of termination.
From these parameters the probability to generate a proposition "probprop" is computed via probprop=1-probneg-probconj-probdisj (the actual proposition is selected with a uniform distribution). Then a formula is generated by randomly selecting which rule in the above BNF is followed wrt. these probabilities. Note that the algorithm is not guaranteed to terminate.
- Author:
- Matthias Thimm
-
-
Field Summary
Fields Modifier and Type Field Description private static byteCONJprivate static byteDISJprivate static byteNEGprivate ProbabilityFunction<java.lang.Byte>probThe probability function modeling the random decisions.private ProbabilityFunction<Proposition>probPropThe probability function used to sample propositionsprivate static bytePROPprivate java.util.Randomrandprivate doublerecDecrease-
Fields inherited from class net.sf.tweety.commons.BeliefSetSampler
DEFAULT_MAXIMUM_BELIEFBASE_LENGTH, DEFAULT_MINIMUM_BELIEFBASE_LENGTH
-
-
Constructor Summary
Constructors Constructor Description SyntacticRandomSampler(Signature signature, Probability probneg, Probability probconj, Probability probdisj, double recDecrease)Creates a new sampler.SyntacticRandomSampler(Signature signature, Probability probneg, Probability probconj, Probability probdisj, double recDecrease, int minLength, int maxLength)Creates a new sampler.
-
Method Summary
Modifier and Type Method Description private ProbabilityFunction<java.lang.Byte>decrease(ProbabilityFunction<java.lang.Byte> prob, double value)Adapts the given probability function by decreasing the probabilities of NEG, CONJ and DISJ.PlBeliefSetnext()Returns the next belief setPlFormulasampleFormula(ProbabilityFunction<java.lang.Byte> prob)Samples a single formula.-
Methods inherited from class net.sf.tweety.commons.BeliefSetSampler
getMaxLength, getMinLength, getSamplerSignature, hasNext
-
-
-
-
Field Detail
-
prob
private ProbabilityFunction<java.lang.Byte> prob
The probability function modeling the random decisions.
-
probProp
private ProbabilityFunction<Proposition> probProp
The probability function used to sample propositions
-
recDecrease
private double recDecrease
-
NEG
private static final byte NEG
- See Also:
- Constant Field Values
-
CONJ
private static final byte CONJ
- See Also:
- Constant Field Values
-
DISJ
private static final byte DISJ
- See Also:
- Constant Field Values
-
PROP
private static final byte PROP
- See Also:
- Constant Field Values
-
rand
private java.util.Random rand
-
-
Constructor Detail
-
SyntacticRandomSampler
public SyntacticRandomSampler(Signature signature, Probability probneg, Probability probconj, Probability probdisj, double recDecrease)
Creates a new sampler.- Parameters:
signature- some set of propositionsprobneg- the probability to generate a negationprobconj- the probability to generate a conjunctionprobdisj- the probability to generate a disjunctionrecDecrease- a value in (0,1) by which the above probabilities are multiplied in each recursive step to increase likelihood of termination.
-
SyntacticRandomSampler
public SyntacticRandomSampler(Signature signature, Probability probneg, Probability probconj, Probability probdisj, double recDecrease, int minLength, int maxLength)
Creates a new sampler.- Parameters:
signature- some set of propositionsprobneg- the probability to generate a negationprobconj- the probability to generate a conjunctionprobdisj- the probability to generate a disjunctionrecDecrease- a value in (0,1) by which the above probabilities are multiplied in each recursive step to increase likelihood of termination.minLength- the minimum length of knowledge basesmaxLength- the maximum length of knowledge bases
-
-
Method Detail
-
decrease
private ProbabilityFunction<java.lang.Byte> decrease(ProbabilityFunction<java.lang.Byte> prob, double value)
Adapts the given probability function by decreasing the probabilities of NEG, CONJ and DISJ.- Parameters:
prob- a probability function.value- some value in (0,1)- Returns:
- the modified probability function.
-
sampleFormula
public PlFormula sampleFormula(ProbabilityFunction<java.lang.Byte> prob)
Samples a single formula.- Parameters:
prob- a probability function- Returns:
- a single formula.
-
next
public PlBeliefSet next()
Returns the next belief set- Specified by:
nextin interfaceBeliefSetIterator<PlFormula,PlBeliefSet>- Specified by:
nextin interfacejava.util.Iterator<PlBeliefSet>- Specified by:
nextin classBeliefSetSampler<PlFormula,PlBeliefSet>- Returns:
- the next belief set
-
-