public class AsymmetricTensor extends Tensor
Tensor
s which are not symmetric, as
opposed to the symmetry defined in SymmetricTensor
.Tensor
,
SymmetricTensor
Modifier and Type | Field and Description |
---|---|
protected double[][][] |
tensor
The internal tensor.
|
Constructor and Description |
---|
AsymmetricTensor(double[][][] asym_tensor,
int n,
byte k)
This constructor creates and checks a filled asymmetric tensor with given
dimension.
|
AsymmetricTensor(int n,
byte k)
This constructor creates an empty asymmetric tensor with given dimension.
|
Modifier and Type | Method and Description |
---|---|
int[] |
getMaximalEdgeFor(byte k,
int child,
int... parents)
Returns the edge
permute(parents[0],...,parents[k-1]) -> child that maximizes
the score. |
double |
getRootValue(int child)
Returns the value for
child as root. |
double |
getValue(byte k,
int child,
int... parents)
Returns the value for the edge
parents[0],...,parents[k-1] -> child . |
void |
resetValue(byte k,
int child,
int... parents)
Sets the value for the edge
parents[0],...,parents[k-1] -> child to
Double.NEGATIVE_INFINITY . |
void |
setRootValue(int child,
double val)
Sets the value
val for the root node child . |
void |
setValue(byte k,
double val,
int child,
int... parents)
Sets the value for the edge
parents[0],...,parents[k-1] -> child . |
getAsymIndex, getNumberOfNodes, getOrder, readTensorFromFile, toDouble3DArray, writeTensorToFile
public AsymmetricTensor(int n, byte k)
n
- the number of nodesk
- the orderTensor.Tensor(int, byte)
public AsymmetricTensor(double[][][] asym_tensor, int n, byte k) throws IllegalArgumentException
asym_tensor
- the tensor weightsn
- the number of nodesk
- the orderIllegalArgumentException
- if n
< 0 or k
< 1 or the
given tensor has a wrong dimensionTensor.Tensor(int, byte)
public int[] getMaximalEdgeFor(byte k, int child, int... parents)
Tensor
permute(parents[0],...,parents[k-1]) -> child
that maximizes
the score.getMaximalEdgeFor
in class Tensor
k
- the number of parents to be usedchild
- the child nodeparents
- the parent nodes (only the first k
will be used)permute(parents[0],...,parents[k-1]) -> child
that
maximizes the scorepublic double getRootValue(int child)
Tensor
child
as root.getRootValue
in class Tensor
child
- the name of the nodepublic double getValue(byte k, int child, int... parents)
Tensor
parents[0],...,parents[k-1] -> child
.public void setRootValue(int child, double val)
Tensor
val
for the root node child
.setRootValue
in class Tensor
child
- the name of the nodeval
- the value for the nodepublic void setValue(byte k, double val, int child, int... parents)
Tensor
parents[0],...,parents[k-1] -> child
.public void resetValue(byte k, int child, int... parents)
Tensor
parents[0],...,parents[k-1] -> child
to
Double.NEGATIVE_INFINITY
.resetValue
in class Tensor
k
- the number of parents to be usedchild
- the child nodeparents
- the parent nodes (only the first k
will be used)