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 graphtools.h 00031 * @author Ernesto Colla (ernesto@gmail.com) 00032 * @version 0.0.1 00033 * @date Fevereiro/2007 00034 * @brief Operações genéricas com grafos. 00035 * 00036 * Operações básicas implementadas: 00037 * -# Contrução do Grafo Moral (\e Moral \e Graph) de um grafo direcional. 00038 * -# Fatoração simbólica do grafo moral. 00039 * 00040 */ 00041 00042 #ifndef GRAPHTOOLS_H 00043 #define GRAPHTOOLS_H 00044 00045 /* Bibliotecas específicas */ 00046 #include "graph.h" 00047 00048 /* Funções */ 00049 00050 /*! 00051 * @brief Cria a Grafo Moral (\e Moral \e Graph) de um grafo direcionado. 00052 * @param[in] graph Grafo direcionado de origem. 00053 * @return Moral Graph do grafo de origem. 00054 */ 00055 00056 Graph* buildMoralGraph (Graph* graph); 00057 00058 /*! 00059 * @brief Executa a fatoração simbólica do grafo moral com base em uma ordem de eliminação predefinida. 00060 * 00061 * Os parâmetros de entrada \e refEliminationTree e \e refFilledGraph devem ser explicitamente inicializados antes da chamada da função. 00062 * Por questão de performance o parâmetro \e refFilledGraph pode ser NULL e neste caso não será contruído. 00063 * @param[out] refEliminationTree Referência para a árvore de eliminação quer será preeenchida. 00064 * @param[out] refFilledGraph Referência para o grafo preenchido, se NULL, não monta do gráfico preenchido e ganha performance. 00065 * @param[in] moral Moral graph a ser fatorado. 00066 * @param[in] elmorder Ordem de eliminação. 00067 */ 00068 00069 void doSymbolicFactorization(Graph** refEliminationTree, Graph** refFilledGraph, Graph* moral, int* elmorder); 00070 00071 #endif