org.deidentifier.arx.framework.lattice

## Class SolutionSpace<T>

- java.lang.Object
- - org.deidentifier.arx.framework.lattice.SolutionSpace<T>

Direct Known Subclasses:
  SolutionSpaceIntArray, SolutionSpaceLong

    public abstract class SolutionSpace<T>
    extends java.lang.Object

A class representing the solution space

Author:
  Fabian Prasser

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`static SolutionSpace<?>` `create(ARXLattice lattice, ARXConfiguration config)` Creates a new solution space
`static SolutionSpace<?>` `create(int[] hierarchiesMinLevels, int[] hierarchiesMaxLevels)` Creates a new solution space
`abstract Transformation<T>` `getBottom()` Returns the bottom transformation
`int` `getLevel(int[] transformation)` Returns the level of the given transformation
`abstract ObjectIterator<T>` `getMaterializedTransformations()` Returns all materialized transformations
`de.linearbits.jhpl.PredictiveProperty` `getPropertyAnonymous()` Returns a property
`de.linearbits.jhpl.PredictiveProperty` `getPropertyChecked()` Returns a property
`de.linearbits.jhpl.PredictiveProperty` `getPropertyExpanded()` Property for expanded transformation
`de.linearbits.jhpl.PredictiveProperty` `getPropertyForceSnapshot()` Returns a property
`de.linearbits.jhpl.PredictiveProperty` `getPropertyInsufficientUtility()` Returns a property
`de.linearbits.jhpl.PredictiveProperty` `getPropertyKAnonymous()` Returns a property
`de.linearbits.jhpl.PredictiveProperty` `getPropertyNotAnonymous()` Returns a property
`de.linearbits.jhpl.PredictiveProperty` `getPropertyNotKAnonymous()` Returns a property
`de.linearbits.jhpl.PredictiveProperty` `getPropertySuccessorsPruned()` Returns a property
`de.linearbits.jhpl.PredictiveProperty` `getPropertyVisited()` Returns a property
`abstract java.math.BigInteger` `getSize()` Returns the overall number of transformations in the solution space
`abstract Transformation<T>` `getTop()` Returns the top-transformation
`abstract Transformation<T>` `getTransformation(int[] transformation)` Returns a wrapper object with access to all properties about the transformation
`abstract Transformation<T>` `getTransformation(java.lang.Object _identifier)` Returns the transformation with the given identifier
`abstract InformationLoss<?>` `getUtility(java.lang.Object _identifier)` Returns the utility of the transformation with the given identifier
`abstract boolean` `hasProperty(int[] transformation, de.linearbits.jhpl.PredictiveProperty property)` Returns whether a node has a given property
`boolean` `isDirectParentChild(int[] parent, int[] child)` Determines whether a direct parent-child relationship exists.
`boolean` `isParentChildOrEqual(int[] parent, int[] child)` Determines whether a parent-child relationship exists, or both are equal
`void` `setAnonymityPropertyPredictable(boolean predictable)` Makes the anonymity property predictable
`abstract ObjectIterator<T>` `unsafeGetAllTransformations()` Returns all transformations in the solution space
`abstract ObjectIterator<T>` `unsafeGetLevel(int level)` Returns *all* nodes on the given level.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Method Detail

#### create

    public static SolutionSpace<?> create(ARXLattice lattice,
                                          ARXConfiguration config)

Creates a new solution space

Parameters:
  `lattice` -
  `config` -

#### create

    public static SolutionSpace<?> create(int[] hierarchiesMinLevels,
                                          int[] hierarchiesMaxLevels)

Creates a new solution space

Parameters:
  `hierarchiesMinLevels` -
  `hierarchiesMaxLevels` -
Returns:

#### getBottom

    public abstract Transformation<T> getBottom()

Returns the bottom transformation

Returns:

#### getLevel

    public int getLevel(int[] transformation)

Returns the level of the given transformation

Parameters:
  `transformation` -
Returns:

#### getMaterializedTransformations

    public abstract ObjectIterator<T> getMaterializedTransformations()

Returns all materialized transformations

Returns:

#### getPropertyAnonymous

    public de.linearbits.jhpl.PredictiveProperty getPropertyAnonymous()

Returns a property

Returns:

#### getPropertyChecked

    public de.linearbits.jhpl.PredictiveProperty getPropertyChecked()

Returns a property

Returns:

#### getPropertyExpanded

    public de.linearbits.jhpl.PredictiveProperty getPropertyExpanded()

Property for expanded transformation

Returns:

#### getPropertyForceSnapshot

    public de.linearbits.jhpl.PredictiveProperty getPropertyForceSnapshot()

Returns a property

Returns:

#### getPropertyInsufficientUtility

    public de.linearbits.jhpl.PredictiveProperty getPropertyInsufficientUtility()

Returns a property

Returns:

#### getPropertyKAnonymous

    public de.linearbits.jhpl.PredictiveProperty getPropertyKAnonymous()

Returns a property

Returns:

#### getPropertyNotAnonymous

    public de.linearbits.jhpl.PredictiveProperty getPropertyNotAnonymous()

Returns a property

Returns:

#### getPropertyNotKAnonymous

    public de.linearbits.jhpl.PredictiveProperty getPropertyNotKAnonymous()

Returns a property

Returns:

#### getPropertySuccessorsPruned

    public de.linearbits.jhpl.PredictiveProperty getPropertySuccessorsPruned()

Returns a property

Returns:

#### getPropertyVisited

    public de.linearbits.jhpl.PredictiveProperty getPropertyVisited()

Returns a property

Returns:

#### getSize

    public abstract java.math.BigInteger getSize()

Returns the overall number of transformations in the solution space

Returns:

#### getTop

    public abstract Transformation<T> getTop()

Returns the top-transformation

Returns:

#### getTransformation

    public abstract Transformation<T> getTransformation(int[] transformation)

Returns a wrapper object with access to all properties about the transformation

Parameters:
  `transformation` -
Returns:

#### getTransformation

    public abstract Transformation<T> getTransformation(java.lang.Object _identifier)

Returns the transformation with the given identifier

Parameters:
  `_identifier` -
Returns:

#### getUtility

    public abstract InformationLoss<?> getUtility(java.lang.Object _identifier)

Returns the utility of the transformation with the given identifier

Parameters:
  `identifier` -
Returns:

#### hasProperty

    public abstract boolean hasProperty(int[] transformation,
                                        de.linearbits.jhpl.PredictiveProperty property)

Returns whether a node has a given property

Parameters:
  `transformation` -
  `property` -
Returns:

#### isDirectParentChild

    public boolean isDirectParentChild(int[] parent,
                                       int[] child)

Determines whether a direct parent-child relationship exists.

Parameters:
  `parent` -
  `child` -
Returns:

#### isParentChildOrEqual

    public boolean isParentChildOrEqual(int[] parent,
                                        int[] child)

Determines whether a parent-child relationship exists, or both are equal

Parameters:
  `parent` -
  `child` -
Returns:

#### setAnonymityPropertyPredictable

    public void setAnonymityPropertyPredictable(boolean predictable)

Makes the anonymity property predictable

Parameters:
  `predictable` -

#### unsafeGetAllTransformations

    public abstract ObjectIterator<T> unsafeGetAllTransformations()

Returns all transformations in the solution space

Returns:

#### unsafeGetLevel

    public abstract ObjectIterator<T> unsafeGetLevel(int level)

Returns *all* nodes on the given level. This is an unsafe operation that only performs well for "small" spaces.

Parameters:
  `level` -
Returns: