#include <math.h>
#include <pthread.h>
#include "BNMain.h"
#include "graphtools.h"
#include "threadtree.h"
#include "singlelinkedlist.h"
Gráfico de dependência de inclusões para BNVarElimination.h:
Vá para o código-fonte deste arquivo.
Componentes | |
struct | struct_Elimination |
Definições e Macros | |
#define | DBGOUT stdout |
Definições de Tipos | |
typedef struct_Elimination | Elimination |
Funções | |
ThreadTree * | buildBNThreadTree (int nxq, int *xq, int nxe, int *xe, Potential **findings, BayesNet *bayesnet, int *elmorder, Graph *moral, Graph *elmtree) |
Constrói a árvore de eliminação de threads. A árvore de eliminação uma vez definida pode ser reutilizada para executar diversas inferências. | |
void | destroyBNThreadTree (ThreadTree **refThreadTree) |
Destrói a árvore de threads criada para executar a inferência. | |
Potential * | doBNLinearVariableElimination (int nxq, int *xq, int nxe, int *xe, Potential **findings, BayesNet *bayesnet, int *elmorder, Graph *moral) |
Executa linearmente a inferência com a eliminação de variáveis da Rede Bayesiana, ou seja, apenas uma variável é eliminada de cada vez de forma serial, sem explorar a possibilidade de paralelização. | |
Potential * | doBNVariableElimination (ThreadTree *threadtree) |
Executa a inferência com a eliminação de variáveis da Rede Bayesiana explorando a possibilidade de executar a eliminação em paralelo. | |
void | executeElimination (Elimination **refElimination) |
Executa a operação de eliminação de variável e armazena o resultado na própria estrutura de dados. | |
Potential * | marginalizeNotRequired (Graph *moral, Potential *source) |
Marginaliza as variáveis não requeridas de um potencial. | |
void | normalize (int nvalues, double **refValues) |
Normaliza um array de valores reais, ou seja, altera os valores de forma que a soma dos mesmos seja igual a 1. | |
void | scale (int nvalues, double **refValues) |
void * | taskVariableElimination (void *arg) |
Função genérica invocada pela thread para executar uma operação de eliminação. |
Definição no arquivo BNVarElimination.h.
typedef struct struct_Elimination Elimination |
Estrutura de dados para definir uma operação de eliminação
ThreadTree* buildBNThreadTree | ( | int | nxq, | |
int * | xq, | |||
int | nxe, | |||
int * | xe, | |||
Potential ** | findings, | |||
BayesNet * | bayesnet, | |||
int * | elmorder, | |||
Graph * | moral, | |||
Graph * | elmtree | |||
) |
Constrói a árvore de eliminação de threads. A árvore de eliminação uma vez definida pode ser reutilizada para executar diversas inferências.
[in] | elmorder | Array com os ids das variáveis na ordem que devem ser eliminadas. |
[in] | elmtree | Grafo que representa a árvore de eliminação para resultante da fatoração simbólica. |
void destroyBNThreadTree | ( | ThreadTree ** | refThreadTree | ) |
Destrói a árvore de threads criada para executar a inferência.
[out] | refThreadTree | Referência para a ThreadTree a ser destruida. |
Potential* doBNLinearVariableElimination | ( | int | nxq, | |
int * | xq, | |||
int | nxe, | |||
int * | xe, | |||
Potential ** | findings, | |||
BayesNet * | bayesnet, | |||
int * | elmorder, | |||
Graph * | moral | |||
) |
Executa linearmente a inferência com a eliminação de variáveis da Rede Bayesiana, ou seja, apenas uma variável é eliminada de cada vez de forma serial, sem explorar a possibilidade de paralelização.
[in] | nxq | Número de variáveis questionadas (Query Variables). |
[in] | xq | Array com os ids das variáveis questionadas (Query Variables). |
[in] | nxe | Número de variáveis que compõe a evidência (Evidence), ou seja, as variáveis observadas. O estado da variável esta em outra estrutura denominada finding. |
[in] | xe | Array com os ids das variáveis observadas. |
[in] | findings | Potenciais que indicam os estados observados das variáveis. |
[in] | bayesnet | BN da qual se deseja obter as variáveis requisitadas para a inferência. |
[in] | elmorder | Array com os ids das variáveis na ordem que devem ser eliminadas. |
[in] | moral | Moral Graph utilizado para a eliminação de variáveis e construido apenas com variáveis requisitadas. |
Potential* doBNVariableElimination | ( | ThreadTree * | threadtree | ) |
Executa a inferência com a eliminação de variáveis da Rede Bayesiana explorando a possibilidade de executar a eliminação em paralelo.
[in] | nxq | Número de variáveis questionadas (Query Variables). |
[in] | xq | Array com os ids das variáveis questionadas (Query Variables). |
[in] | nxe | Número de variáveis que compõe a evidência (Evidence), ou seja, as variáveis observadas. O estado da variável esta em outra estrutura denominada finding. |
[in] | xe | Array com os ids das variáveis observadas. |
[in] | findings | Potenciais que indicam os estados observados das variáveis. |
[in] | bayesnet | BN da qual se deseja obter as variáveis requisitadas para a inferência. |
[in] | elmorder | Array com os ids das variáveis na ordem que devem ser eliminadas. |
[in] | moral | Moral Graph utilizado para a eliminação de variáveis e construido apenas com variáveis requisitadas. |
[in] | threadtree | ThreadTree construida a partir da ordem de eliminação e da árvore de eliminação. |
void executeElimination | ( | Elimination ** | refElimination | ) |
Executa a operação de eliminação de variável e armazena o resultado na própria estrutura de dados.
[out] | refElimination | Referência para a estrutura que define uma operação de eliminação. O resultado será armazenado no na própria estrutura. |
Marginaliza as variáveis não requeridas de um potencial.
Atenção: Apesar do valor de retorno da função de ser pouco intuitivo ela foi feita desta forma para evitar operações desnecessárias.
[in] | moral | Moral Graph utilizado para a eliminação de variáveis e construido apenas com variáveis requisitadas. |
[in] | source | Potencial a ser marginalizado. |
void normalize | ( | int | nvalues, | |
double ** | refValues | |||
) |
Normaliza um array de valores reais, ou seja, altera os valores de forma que a soma dos mesmos seja igual a 1.
[in] | nvalues | Número de elementos do array de números reais que será normalizado. |
[out] | refValues | Referência para o array de números reais que será normalizado. |
void* taskVariableElimination | ( | void * | arg | ) |
Função genérica invocada pela thread para executar uma operação de eliminação.
[out] | arg | Argumento genérico utilizada para passar literamente qualquer estrutura de dados necessária para executar a tarefa. |