probabilityOf() public méthode

public probabilityOf ( String Y, bool value, bool>.Dictionary evidence ) : double
Y String
value bool
evidence bool>.Dictionary
Résultat double
        private static double enumerateAll(BayesNet net, List<string> unprocessedVariables,
                Dictionary<String, bool> evidenceVariables)
        {
            if (unprocessedVariables.Count == 0)
            {

                return 1.0;
            }
            else
            {
                String Y = (String)unprocessedVariables[0];

                if (evidenceVariables.ContainsKey(Y))
                {

                    double probYGivenParents = net.probabilityOf(Y,
                            evidenceVariables[Y], evidenceVariables);

                    double secondTerm = enumerateAll(net, Util
                            .rest(unprocessedVariables), evidenceVariables);

                    return probYGivenParents * secondTerm;
                }
                else
                {
                    double sigma = 0.0;
                    Dictionary<String, bool> clone1 = cloneEvidenceVariables(evidenceVariables);
                    clone1.Add(Y, true);
                    double probYTrueGivenParents = net.probabilityOf(Y,
                            true, clone1);

                    double secondTerm = enumerateAll(net, Util
                            .rest(unprocessedVariables), clone1);

                    double trueProbabilityY = probYTrueGivenParents * secondTerm;

                    Dictionary<String, bool> clone2 = cloneEvidenceVariables(evidenceVariables);
                    clone2.Add(Y, false);
                    double probYFalseGivenParents = net.probabilityOf(Y,
                            false, clone2);

                    secondTerm = enumerateAll(net, Util.rest(unprocessedVariables),
                            clone2);
                    double falseProbabilityY = probYFalseGivenParents * secondTerm;
                    // System.Console.Write(secondTerm + " ) )");
                    sigma = trueProbabilityY + falseProbabilityY;
                    return sigma;

                }
            }
        }
Exemple #2
0
        private static double enumerateAll(BayesNet net, List <string> unprocessedVariables,
                                           Dictionary <String, bool> evidenceVariables)
        {
            if (unprocessedVariables.Count == 0)
            {
                return(1.0);
            }
            else
            {
                String Y = (String)unprocessedVariables[0];

                if (evidenceVariables.ContainsKey(Y))
                {
                    double probYGivenParents = net.probabilityOf(Y,
                                                                 evidenceVariables[Y], evidenceVariables);

                    double secondTerm = enumerateAll(net, Util
                                                     .rest(unprocessedVariables), evidenceVariables);

                    return(probYGivenParents * secondTerm);
                }
                else
                {
                    double sigma = 0.0;
                    Dictionary <String, bool> clone1 = cloneEvidenceVariables(evidenceVariables);
                    clone1.Add(Y, true);
                    double probYTrueGivenParents = net.probabilityOf(Y,
                                                                     true, clone1);

                    double secondTerm = enumerateAll(net, Util
                                                     .rest(unprocessedVariables), clone1);

                    double trueProbabilityY = probYTrueGivenParents * secondTerm;

                    Dictionary <String, bool> clone2 = cloneEvidenceVariables(evidenceVariables);
                    clone2.Add(Y, false);
                    double probYFalseGivenParents = net.probabilityOf(Y,
                                                                      false, clone2);

                    secondTerm = enumerateAll(net, Util.rest(unprocessedVariables),
                                              clone2);
                    double falseProbabilityY = probYFalseGivenParents * secondTerm;
                    // System.Console.Write(secondTerm + " ) )");
                    sigma = trueProbabilityY + falseProbabilityY;
                    return(sigma);
                }
            }
        }