de.jstacs.algorithms.graphs.tensor
Class Tensor

java.lang.Object
  extended by de.jstacs.algorithms.graphs.tensor.Tensor
Direct Known Subclasses:
AsymmetricTensor, SubTensor, SymmetricTensor

public abstract class Tensor
extends Object

This is the super class for any tensor. The tensor may be symmetric or asymmetric.

Author:
Jens Keilwagen
See Also:
AsymmetricTensor, SymmetricTensor

Field Summary
protected  int L
          The number of nodes minus 1.
protected  byte order
          The order of the tensor.
protected  int[] powers
          An array containing the powers for the number of nodes.
 
Constructor Summary
Tensor(int n, byte k)
          Creates a new Tensor for n nodes and order k.
 
Method Summary
protected  int getAsymIndex(int child, int[] parents, byte k)
          Returns the index for an asymmetric tensor.
abstract  int[] getMaximalEdgeFor(byte k, int child, int... parents)
          Returns the edge permute(parents[0],...,parents[k-1]) -> child that maximizes the score.
 int getNumberOfNodes()
          Returns the number of nodes.
 byte getOrder()
          Returns the order.
abstract  double getRootValue(int child)
          Returns the value for child as root.
abstract  double getValue(byte k, int child, int... parents)
          Returns the value for the edge parents[0],...,parents[k-1] -> child.
static Tensor readTensorFromFile(String fname, boolean asym)
          The opposite of the method writeTensorToFile(String, OutputStream).
abstract  void resetValue(byte k, int child, int... parents)
          Sets the value for the edge parents[0],...,parents[k-1] -> child to Double.NEGATIVE_INFINITY.
abstract  void setRootValue(int child, double val)
          Sets the value val for the root node child.
abstract  void setValue(byte k, double val, int child, int... parents)
          Sets the value for the edge parents[0],...,parents[k-1] -> child.
 double[][][] toDouble3DArray()
          Creates a three-dimensional double array representation of the Tensor.
 void writeTensorToFile(String fname, OutputStream desc)
          This method writes a Tensor in the exchange format in a specified file.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

powers

protected int[] powers
An array containing the powers for the number of nodes. This might be used in the computation of some indices.


L

protected int L
The number of nodes minus 1.


order

protected byte order
The order of the tensor.

Constructor Detail

Tensor

public Tensor(int n,
              byte k)
       throws IllegalArgumentException
Creates a new Tensor for n nodes and order k.

Parameters:
n - the number of nodes
k - the order
Throws:
IllegalArgumentException - if n < 0 or k < 1
Method Detail

getMaximalEdgeFor

public abstract int[] getMaximalEdgeFor(byte k,
                                        int child,
                                        int... parents)
Returns the edge permute(parents[0],...,parents[k-1]) -> child that maximizes the score.

Parameters:
k - the number of parents to be used
child - the child node
parents - the parent nodes (only the first k will be used)
Returns:
the edge permute(parents[0],...,parents[k-1]) -> child that maximizes the score

getNumberOfNodes

public int getNumberOfNodes()
Returns the number of nodes.

Returns:
the number of nodes

getOrder

public byte getOrder()
Returns the order.

Returns:
the order.

getRootValue

public abstract double getRootValue(int child)
Returns the value for child as root.

Parameters:
child - the name of the node
Returns:
the value for the node

getValue

public abstract double getValue(byte k,
                                int child,
                                int... parents)
Returns the value for the edge parents[0],...,parents[k-1] -> child.

Parameters:
k - the number of parents to be used
child - the child node
parents - the parent nodes (only the first k will be used)
Returns:
the value for the edge parents[0],...,parents[k-1] -> child

setRootValue

public abstract void setRootValue(int child,
                                  double val)
Sets the value val for the root node child.

Parameters:
child - the name of the node
val - the value for the node

setValue

public abstract void setValue(byte k,
                              double val,
                              int child,
                              int... parents)
Sets the value for the edge parents[0],...,parents[k-1] -> child.

Parameters:
k - the number of parents to be used
val - the new value
child - the child node
parents - the parent nodes (only the first k will be used)

resetValue

public abstract void resetValue(byte k,
                                int child,
                                int... parents)
Sets the value for the edge parents[0],...,parents[k-1] -> child to Double.NEGATIVE_INFINITY.

Parameters:
k - the number of parents to be used
child - the child node
parents - the parent nodes (only the first k will be used)

writeTensorToFile

public void writeTensorToFile(String fname,
                              OutputStream desc)
                       throws IOException
This method writes a Tensor in the exchange format in a specified file.

Parameters:
fname - the file name
desc - gives you the possibility to write the description of the tensor file
Throws:
IOException - if something went wrong with the file
See Also:
readTensorFromFile(String, boolean)

readTensorFromFile

public static Tensor readTensorFromFile(String fname,
                                        boolean asym)
                                 throws NumberFormatException,
                                        IOException
The opposite of the method writeTensorToFile(String, OutputStream).

Parameters:
fname - the file name
asym - true generates an AsymmetricTensor, otherwise a SymmetricTensor
Returns:
the tensor from the file
Throws:
IOException - if something went wrong with the file
NumberFormatException - if the file could not be parsed correctly
See Also:
writeTensorToFile(String, OutputStream)

toDouble3DArray

public double[][][] toDouble3DArray()
Creates a three-dimensional double array representation of the Tensor.

Returns:
a three-dimensional double array representation of the Tensor

getAsymIndex

protected int getAsymIndex(int child,
                           int[] parents,
                           byte k)
Returns the index for an asymmetric tensor.

Parameters:
child - the child node
parents - the parent notes
k - the order
Returns:
the index for an asymmetric tensor
See Also:
powers