Implementations of a notion of graph equivalence for blockmodeling, and a mechanism for collapsing blocks.
The definition of "equivalence" used here is different from the equivalence functions defined
between graphs. This equivalence refers to the network measure forms of equivalence used for blockmodeling.
In blockmodeling, groups of vertices are clustered together by similarity (as if "blocked" together on the
diagonal of a matrix).
This implementation provides:
- {@link EquivalenceAlgorithm EquivalenceAlgorithm}
- An interface for an algorithm that returns an EquivalenceRelation.
- {@link EquivalenceRelation EquivalenceRelation}
- A class that represents several mutually-exclusive partitions of a set. The object is constructed with a Set of Sets; the
members of each set are all vertices from the graph. The ER needn't cover all vertices; it contains a funtion called
"getSingletons" that returns vertices that are not equivalent to any other vertex.
- {@link StructurallyEquivalent StructurallyEquivalent}
- An algorithm that finds sets of vertices that are structurally equivalent. In order for
two vertices i and j to be structurally equivalent, the set of i's
neighbors must be identical to the set of j's neighbors, with the exception of i and
j themselves. (In those cases, a directed edge may join i to j only if another
directed edge runs the other way.)
- {@link GraphCollapser GraphCollapser}
- Runs through an EquivalenceRelation, replacing all the vertices in each set of the relation
with one vertex of type {@link GraphCollapser.CollapsedVertex GraphCollapser.CollapsedVertex}.
It also replaces all the edges from
each vertex to the graph with a {@link GraphCollapser.CollapsedEdge GraphCollapser.CollapsedEdge}.
(See the class documentation to see
how this is done.)
- {@link BipartiteGraphCollapser BipartiteGraphCollapser}
- Extends the GraphCollapser to work for BipartiteGraphs.