BNMain.h

Vá para a documentação deste arquivo.
00001 /*
00002 * Copyright 2007, 2008 Ernesto Coutinho Colla
00003 *
00004 * "BN Parallel Package" é um nome que identifica o conjunto de programas 
00005 * que forma uma biblioteca de rotinas que foram desenvolvidas como parte da 
00006 * dissertação de mestrado do autor em Ciências da Computação.
00007 *
00008 * O conjunto de programas foi integralmente desenvolvido pelo autor e está
00009 * disponível sob a licença GPL (GNU General Public License). O entendimento
00010 * integral dos termos da licença GPL é condição necessária para a utilização
00011 * parcial ou integral de qualquer parte deste conjunto de programas.
00012 *
00013 * This file is part of BN Parallel Package.
00014 * 
00015 * BN Parallel Package is free software: you can redistribute it and/or modify
00016 * it under the terms of the GNU General Public License as published by
00017 * the Free Software Foundation, either version 3 of the License.
00018 *
00019 * BN Parallel Package is distributed in the hope that it will be useful,
00020 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00021 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00022 * GNU General Public License for more details.
00023 *
00024 * You should have received a copy of the GNU General Public License
00025 * along with BN Parallel Package. If not, see <http://www.gnu.org/licenses/>.
00026 */
00027 
00028 
00029 /*!
00030  * @file        BNMain.h
00031  * @author      Ernesto Colla (ernesto@gmail.com)
00032  * @version     0.0.1
00033  * @date        Julho/2007 (2007-06-07)
00034  * @brief       Main Package com as definições das estruturas de Redes Bayesianas (BN: \e Bayesian \e Networks).
00035  *
00036  * @todo
00037  *      -# Na função buildBayesNet ao invés de copiar (duplicar) os dados utilizados como 
00038  *      parâmetro de entrada, faz-se a atribuição direta para as estruturas de dados correspondentes
00039  *      na BayesNet. Eventualmente a melhor forma seria copiar o conteúdo dos parâmetros da memória
00040  *      para as estruturas internas da BayesNet e desta forma isolar.Verificar se é utilizada esta função.
00041  *
00042  */
00043 
00044 #ifndef BNMAIN_H
00045 #define BNMAIN_H
00046 
00047 /* Bibliotecas Específicas */
00048 #include "graph.h"
00049 #include "potential.h"
00050 
00051 /* Defines */
00052 
00053 /* Definições das estruturas e tipos de dados */
00054 
00055 /*! Estrutura que armazena uma Rede Bayesiana (BN: \e Bayesian \e Networks). Armazena os vértices, os arcos e as
00056  * distribuições de probabilidades os potenciais (potential.h) associado a cada uma das variáveis.
00057  */
00058 typedef struct struct_BayesNet {
00059         struct struct_Graph* graph;             //!< Grafo que define a topologia da Rede.
00060         Variable** variables;                   //!< Variáveis associadas aos vértices do grafo. O \e id da variável é igual ao \e id do vértice correspondente no grafo.
00061         Potential** potentials;                 //!< Potenciais associados às váriaveis.
00062 } BayesNet;
00063 
00064 /* Funções */
00065 
00066 /*!
00067  * @brief Cria uma nova Rede Bayesiana com um grafo direcionado vazio sem nenhuma variável e sem nenhum potencial.
00068  * @return Um ponteiro para uma estrutura de dados para armazenar uma Rede Bayesiana.
00069  */
00070 
00071 BayesNet* newBayesNet();
00072 
00073 /*!
00074  * @brief Cria uma nova Rede Bayesiana a partir dos parâmetros de entrada.
00075  * @param[in] graph Grafo que descreve a topologia da rede.
00076  * @param[in] variables \e Array de variáveis que irão compor ao BN.
00077  * @param[in] potentials \e Array de potenciais que caracterizam a BN.
00078  * @return Um ponteiro para uma estrutura de dados para armazenar uma Rede Bayesiana.
00079  */
00080 
00081 BayesNet* buildBayesNet(Graph* graph, Variable** variables, Potential** potentials);
00082 
00083 /*!
00084  * @brief Dump para o \e stdout do conteúdo da BN.
00085  * @param[in] bayesnet Ponteiro para a BN da qual se deseja fazer o dump.
00086  */
00087 
00088 void dumpBayesNet(BayesNet* bayesnet);
00089 
00090 /*!
00091  * @brief Destrói a BN e libera os recursos alocados. Atenção: Destrói e libera inclusive os recursos que estavam
00092  * alocados para armazenar os potenciais e as variáveis.
00093  * @param[out] refBayesNet Referência para a BN que se deseja destruir.
00094  */
00095 void destroyBayesNet(BayesNet** refBayesNet);
00096 
00097 /*!
00098  * @brief Tamanho (número de vértices=número de variáveis) que compõe o grafo da BN.
00099  * @param[in] bayesnet Ponteiro para a BN da qual se deseja saber o número de vértices.
00100  * @return Número de vértices (=número de variáveis) da BN.
00101  */
00102 int bnsize(BayesNet* bayesnet);
00103 
00104 /*!
00105  * @brief Retorna o \e array de potenciais da BN.
00106  * @param[in] bayesnet Ponteiro para a BN da qual se deseja o \e array de potenciais.
00107  * @return \e Array de potenciais da BN.
00108  */
00109 
00110 Potential** bnpotentials(BayesNet* bayesnet);
00111 
00112 /*!
00113  * @brief Retorna o \e array de variáveis da BN.
00114  * @param[in] bayesnet Ponteiro para a BN da qual se deseja o \e array de variáveis.
00115  * @return \e Array de variáveis da BN.
00116  */
00117 
00118 Variable** bnvariables(BayesNet* bayesnet);
00119 
00120 #endif

Gerado em Fri Feb 15 19:50:41 2008 para IME-Dissertação por  doxygen 1.5.1