Class ProbabilityFunction<T extends Comparable<T>>

  • Type Parameters:
    T - The class of the objects used.
    All Implemented Interfaces:
    Map<T,​Probability>

    public class ProbabilityFunction<T extends Comparable<T>>
    extends Object
    implements Map<T,​Probability>
    This class represents a probability distribution over some set of objects
    Author:
    Matthias Thimm
    • Constructor Detail

      • ProbabilityFunction

        public ProbabilityFunction()
        Creates a new probability function.
      • ProbabilityFunction

        public ProbabilityFunction​(ProbabilityFunction<T> other)
        Creates a new probability function by copying the given one.
        Parameters:
        other - another probability function
    • Method Detail

      • normalize

        protected static void normalize​(List<Double> probabilities)
        Normalizes the given list of probabilities, i.e. divides each probability by the sum of all probabilities.
        Parameters:
        probabilities - a list of probabilities
      • isNormalized

        public boolean isNormalized()
        Checks whether this probability function is normalized, i.e. the sum of all probabilities is 1.
        Returns:
        "true" if this probability function is normalized.
      • normalize

        public void normalize()
        Normalizes this probability function to have mass 1.
      • convexCombination

        public ProbabilityFunction<T> convexCombination​(double d,
                                                        ProbabilityFunction<T> other)
        Computes the convex combination of this P1 and the given probability distribution P2 with parameter d, i.e. it returns a P with P(i)=d P1(i) + (1-d) P2(i) for every interpretation i.
        Parameters:
        d - a double
        other - a probability distribution
        Returns:
        the convex combination of this P1 and the given probability distribution P2 with parameter d.
        Throws:
        IllegalArgumentException - if either d is not in [0,1] or this and the given probability distribution are not defined on the same set of interpretations.
      • linearCombination

        public ProbabilityFunction<T> linearCombination​(double d1,
                                                        double d2,
                                                        ProbabilityFunction<T> other)
        Makes a linear combination of this distribution "p1" and the given distribution "other" and the given parameters, i.e. it returns a P with P(i)=d1 P1(i) + d2 P2(i) for every interpretation i. NOTE: P is normalized after combination.
        Parameters:
        d1 - a double.
        d2 - a double.
        other - a probability distribution.
        Returns:
        a probability distribution.
      • convexCombination

        public static <S extends Comparable<S>> ProbabilityFunction<S> convexCombination​(double[] factors,
                                                                                         ProbabilityFunction<S>[] creators)
                                                                                  throws IllegalArgumentException
        Computes the convex combination of the given probability distributions P1,...,PN with parameters factors, i.e. it returns a P with P(i)=d1 P1(i) + d2 P2(i)+ ... + dN PN(i) for every object i (with d1,...,dN=factors).
        Type Parameters:
        S - The object class
        Parameters:
        factors - a vector of doubles.
        creators - a vector of probability distributions.
        Returns:
        the convex combination of the given distributions with parameters factors.
        Throws:
        IllegalArgumentException - if either the sum of factors d is not in 1, or this and the given probability distributions are not defined on the same set of objects, or the lengths of creators and factors differ.
      • getUniformDistribution

        public static <S extends Comparable<S>> ProbabilityFunction<S> getUniformDistribution​(Set<S> objects)
        Returns the uniform distribution on the given interpretations.
        Type Parameters:
        S - The interpretation class
        Parameters:
        objects - set of interpretations of type S.
        Returns:
        the uniform distribution on the given interpretations.
      • sample

        public T sample()
        Samples one element from the domain of this probability function, depending on its probability.
        Returns:
        a sample from this probability function.
      • sample

        public T sample​(Random random)
        Samples one element from the domain of this probability function, depending on its probability.
        Parameters:
        random - the number generator used.
        Returns:
        a sample from this probability function.
      • getProbabilityVector

        public Vector<Probability> getProbabilityVector()
        Returns the vector of probabilities, depending on the order of the domain elements (which can be ordered as they implement Comparable).
        Returns:
        the vector of probabilities
      • getProbabilityVectorAsDoubles

        public Vector<Double> getProbabilityVectorAsDoubles()
        Returns the vector of probabilities, depending on the order of the domain elements (which can be ordered as they implement Comparable).
        Returns:
        the vector of probabilities as doubles