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 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 PlBeliefSet
next()
Returns the next belief setPlFormula
sampleFormula(ProbabilityFunction<java.lang.Byte> prob)
Samples a single formula.-
Methods inherited from class net.sf.tweety.commons.BeliefSetSampler
getMaxLength, getMinLength, getSamplerSignature, hasNext
-
-
-
-
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
-
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:
next
in interfaceBeliefSetIterator<PlFormula,PlBeliefSet>
- Specified by:
next
in interfacejava.util.Iterator<PlBeliefSet>
- Specified by:
next
in classBeliefSetSampler<PlFormula,PlBeliefSet>
- Returns:
- the next belief set
-
-