# The HUGIN API

The HUGIN API (application program interface) is a library that allows a programmer to use Bayesian belief networks (with both discrete and continuous variables) and influence diagrams in his own application.

The HUGIN API is used as most other libraries: the application program invokes HUGIN API functions whenever it wants to have belief network operations performed (the HUGIN API doesn't take control of the application as a typical graphical user interface library would do).

The HUGIN API is currently available as a C library and as an ActiveX server.

Here is a short list of the most important functions/facilities provided by the HUGIN API:

- Construction of models (known as domains within the HUGIN API):
  - creation/deletion of domains/nodes;
  - adding/removing edges;
  - editing table data (probabilities and utilities);
  - accessing/changing the number of states of a node;
  - accessing/changing the name of a node; etc.
- Compilation of a domain (i.e., the creation of a secondary structure - the junction tree - which is needed for inference); some special options are available:
  - control of the triangulation step ([Kjærulff90]); and
  - approximation and compression ([Jensen&Andersen90]).
- Evidence and inference (i.e., the computation of conditional probabilities/densities for random variables and expected utilities for decision variables); some of the following options only apply to belief networks with all variables being of discrete type:
  - evidence types: instantiations and likelihoods;
  - joint distribution for an arbitrary set of random variables;
  - choice of inference (propagation) method: `sum' or `max' ([Dawid92]);
  - choice of evidence incorporation mode: `normal' or `fast retraction' ([Cowel&Dawid92]) ;
  - detection of conflicts within data ([Jensen et.al.91]);
  - the joint probability/density of the propagated evidence;
  - the probability of the most probable configuration given evidence;
  - simulation: given evidence, a configuration for all variables can be sampled according to the distribution determined by the evidence ([Dawid92]);
  - adaptation: update the conditional probability for a random variable given propagated evidence and past experience ([Spiegelhalter&Lauritzen90] and [Olesen et.al.92]).
- Miscellaneous:
  - error handling: whenever a HUGIN API operation fails, an error indicator is returned - it is then up to the application to decide what action to take;
  - saving/loading of domains:
    - using a textual format (known as the NET format - a "source" representation of belief networks and influence diagrams), or
    - using a "binary" format (which additionally is capable of representing the compiled structure of a domain);
  - associating user data with domains and nodes:
    - as arbitrary data, managed by the user, or
    - as attributes (key/value pairs - where both key and value must be character strings), managed by the HUGIN API;
  - table operations: manipulation of probability and utility tables;
  - accessing the nodes of a domain, junction tree, or a clique;
  - display information: accessing/modifying the information used by HUGIN Runtime.

You can download the HUGIN API reference manual from http://www.hugin.dk/documentation.

Back