BNUtils.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        BNUtils.h
00031  * @author      Ernesto Colla (ernesto@gmail.com)
00032  * @version     0.0.1
00033  * @date        Julho/2007 (2007-06-28)
00034  * @brief       Biblioteca do tipo "interface" (analogia com java) para encapsular implementações de funções úteis
00035  * em Redes Bayesianas (BN: \e Bayesian \e Network).
00036  *
00037  */
00038 
00039 #ifndef BNUTILS_H
00040 #define BNUTILS_H
00041 
00042 /* Bibliotecas específicas */
00043 #include "BNMain.h"
00044 #include "graphtools.h"
00045 #include "bayesball.h"
00046 #include "threadtree.h"
00047 
00048 /* Defines */
00049 
00050 /* Funções */
00051 
00052 /*!
00053  * @brief Constrói o \e Moral \e Graph para uma Rede Bayesiana (BN: \e Bayesian \e Network) a partir de um
00054  * conjunto de variáveis requisitadas (\e Required \e Variables).
00055  *
00056  * Atenção: No grafo moral, os \e ids das variáveis requisitadas são mantidos os mesmos do grafo da rede
00057  * bayesiana, mesmo que não estejam em uma seqüência contínua.
00058  * @param[in] nxr Número de elementos do \e array de variáveis requisitadas (\e Required \e Variables).
00059  * @param[in] xr \e Array de variáveis requisitadas (\e Required \e Variables).
00060  * @param[in] bayesnet BN que será a base para construção do \e Moral \e Graph.
00061  * @return \e Moral \e Graph construído a partir das variáveis requisitadas da rede bayesiana.
00062  */
00063 
00064 Graph* buildBNMoralGraph (int nxr, int* xr, BayesNet* bayesnet);
00065 
00066 /*!
00067  * @brief Determina a ordem de eliminação de um grafo moral de uma Rede Bayesiana.
00068  * @param[in] moral Grafo Moral do qual a ordem de eliminação deve ser determinada.
00069  * @return \e Array com os \e ids dos vértices na ordem que devem ser eliminados.
00070  */
00071 
00072 int* defineBNEliminationOrder(Graph* moral);
00073 
00074 /*!
00075  * @brief Executa a fatoração simbólica do grafo moral com base em uma ordem de eliminação predefinida.
00076  *
00077  * Os parâmetros de entrada \e refEliminationTree e \e refFilledGraph devem ser explicitamente inicializados antes da chamada da função.
00078  * Por questão de performance o parâmetro \e refFilledGraph pode ser NULL e neste caso não será contruído.
00079  * @param[out] refElmTree Referência para a árvore de eliminação quer será preeenchida.
00080  * @param[out] refFilledGraph Referência para o grafo preenchido, se NULL, não monta do gráfico preenchido e ganha performance.
00081  * @param[in] moral     \e Moral \e Graph a ser fatorado.
00082  * @param[in] elmorder Ordem de eliminação.
00083  */
00084 
00085 void doBNSymbolicFactorization(Graph** refElmTree, Graph** refFilledGraph, Graph* moral, int* elmorder);
00086 
00087 /*!
00088  * @brief Determina o conjunto de variáveis relevante para uma \e query na BN. Onde uma \e query é a inferência 
00089  * sobre a BN para um determinado estado das variáveis.
00090  * @param[out] nxr Ponteiro para um inteiro que irá armazenar o tamanho do \e array de inteiros que a função retorna.
00091  * @param[in] nxq Número de variáveis questionadas (\e Query \e Variables).
00092  * @param[in] xq \e Array com os \e ids das variáveis questionadas (\e Query \e Variables).
00093  * @param[in] nxe Número de variáveis que compõe a evidência (\e Evidence), ou seja, as variáveis observadas. O estado da variável esta
00094  * em outra estrutura denominada \e finding.
00095  * @param[in] xe \e Array com os \e ids das variáveis observadas.
00096  * @param[in] bayesnet BN da qual se deseja obter as variáveis requisitadas para a inferência.
00097  * @return Um \e array de inteiros com os \e ids dos vértices, e portanto das varíaveis, requisitadas (\e Required \e Variables) para o 
00098  * procedimento de inferência.
00099  */
00100 
00101 int* defineBNRequiredVars(int* nxr, int nxq, int* xq, int nxe, int* xe, BayesNet* bayesnet);
00102 
00103 #endif

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