de.jstacs.algorithms.graphs.tensor
Class Tensor

java.lang.Object
  extended by de.jstacs.algorithms.graphs.tensor.Tensor
Direct Known Subclasses:
AsymmetricTensor, 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

Field Summary
protected  int L
           
protected  byte order
           
protected  int[] powers
           
 
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)
           
abstract  int[] getMaximalEdgeFor(byte k, int child, int... parents)
          Returns the edge permute(parents[0],...
 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],...
static Tensor readTensorFromFile(String fname, boolean asym)
          The opposite of the method writeTensorToFile.
abstract  void resetValue(byte k, int child, int... parents)
          Sets the value for the edge parents[0],...
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],...
 double[][][] toDouble3DArray()
           
 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

L

protected int L

order

protected byte order
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 l < 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.


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 parents to be used
child - the child node
parents - the parents 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 parents to be used
val - the new value
child - the child node
parents - the parents 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 parents to be used
child - the child node
parents - the parents 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

readTensorFromFile

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

Parameters:
fname - the file name
asym - true generates a AsymmetricTensor, otherwise a SymmetricTensor
Returns:
the tensor from the file
Throws:
IOException - if something with the file went wrong
NumberFormatException - if the file could not be parsed correctly

toDouble3DArray

public double[][][] toDouble3DArray()

getAsymIndex

protected int getAsymIndex(int child,
                           int[] parents,
                           byte k)