Package org.jgrapht.alg.spanning
Class AbstractCapacitatedMinimumSpanningTree.CapacitatedSpanningTreeSolutionRepresentation
- java.lang.Object
-
- org.jgrapht.alg.spanning.AbstractCapacitatedMinimumSpanningTree.CapacitatedSpanningTreeSolutionRepresentation
-
- All Implemented Interfaces:
Cloneable
- Enclosing class:
- AbstractCapacitatedMinimumSpanningTree<V,E>
protected class AbstractCapacitatedMinimumSpanningTree.CapacitatedSpanningTreeSolutionRepresentation extends Object implements Cloneable
This class represents a solution instance by managing the labels and the partition mapping. With the help of this class, a capacitated spanning tree based on the label and partition mapping can be calculated.
-
-
Constructor Summary
Constructors Constructor Description CapacitatedSpanningTreeSolutionRepresentation()
Constructs a new solution representation for the CMST problem.CapacitatedSpanningTreeSolutionRepresentation(Map<V,Integer> labels, Map<Integer,Pair<Set<V>,Double>> partition)
Constructs a new solution representation for the CMST problem based onlabels
andpartition
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E>
calculateResultingSpanningTree()
Calculates the resulting spanning tree based on this solution representation.void
cleanUp()
Cleans up the solution representation by removing all empty sets from the partition.AbstractCapacitatedMinimumSpanningTree.CapacitatedSpanningTreeSolutionRepresentation
clone()
Returns a shallow copy of this solution representation instance.int
getLabel(V vertex)
Returns the label of the subset that containsvertex
.Set<Integer>
getLabels()
Returns all labels of all subsets.int
getNextFreeLabel()
Returns the next free label in the label map respectively partitionSet<V>
getPartitionSet(Integer label)
Returns the set of vertices that are in the subset with labellabel
.double
getPartitionWeight(Integer label)
Returns the sum of the weights of all vertices that are in the subset with labellabel
.void
moveVertex(V vertex, Integer fromLabel, Integer toLabel)
Movesvertex
from the subset represented byfromLabel
to the subset represented bytoLabel
.void
moveVertices(Set<V> vertices, Integer fromLabel, Integer toLabel)
Moves all vertices invertices
from the subset represented byfromLabel
to the subset represented bytoLabel
.Set<Integer>
partitionSubtreesOfSubset(Set<V> vertexSubset, int label)
Refines the partition by adding new subsets if the designated root has more than one subtree in the subsetlabel
of the partition.
-
-
-
Constructor Detail
-
CapacitatedSpanningTreeSolutionRepresentation
public CapacitatedSpanningTreeSolutionRepresentation()
Constructs a new solution representation for the CMST problem.
-
CapacitatedSpanningTreeSolutionRepresentation
public CapacitatedSpanningTreeSolutionRepresentation(Map<V,Integer> labels, Map<Integer,Pair<Set<V>,Double>> partition)
Constructs a new solution representation for the CMST problem based onlabels
andpartition
. All labels have to be positive.- Parameters:
labels
- the labels of the subsets in the partitionpartition
- the partition map
-
-
Method Detail
-
calculateResultingSpanningTree
public CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E> calculateResultingSpanningTree()
Calculates the resulting spanning tree based on this solution representation.- Returns:
- the resulting spanning tree based on this solution representation
-
moveVertex
public void moveVertex(V vertex, Integer fromLabel, Integer toLabel)
Movesvertex
from the subset represented byfromLabel
to the subset represented bytoLabel
.- Parameters:
vertex
- the vertex to movefromLabel
- the subset to move the vertex fromtoLabel
- the subset to move the vertex to
-
moveVertices
public void moveVertices(Set<V> vertices, Integer fromLabel, Integer toLabel)
Moves all vertices invertices
from the subset represented byfromLabel
to the subset represented bytoLabel
.- Parameters:
vertices
- the vertices to movefromLabel
- the subset to move the vertices fromtoLabel
- the subset to move the vertices to
-
partitionSubtreesOfSubset
public Set<Integer> partitionSubtreesOfSubset(Set<V> vertexSubset, int label)
Refines the partition by adding new subsets if the designated root has more than one subtree in the subsetlabel
of the partition.- Parameters:
vertexSubset
- the subset represented bylabel
, that is the subset that has to be refinedlabel
- the label of the subset of the partition that were refined- Returns:
- the set of all labels of subsets that were changed during the refinement
-
cleanUp
public void cleanUp()
Cleans up the solution representation by removing all empty sets from the partition.
-
getNextFreeLabel
public int getNextFreeLabel()
Returns the next free label in the label map respectively partition- Returns:
- the next free label in the label map respectively partition
-
getLabel
public int getLabel(V vertex)
Returns the label of the subset that containsvertex
.- Parameters:
vertex
- the vertex to return the label from- Returns:
- the label of
vertex
-
getLabels
public Set<Integer> getLabels()
Returns all labels of all subsets.- Returns:
- the labels of all subsets
-
getPartitionSet
public Set<V> getPartitionSet(Integer label)
Returns the set of vertices that are in the subset with labellabel
.- Parameters:
label
- the label of the subset to return the vertices from- Returns:
- the set of vertices that are in the subset with label
label
-
getPartitionWeight
public double getPartitionWeight(Integer label)
Returns the sum of the weights of all vertices that are in the subset with labellabel
.- Parameters:
label
- the label of the subset to return the weight from- Returns:
- the sum of the weights of all vertices that are in the subset with label
label
-
clone
public AbstractCapacitatedMinimumSpanningTree.CapacitatedSpanningTreeSolutionRepresentation clone()
Returns a shallow copy of this solution representation instance. Vertices are not cloned.- Overrides:
clone
in classObject
- Returns:
- a shallow copy of this solution representation.
- Throws:
RuntimeException
- in case the clone is not supported- See Also:
Object.clone()
-
-