<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>

<doc>
   <title>Bayesian Networks</title>

   <!-- ************************************************************************* -->

   <body>
      <br/><br/>

         <p>
            This page documents all the tools within the dlib library that relate
            to the construction and evaluation of Bayesian networks.  If you want
            a quick introduction to the tools then you should consult the 
            Bayesian Net <a href="bayes_net_ex.cpp.html">example program</a>.  
            
         </p>
         <p>
            The
            library also comes with a graphical application to assist in the
            creation of bayesian networks.  This application is one of the 
            <a href="bayes_net_gui_ex.cpp.html">example programs</a>, so to use it
            you have to compile it yourself. 
         </p>

   </body>

   <!-- ************************************************************************* -->

   <menu width="150">
    <top>
      <section>
         <name>Tools</name>
         <item>assignment</item>
         <item>joint_probability_table</item>
         <item>conditional_probability_table</item>
         <item>bayes_node</item>
         <item>bayesian_network_gibbs_sampler</item>
         <item>bayesian_network_join_tree</item>

      </section>

      <section>
         <name>Node Utilities</name>
         <item>set_node_value</item>
         <item>node_value</item>
         <item>node_is_evidence</item>
         <item>set_node_as_evidence</item>
         <item>set_node_as_nonevidence</item>
         <item>set_node_num_values</item>
         <item>node_num_values</item>
         <item>node_probability</item>
         <item>set_node_probability</item>
         <item>node_first_parent_assignment</item>
         <item>node_next_parent_assignment</item>
         <item>node_cpt_filled_out</item>

      </section>

    </top>  
   </menu>

   <!-- ************************************************************************* -->
   <!-- ************************************************************************* -->
   <!-- ************************************************************************* -->

   <components>
   
   <!-- ************************************************************************* -->
      
      <component>
         <name>bayesian_network_join_tree</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This object represents an implementation of the join tree algorithm 
            (a.k.a. the junction tree algorithm)
            for inference in bayesian networks.  
         </description>
         <examples>
            <example>bayes_net_ex.cpp.html</example>
            <example>bayes_net_gui_ex.cpp.html</example>
            <example>bayes_net_from_disk_ex.cpp.html</example>
         </examples>
                                 
      </component>
   
   <!-- ************************************************************************* -->
      
      <component>
         <name>bayesian_network_gibbs_sampler</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This object performs Markov Chain Monte Carlo sampling of a bayesian
            network using the Gibbs sampling technique. 
         </description>
         <examples>
            <example>bayes_net_ex.cpp.html</example>
         </examples>
                                 
      </component>
   
   <!-- ************************************************************************* -->
      
      <component>
         <name>bayes_node</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This object represents a node in a bayesian network.  It is
            intended to be used inside the <a href="containers.html#directed_graph">directed_graph</a> object to
            represent bayesian networks.
         </description>
                                 
         <examples>
            <example>bayes_net_ex.cpp.html</example>
            <example>bayes_net_gui_ex.cpp.html</example>
         </examples>
      </component>
   
   <!-- ************************************************************************* -->
      
      <component>
         <name>conditional_probability_table</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This object represents a conditional probability table.
         </description>
                                 
      </component>
   
   <!-- ************************************************************************* -->
      
      <component>
         <name>joint_probability_table</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This object represents a joint probability table.  
         </description>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      <component>
         <name>assignment</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This object models an assignment of random variables to particular values.
            It is used with the <a href="#joint_probability_table">joint_probability_table</a> and 
            <a href="#conditional_probability_table">conditional_probability_table</a>
            objects to represent assignments of various random variables to actual values.
         </description>
         <examples>
            <example>bayes_net_ex.cpp.html</example>
            <example>bayes_net_gui_ex.cpp.html</example>
         </examples>
                                 
      </component>
   
   <!-- ************************************************************************* -->
      
      <component>
         <name>set_node_probability</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily set the probability of a  
            <a href="#bayes_node">bayes_node</a> given its parents when it is inside 
            a <a href="containers.html#directed_graph">directed_graph</a> object. 
         </description>
         <examples>
            <example>bayes_net_ex.cpp.html</example>
         </examples>
                                 
      </component>
   
   <!-- ************************************************************************* -->
      
      <component>
         <name>node_first_parent_assignment</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily obtain an <a href="#assignment">assignment</a>
            that contains all the parents of a node in a bayesian network.
         </description>
         <examples>
            <example>bayes_net_gui_ex.cpp.html</example>
         </examples>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      <component>
         <name>node_next_parent_assignment</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily loop through all the parent <a href="#assignment">assignments</a>
            of a node in a bayesian network.
         </description>
         <examples>
            <example>bayes_net_gui_ex.cpp.html</example>
         </examples>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      <component>
         <name>node_cpt_filled_out</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily verify that a node
            in a bayesian network has its <a href="#conditional_probability_table">conditional_probability_table</a> 
            completely filled out.
         </description>
         <examples>
            <example>bayes_net_gui_ex.cpp.html</example>
         </examples>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      
      <component>
         <name>node_probability</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily obtain the probability of a  
            <a href="#bayes_node">bayes_node</a> given its parents when it is inside 
            a <a href="containers.html#directed_graph">directed_graph</a> object. 
         </description>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      <component>
         <name>node_num_values</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily obtain the number of values of a  
            <a href="#bayes_node">bayes_node</a> when it is inside 
            a <a href="containers.html#directed_graph">directed_graph</a> object. 
         </description>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      <component>
         <name>set_node_num_values</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily set the number of values of a  
            <a href="#bayes_node">bayes_node</a> when it is inside 
            a <a href="containers.html#directed_graph">directed_graph</a> object. 
         </description>
         <examples>
            <example>bayes_net_ex.cpp.html</example>
         </examples>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      <component>
         <name>set_node_as_nonevidence</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily remove the evidence flag of a  
            <a href="#bayes_node">bayes_node</a> when it is inside 
            a <a href="containers.html#directed_graph">directed_graph</a> object. 
         </description>
         <examples>
            <example>bayes_net_ex.cpp.html</example>
         </examples>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      <component>
         <name>set_node_as_evidence</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily set the evidence flag of a  
            <a href="#bayes_node">bayes_node</a> when it is inside 
            a <a href="containers.html#directed_graph">directed_graph</a> object. 
         </description>
         <examples>
            <example>bayes_net_ex.cpp.html</example>
         </examples>
                                 
      </component>

   <!-- ************************************************************************* -->
      
      <component>
         <name>node_is_evidence</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily determine if a  
            <a href="#bayes_node">bayes_node</a> is evidence when it is inside 
            a <a href="containers.html#directed_graph"> directed_graph</a> object. 
         </description>
                                 
      </component>
      
   <!-- ************************************************************************* -->
      
      <component>
         <name>node_value</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily obtain the value of a 
            <a href="#bayes_node">bayes_node</a> when it is inside a <a href="containers.html#directed_graph">
            directed_graph</a> object. 
         </description>
                                 
      </component>
      
   <!-- ************************************************************************* -->
      
      <component>
         <name>set_node_value</name>
         <file>dlib/bayes_utils.h</file>
         <spec_file link="true">dlib/bayes_utils/bayes_utils_abstract.h</spec_file>
         <description>
            This is a function declared in the dlib::bayes_node_utils namespace.  It 
            is a convenience function that allows you to easily modify the value of a 
            <a href="#bayes_node">bayes_node</a> when it is inside a <a href="containers.html#directed_graph">
            directed_graph</a> object. 
         </description>
         <examples>
            <example>bayes_net_ex.cpp.html</example>
         </examples>
                                 
      </component>
      
   <!-- ************************************************************************* -->

   </components>

   <!-- ************************************************************************* -->


</doc>


