Class SyntacticRandomSampler

java.lang.Object
org.tweetyproject.commons.BeliefSetSampler<PlFormula,PlBeliefSet>
org.tweetyproject.logics.pl.util.SyntacticRandomSampler
All Implemented Interfaces:
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 | A

with 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