test_pie/external/MRF/regions-new.h

57 lines
1.5 KiB
C++

// (C) 2002 Marshall Tappen, MIT AI Lab
#ifndef _reg_h
#define _reg_h
#define FLOATTYPE float
#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3
#include "MaxProdBP.h"
class MaxProdBP;
class OneNodeCluster
{
public:
OneNodeCluster();
//static const int UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3;
static int numStates;
FLOATTYPE *receivedMsgs[4],
*nextRoundReceivedMsgs[4],
*localEv;
// FLOATTYPE *psi[4];
void ComputeMsgRight(FLOATTYPE *msgDest, int r, int c, MaxProdBP *mrf);
void ComputeMsgUp(FLOATTYPE *msgDest, int r, int c, MaxProdBP *mrf);
void ComputeMsgLeft(FLOATTYPE *msgDest, int r, int c, MaxProdBP *mrf);
void ComputeMsgDown(FLOATTYPE *msgDest, int r, int c, MaxProdBP *mrf);
void getBelief(FLOATTYPE *beliefVec);
int getBeliefMaxInd();
int msgChange(FLOATTYPE thresh);
void deliverMsgs();
};
void initOneNodeMsgMem(OneNodeCluster *nodeArray, FLOATTYPE *memChunk, const int numNodes,
const int msgChunkSize);
void computeMessagesUpDown(OneNodeCluster *nodeArray, const int numCols, const int numRows,
const int currCol, const FLOATTYPE alpha, MaxProdBP *mrf);
void computeMessagesLeftRight(OneNodeCluster *nodeArray, const int numCols, const int numRows,
const int currRow, const FLOATTYPE alpha, MaxProdBP *mrf);
void computeOneNodeMessagesPeriodic(OneNodeCluster *nodeTopArray, OneNodeCluster *nodeBotArray,
const int numCols, const FLOATTYPE alpha);
#endif