Referência do Arquivo potential.h

Implementação da estrutura de dados e operações com variáveis e potenciais. Mais...

#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

PotentialbuildPotential (int id, int nvars, Variable **vars, double *values)
 Constrói um potencial.
VariablebuildVariable (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.
PotentialfakePotential (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.
PotentialmarginalizePotential (Variable *variable, Potential *pot)
 Marginaliza o potencial para uma dada variável.
PotentialmultPotentials (Potential *pot_1, Potential *pot_2)
 Executa o produto entre dois potenciais.
PotentialpermuteMarginalizePotential (Variable *variable, Potential **refPotential)
 Marginaliza um variável de um potencial permutando o potencial para excutar a operação.
PotentialpermuteMultPotentials (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.


Descrição Detalhada

Implementação da estrutura de dados e operações com variáveis e potenciais.

Autor:
Ernesto Colla (ernesto@gmail.com)
Versão:
0.0.1
Data:
Abril/2007
Implementação de uma biblioteca genérica que define as estruturas de uma variável de um potencial e as principais operações com potenciais.

Definição no arquivo potential.h.


Definições dos tipos

typedef struct struct_Potential Potential

Estrutura de dados de um Potencial

typedef struct struct_Variable Variable

Estrutura de dados de uma Variável


Funções

Potential* buildPotential ( int  id,
int  nvars,
Variable **  vars,
double *  values 
)

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.

Parâmetros:
[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.
Retorna:
Potencial criado a partir dos dados de entrada.

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.

Parâmetros:
[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.
Retorna:
Variável cronstruída a partir dos dados de entrada.

void destroyPotential ( Potential **  refPotential  ) 

Destrói um potencial e desaloca os recursos que estavam alocados para o mesmo.

Parâmetros:
[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.

Parâmetros:
[out] refVariable Referência para a variável a ser destruída.

void dumpPotential ( Potential pot  ) 

Dump do conteúdo do potencial.

Parâmetros:
[in] pot Potencial da qual se deseja fazer o dump.

void dumpVariable ( Variable var  ) 

Dump do conteúdo da variável.

Parâmetros:
[in] var Variável da qual se deseja fazer o dump.

Potential* fakePotential ( int  id,
int  first,
int  offset,
Variable **  vars 
)

Função auxiliar que cria um potencial fake para testes.

Parâmetros:
[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
Retorna:
Potencial criado.

Variable** fakeVariables ( int  nvars,
int *  nstates 
)

Função auxiliar para criar um conjunto de variáveis a ser utilizado para testes.

Parâmetros:
[in] nvars Númerode variáveis.
[in] nstates Array com o número de estados das variáveis.
Retorna:
Array de variáveis criado com base nos dados de entrada.

Potential* marginalizePotential ( Variable variable,
Potential pot 
)

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.

Parâmetros:
[in] variable Variável a ser marginalizada do potencial.
[in] pot Potencial envolvido na operaçãoo de marginalização.
Retorna:
Potencial resultante da marginalização da variável.

Potential* multPotentials ( Potential pot_1,
Potential pot_2 
)

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.

Parâmetros:
[in] pot_1 Primeiro potencial.
[in] pot_2 Segundo potencial.
Retorna:
Potencial resultante do produto de potenciais.

Potential* permuteMarginalizePotential ( Variable variable,
Potential **  refPotential 
)

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.

Parâmetros:
[in] variable Variável que deve ser marginalizada.
[out] refPotential Referência para o potencial envolvido na marginalização.
Retorna:
Potencial resultante da marginalização da variável.

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.

Parâmetros:
[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.
Retorna:
Potencial resultante do produto de 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.

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.

Parâmetros:
[in] from_to Array de referência com os ids dos potenciais.
[out] refPotential Referência para o potencial a ser permutado.

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.

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.

Parâmetros:
[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.


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