CWB
Data Structures | Typedefs | Functions

barlib.h File Reference

Data Structures

Typedefs

Functions


Typedef Documentation

typedef struct _BARdesc * BARdesc

The BARdesc object: a BAR (Beamed Array) descriptor.

The Beamed Array Library implements storage for the kind of sparse matrix required by beam search methods in dynamic programming. A Beamed Array is a N,M-matrix

A(x,y) ; x = 0 ... N-1, y = 0 ... M-1

of integer values, where each right/down diagonal

d_k := { (x,y) | x + y = k }

contains a single contiguous block of at most W (potentially) nonzero elements. The position of this block on a given diagonal is determined by the first write access to that diagonal. It is assumed that the first element written is the leftmost one, i.e. setting A(x,y)=1 will define the block on d_(x+y) to be

{(x,y), (x+1,y-1), ... , (x+W-1, y+W-1)}


Function Documentation

void BAR_delete ( BARdesc  BAR)

Destroys a BAR.

Parameters:
BARDescriptor of the BAR to destroy.

References _BARdesc::d_block_data, _BARdesc::d_block_start_x, and _BARdesc::data.

Referenced by best_path().

BARdesc BAR_new ( int  N,
int  M,
int  W 
)

Creates an N-by-M bar with beam width W.

Parameters:
NFirst dimension size of new matrix (see BARdesc).
MSecond dimension size of new matrix (see BARdesc).
WBeam width size of new matrix (see BARdesc).
Returns:
The new BARdesc object.

References _BARdesc::beam_width, _BARdesc::d_block_data, _BARdesc::d_block_start_x, _BARdesc::d_size, _BARdesc::data, _BARdesc::data_size, _BARdesc::vector_size, _BARdesc::x_size, and _BARdesc::y_size.

Referenced by best_path().

int BAR_read ( BARdesc  BAR,
int  x,
int  y 
)

Reads from a BAR.

Usage:

i = A(x,y)

is expressed as

i = BAR_read(BAR, x, y);

Parameters:
BARBAR descriptor
xmatrix x coordinate
ymatrix y coordinate
Returns:
the value of A(x,y); if (x,y) is outside matrix or beam range, returns 0.

References _BARdesc::beam_width, _BARdesc::d_block_data, and _BARdesc::d_block_start_x.

Referenced by best_path().

void BAR_reinit ( BARdesc  BAR,
int  N,
int  M,
int  W 
)

Changes the size of a BAR (erasing the contents of the BAR).

See also:
BARdesc
Parameters:
BARThe BAR to resize.
NFirst dimension new size of matrix (see BARdesc).
MSecond dimension new size of matrix (see BARdesc).
WBeam width new size of matrix (see BARdesc).

References _BARdesc::beam_width, _BARdesc::d_block_data, _BARdesc::d_block_start_x, _BARdesc::d_size, _BARdesc::data, _BARdesc::data_size, _BARdesc::vector_size, _BARdesc::x_size, and _BARdesc::y_size.

void BAR_write ( BARdesc  BAR,
int  x,
int  y,
int  i 
)

Sets an element of a BAR.

Usage:

BAR_write(BAR, x, y, i);

sets A(x,y) = i.

  • if (x,y) is outside matrix or beam range, the function call is ignored.
  • if d_(x+y) hasn't been accessed before, the block_start_x value is set to x.
Parameters:
BARBAR descriptor
xmatrix x coordinate
ymatrix y coordinate
ivalue to set it to

References beam_width, _BARdesc::beam_width, _BARdesc::d_block_data, and _BARdesc::d_block_start_x.

Referenced by best_path().