#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
Gráfico de dependência de inclusões para potential.h:
Este grafo mostra quais arquivos estão direta ou indiretamente relacionados com este arquivo:
Vá para o código-fonte deste arquivo.
Componentes | |
struct | struct_Potential |
struct | struct_Variable |
Definições e Macros | |
#define | DBGOUT stdout |
#define | VARIABLE_NAME_LENGTH 50 |
Tamanho máximo do nome da variável. | |
#define | VARIABLE_STATE_NAME_LENGTH 50 |
Tamanho máximo do nome que identifica o estado de uma variável. | |
#define | VARIABLE_TYPE_CONTINUOUS 1 |
Tipo de variável continua. Esta biblioteca suporta apenas variáveis DISCRETAS. | |
#define | VARIABLE_TYPE_DISCRETE 0 |
Tipo de variável discreta. Esta biblioteca suporta apenas variáveis DISCRETAS. | |
Definições de Tipos | |
typedef struct_Potential | Potential |
typedef struct_Variable | Variable |
Funções | |
Potential * | buildPotential (int id, int nvars, Variable **vars, double *values) |
Constrói um potencial. | |
Variable * | buildVariable (int id, char *name, int type, int nstates, char **states) |
Constrói uma variável. | |
void | destroyPotential (Potential **refPotential) |
Destrói um potencial e desaloca os recursos que estavam alocados para o mesmo. | |
void | destroyVariable (Variable **refVariable) |
Destrói uma variável e desaloca os recursos que estavam alocados para a mesma. | |
void | dumpPotential (Potential *pot) |
Dump do conteúdo do potencial. | |
void | dumpVariable (Variable *var) |
Dump do conteúdo da variável. | |
Potential * | fakePotential (int id, int first, int offset, Variable **vars) |
Função auxiliar que cria um potencial fake para testes. | |
Variable ** | fakeVariables (int nvars, int *nstates) |
Função auxiliar para criar um conjunto de variáveis a ser utilizado para testes. | |
Potential * | marginalizePotential (Variable *variable, Potential *pot) |
Marginaliza o potencial para uma dada variável. | |
Potential * | multPotentials (Potential *pot_1, Potential *pot_2) |
Executa o produto entre dois potenciais. | |
Potential * | permuteMarginalizePotential (Variable *variable, Potential **refPotential) |
Marginaliza um variável de um potencial permutando o potencial para excutar a operação. | |
Potential * | permuteMultPotentials (Variable *first, Potential **refPotential_1, Potential **refPotential_2) |
Executa o produto entre dois potenciais permutando os potenciais. | |
void | permutePotential (int *from_to, Potential **refPotential) |
Permuta as variáveis e os valores de um potencial de acordo com um vetor de referência. | |
void | syncPotentials (Variable *first, Potential **refPotential_1, Potential **refPotential_2) |
Compatibiliza a ordem das variáveis em dois potenciais para executar operações de produto. |
Definição no arquivo potential.h.
typedef struct struct_Potential Potential |
Estrutura de dados de um Potencial
typedef struct struct_Variable Variable |
Estrutura de dados de uma Variável
Constrói um potencial.
O id deve ser único e um número maior ou igual a zero. Não há verificação da unicidade do potencial, cabendo esta responsabilidade ao desenvolvedor. É importante observar a perfeita correspondência entre os valores e a ordem com que as variáveis estão dispostas o array vars.
[in] | id | id do potencial. O id deve ser único e um número maior ou igual a zero. Não há verificação da unicidade do potencial. |
[in] | nvars | Número de variáveis do potencial. |
[in] | vars | Variáveis do potencial. |
[in] | values | Valores do potencial. |
Variable* buildVariable | ( | int | id, | |
char * | name, | |||
int | type, | |||
int | nstates, | |||
char ** | states | |||
) |
Constrói uma variável.
O id deve ser único e um número maior ou igual a zero. Não há verificação da unicidade do id da variável, cabendo esta responsabilidade.
[in] | id | id da variável a ser criada. O id deve ser único e um número maior ou igual a zero, mas não há checagem da unicidade do id; |
[in] | name | Nome a ser atribuído à variável. |
[in] | type | Tipo da variável a ser criada. Tipos válidos: VARIABLE_TYPE_DISCRETE e VARIABLE_TYPE_CONTINUOUS. Esta biblioteca suporta apenas variáveis DISCRETAS. |
[in] | nstates | Número total de estados possíveis para a variável. |
[in] | states | Nomes dos estados possíveis para a variável. |
void destroyPotential | ( | Potential ** | refPotential | ) |
Destrói um potencial e desaloca os recursos que estavam alocados para o mesmo.
[out] | refPotential | Referência para o potencial a ser destruído. |
void destroyVariable | ( | Variable ** | refVariable | ) |
Destrói uma variável e desaloca os recursos que estavam alocados para a mesma.
[out] | refVariable | Referência para a variável a ser destruída. |
void dumpPotential | ( | Potential * | pot | ) |
Dump do conteúdo do potencial.
[in] | pot | Potencial da qual se deseja fazer o dump. |
void dumpVariable | ( | Variable * | var | ) |
Dump do conteúdo da variável.
[in] | var | Variável da qual se deseja fazer o dump. |
Função auxiliar que cria um potencial fake para testes.
[in] | id | id do potencial a ser criado. |
[in] | first | Primeira variável que será parte do potencial. |
[in] | offset | Número de variáveis a serem incorporadas no potencial. |
[in] | vars | Array de variáveis que serão utilizadas para criar o potencial |
Variable** fakeVariables | ( | int | nvars, | |
int * | nstates | |||
) |
Função auxiliar para criar um conjunto de variáveis a ser utilizado para testes.
[in] | nvars | Númerode variáveis. |
[in] | nstates | Array com o número de estados das variáveis. |
Marginaliza o potencial para uma dada variável.
Esta função executa a operação de marginalização SEM permutar, ou seja, sem alterar os potenciais originais as operações são feitas apenas com o mapeamento dos índices.
[in] | variable | Variável a ser marginalizada do potencial. |
[in] | pot | Potencial envolvido na operaçãoo de marginalização. |
Executa o produto entre dois potenciais.
Esta função executa a operação de multiplicação SEM permutar, ou seja, sem alterar os potenciais originais as operações são feitas apenas com o mapeamento dos índices.
[in] | pot_1 | Primeiro potencial. |
[in] | pot_2 | Segundo potencial. |
Marginaliza um variável de um potencial permutando o potencial para excutar a operação.
Esta função executa a operação de marginalização PERMUTANDO a ordem do do potencial, ou seja, alterando o potencial original. Esta funcão faz parte de um conjunto de funções que foram utilizadas para desenvolvimento para checar os valores. Observe no entanto que é mais eficiente ao invés de permutar os potenciais fazer as operações sem a operação de permutação. Veja as funções: multPotentials e marginalizePotential.
[in] | variable | Variável que deve ser marginalizada. |
[out] | refPotential | Referência para o potencial envolvido na marginalização. |
Potential* permuteMultPotentials | ( | Variable * | first, | |
Potential ** | refPotential_1, | |||
Potential ** | refPotential_2 | |||
) |
Executa o produto entre dois potenciais permutando os potenciais.
Esta função executa a operação de multiplicação PERMUTANDO a ordem do dos potenciais, ou seja, alterando os potenciais originais. Esta funcão faz parte de um conjunto de funções que foram utilizadas para desenvolvimento para checar os valores. Observe no entanto que é mais eficiente ao invés de permutar os potenciais fazer as operações sem a operação de permutação. Veja as funções: multPotentials e marginalizePotential.
[in] | first | Variável que deve ser a primeira após a sincronização dos vetores, para acelera futuras a operações do produto. |
[out] | refPotential_1 | Referência para o primeiro potencial envolvido no produto. |
[out] | refPotential_2 | Referência para o segundo potencial envolvido no produto. |
void permutePotential | ( | int * | from_to, | |
Potential ** | refPotential | |||
) |
Permuta as variáveis e os valores de um potencial de acordo com um vetor de referência.
A permutação altera a ordem dos valores e das variáveis no potencial. Esta operação pode ser utilizada para compatibilizar a ordem das variáveis de um potencial para executar operações como marginalização e produto. Observe no entanto que é mais eficiente ao invés de permutar os potenciais fazer as operações sem a operação de permutação. Veja as funções: multPotentials e marginalizePotential.
[in] | from_to | Array de referência com os ids dos potenciais. |
[out] | refPotential | Referência para o potencial a ser permutado. |
Compatibiliza a ordem das variáveis em dois potenciais para executar operações de produto.
A compatiliza através da permutação a ordem dos valores e das variáveis de dois potenciais. Esta operação pode ser utilizada para compatibilizar a ordem das variáveis de um potencial para executar operações de produto. Observe no entanto que é mais eficiente ao invés de permutar os potenciais fazer as operações sem a operação de permutação. Veja as funções: multPotentials e marginalizePotential.
[in] | first | Variável que dever ser a primeira nos potenciais após a sincronização. |
[out] | refPotential_1 | Referência para o primeiro potencial envolvido na sincronização. |
[out] | refPotential_2 | Referência para o segundo potencial envolvido na sincronização. |