BNLoader.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        BNLoader.h
00031  * @author      Ernesto Colla (ernesto@gmail.com)
00032  * @version     0.0.1
00033  * @date        Junho/2007 (2007-06-09)
00034  * @brief       Pacote com a função para ler e interpertar o arquivo com a definição de Rede bayesiana (BN: \e Bayesian \e Network).
00035  *
00036  * @todo
00037  *      -# Checar eventual memory leak
00038  */
00039 
00040 #ifndef BNLOADER_H
00041 #define BNLOADER_H
00042 
00043 /* Includes */
00044 #include <string.h>
00045 
00046 /* Bibliotecas específicas */
00047 #include "BNMain.h"
00048 #include "singlelinkedlist.h"
00049 #include "hash.h"
00050 
00051 /* Defines */
00052 
00053 #define STATE_NOT_DEFINED 0                             //!< Constante para estado não definido.
00054 #define STATE_FINISHED 1                                //!< Constante para indicar que o parser do arquivo foi concluído. 
00055 #define STATE_BIF 2                                             //!< Constante para indicar que iniciou o parser da definição da Rede Bayesiana.
00056 #define STATE_NETWORK 3                                 //!< Constante para indicar que iniciou o parser da Rede Bayesiana.
00057 #define STATE_VARIABLE 4                                //!< Constante para indicar que o parser esta analisando uma TAG que define uma variável.
00058 #define STATE_PROBABILITY 5                             //!< Constante para indicar que o parser esta analisando uma TAG que define um potencial (ou probabilidade).
00059 #define STATE_QUERY 6                                   //!< Constante para indicar que o parser esta analisando o conteúdo de uma TAG 'QUERY'.
00060 #define STATE_EVIDENCES 7                               //!< Constante para indicar que o parser esta analisando o conteúdo de uma TAG 'EVIDENCES'.
00061 #define STATE_COMMENT 8                                 //!< Constante para indicar que o parser esta percorrendo um comentário.
00062 
00063 #define TAG_BIF "BIF"                                   //!< TAG que inicia o conteúdo XML para a definição de uma Rede Bayesiana.
00064 #define TAG_NETWORK "NETWORK"                   //!< TAG que inicia a definição de uma Rede Bayesiana propriamente dita.
00065 #define TAG_NAME "NAME"                                 //!< TAG para nome de diversas estruturas de dados.
00066 #define TAG_VARIABLE "VARIABLE"                 //!< TAG para definição de uma variável.
00067 #define TAG_VALUE "VALUE"                               //!< TAG para definição dos valores dos estados das variáveis (alternativa para TAG_OUTCOME).
00068 #define TAG_OUTCOME "OUTCOME"                   //!< TAG para definição dos valores dos estados das variáveis (alternativa para TAG_VALUE).
00069 #define TAG_TYPE "TYPE"                                 //!< TAG que indica o tipo da variável.
00070 #define TAG_PROBABILITY "PROBABILITY"   //!< TAG para definição dos potenciais (alternativa para TAG_DEFINITION).
00071 #define TAG_DEFINITION "DEFINITION"             //!< TAG para definição dos potenciais (alternativa para TAG_PROBABILITY).
00072 #define TAG_FOR "FOR"                                   //!< TAG que indica a variável "condicionada" nos potenciais.
00073 #define TAG_GIVEN "GIVEN"                               //!< TAG que indica as variáveis "condicionadoras" nos potenciais.
00074 #define TAG_TABLE "TABLE"                               //!< TAG para a definição da tabela com a distribuição de probabilidades. 
00075 #define TAG_QUERY "QUERY"                               //!< TAG para a definição das variáveis questionadas \e Query \e Variables.
00076 #define TAG_EVIDENCES "EVIDENCES"               //!< TAG para definir umam variável observada e o seu respectivo estado observado.
00077 
00078 #define TYPE_DISCRETE "DISCRETE"                //!< Constante para identificar variável discreta.
00079 #define TYPE_CONTINUOUS "CONTINUOUS"    //!< Constante para identificar variável contínua.
00080 
00081 #define MAX_LINE_LENGTH 8192                    //!< Tamanho máximo da linha que pode ser lida.
00082 #define MAX_TAG_LENGTH 1024                             //!< Tamanho máximo da TAG utilizada para identificar as partes do arquivo.
00083 #define MAX_TAGVALUE_LENGTH 8192                //!< Tamanho máximo do conteúdo de uma TAG.
00084 
00085 #define MAX_POTENTIAL_VALUES 4096               //!< Número máximo de valores que pode ser lido para um potencial.
00086 
00087 /*!
00088  * @brief Carrega a definição de uma Rede Bayesiana a partir de um arquivo com formato predefinido
00089  * @param[in] filename Nome do arquivo que define a Rede Bayesiana.
00090  * @return Ponteiro para a Rede Bayesiana construída a partir do arquivo.
00091  */
00092 BayesNet* bnload(char* filename);
00093 
00094 /*!
00095  * @brief Carrega de uma arquivo com formato predefinido as variáveis questionadas (\e Query \e Variables)
00096  * sobre as quais se deseja fazer a inferência.
00097  * @param[out] nxq Ponteiro para um inteiro com o número de elementos do \e array de \e ids das \e Query \e Variables.
00098  * @param[in] filename Nome do arquivo no qual estão definidas as \e Query \e Variables.
00099  * @param[in] bayesnet Rede Bayesiana sobre a qual será feita a inferência.
00100  * @return \e Array com os \e ids das \e Query \e Variables.
00101  */
00102 
00103 int* bnloadquery(int* nxq, char* filename, BayesNet* bayesnet);
00104 
00105 /*!
00106  * @brief Carrega de uma arquivo com formato predefinido as variáveis observadas (\e Evidence) e os respectios estados observados (\e findings)
00107  * sobre as quais se deseja fazer a inferência.
00108  * @param[out] nxe Ponteiro para um inteiro com o número de elementos do \e array de \e ids das variáveis observadas. 
00109  * @param[out] findings Potenciais que indicam os estados observados das variáveis.
00110  * @param[in] filename Nome do arquivo no qual estão definidas as variáveis observadas e os seus respectivos estados.
00111  * @param[in] bayesnet Rede Bayesiana sobre a qual será feita a inferência.
00112  * @return \e Array com os \e ids das variáveis observadas.
00113  */
00114 
00115 int* bnloadevidences(int* nxe, Potential** findings, char* filename, BayesNet* bayesnet);
00116 
00117 #endif

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