Interface IVertexBiPartition

All Superinterfaces:
IVertexPartition, VertexBiPartition<Integer,Integer>, VertexPartition<Integer,Integer>

public interface IVertexBiPartition extends IVertexPartition, VertexBiPartition<Integer,Integer>
A partition of the vertices of an int graph into two blocks.

This interface is a specification of VertexBiPartition for IntGraph. See VertexBiPartition for the complete documentation.

Author:
Barak Ugav
  • Method Details

    • isLeft

      boolean isLeft(int vertex)
      Check whether a vertex is contained in the left block (block 0).
      Parameters:
      vertex - a vertex in the graph
      Returns:
      true if the vertex is contained in the left block, false otherwise
    • isLeft

      @Deprecated default boolean isLeft(Integer vertex)
      Deprecated.
      Please use isLeft(int) instead to avoid un/boxing.
      Check whether a vertex is contained in the left block (block 0).
      Specified by:
      isLeft in interface VertexBiPartition<Integer,Integer>
      Parameters:
      vertex - a vertex in the graph
      Returns:
      true if the vertex is contained in the left block, false otherwise
    • isRight

      default boolean isRight(int vertex)
      Check whether a vertex is contained in the right block (block 1).
      Parameters:
      vertex - a vertex in the graph
      Returns:
      true if the vertex is contained in the right block, false otherwise
    • isRight

      @Deprecated default boolean isRight(Integer vertex)
      Deprecated.
      Please use isRight(int) instead to avoid un/boxing.
      Check whether a vertex is contained in the right block (block 1).
      Specified by:
      isRight in interface VertexBiPartition<Integer,Integer>
      Parameters:
      vertex - a vertex in the graph
      Returns:
      true if the vertex is contained in the right block, false otherwise
    • vertexBlock

      default int vertexBlock(int vertex)
      Description copied from interface: IVertexPartition
      Get the block containing a vertex.
      Specified by:
      vertexBlock in interface IVertexPartition
      Parameters:
      vertex - a vertex in the graph
      Returns:
      index of the block containing the vertex, in range \([0, blocksNum)\)
    • vertexBlock

      @Deprecated default int vertexBlock(Integer vertex)
      Deprecated.
      Please use vertexBlock(int) instead to avoid un/boxing.
      Get the block containing a vertex.
      Specified by:
      vertexBlock in interface IVertexPartition
      Specified by:
      vertexBlock in interface VertexBiPartition<Integer,Integer>
      Specified by:
      vertexBlock in interface VertexPartition<Integer,Integer>
      Parameters:
      vertex - a vertex in the graph
      Returns:
      index of the block containing the vertex, in range \([0, blocksNum)\)
    • leftVertices

      default IntSet leftVertices()
      Description copied from interface: VertexBiPartition
      Get the vertices in the 'left' block.

      The left block is the block with index 0.

      Specified by:
      leftVertices in interface VertexBiPartition<Integer,Integer>
      Returns:
      the vertices in the left block
    • rightVertices

      default IntSet rightVertices()
      Description copied from interface: VertexBiPartition
      Get the vertices in the 'right' block.

      The right block is the block with index 1.

      Specified by:
      rightVertices in interface VertexBiPartition<Integer,Integer>
      Returns:
      the vertices in the right block
    • leftEdges

      default IntSet leftEdges()
      Description copied from interface: VertexBiPartition
      Get the edges that are contained in the left block.

      The left block is the block with index 0, and edges contained in it are edges with both endpoints in the left block.

      Specified by:
      leftEdges in interface VertexBiPartition<Integer,Integer>
      Returns:
      the edges that are contained in the left block
    • rightEdges

      default IntSet rightEdges()
      Description copied from interface: VertexBiPartition
      Get the edges that are contained in the right block.

      The right block is the block with index 1, and edges contained in it are edges with both endpoints in the right block.

      Specified by:
      rightEdges in interface VertexBiPartition<Integer,Integer>
      Returns:
      the edges that are contained in the right block
    • crossEdges

      default IntSet crossEdges()
      Description copied from interface: VertexBiPartition
      Get the edges that cross between the left and right blocks.

      An edge \((u,v)\) is said to cross between two blocks \(b_1\) and \(b_2\) if \(u\) is contained in \(b_1\) and \(v\) is contained in \(b_2\). Note that if the graph is directed, the cross edges of \((b_1,b_2)\) are different that \((b_2,b_1)\), since the direction of the edge matters. In that case, the edges returned by this functions are edges sourced in the left block and targeted in the right block. To get the edges sourced in the right block and targeted in the left block, use crossEdges(1, 0).

      Specified by:
      crossEdges in interface VertexBiPartition<Integer,Integer>
      Returns:
      the edges that cross between the left and right blocks
    • fromMap

      static IVertexBiPartition fromMap(IntGraph g, Map<Integer,Boolean> map)
      Create a new vertex bi-partition from a vertex-side map.

      Note that this function does not validate the input. For that, see isPartition(IntGraph, IntPredicate).

      Parameters:
      g - the graph
      map - a map from vertex to either true or false
      Returns:
      a new vertex bi-partition
    • fromMapping

      static IVertexBiPartition fromMapping(IntGraph g, IntPredicate mapping)
      Create a new vertex bi-partition from a vertex-side mapping function.

      Note that this function does not validate the input. For that, see isPartition(IntGraph, IntPredicate).

      Parameters:
      g - the graph
      mapping - a mapping function that maps from a vertex to either true or false, where true means the vertex is contained in the left block and false means the vertex is contained in the right block
      Returns:
      a new vertex bi-partition
    • fromWeights

      static IVertexBiPartition fromWeights(IntGraph g, IWeightsBool weights)
      Create a new vertex bi-partition from a vertex-side weights container.
      Parameters:
      g - the graph
      weights - a weights container that maps from a vertex to either true or false, where true means the vertex is contained in the left block and false means the vertex is contained in the right block
      Returns:
      a new vertex bi-partition
    • fromBitmap

      static IVertexBiPartition fromBitmap(IndexGraph g, com.jgalgo.internal.util.Bitmap bitmap)
      Create a new vertex bi-partition from a bitmap.

      This function can be used only for index graphs.

      Parameters:
      g - the index graph
      bitmap - a bitmap where true means the vertex is contained in the left block and false means the vertex is contained in the right block. The bitmap is not copied, and it is assumed the caller of this function will not modify the bitmap after calling this function
      Returns:
      a new vertex bi-partition
    • isPartition

      static boolean isPartition(IntGraph g, IntPredicate mapping)
      Check if a mapping is a valid bi-partition of the vertices of a graph.

      A valid vertex bi-partition is a mapping from each vertex to either true or false, in which there are not 'empty blocks', namely at least one vertex is mapped to true and another one is mapped to true.

      Parameters:
      g - the graph
      mapping - a mapping function that maps from a vertex to either true or false
      Returns:
      true if the mapping is a valid bi-partition of the vertices of the graph, false otherwise