Interface ImmutableEdgecutFragment<OID_T,​VID_T,​VDATA_T,​EDATA_T>

  • Type Parameters:
    OID_T - Type of original vertex ID.
    VID_T - Type of global vertex ID and local vertex ID.
    VDATA_T - Type of data on vertices.
    EDATA_T - Type of data on edges.
    All Superinterfaces:
    EdgecutFragment<OID_T,​VID_T,​VDATA_T,​EDATA_T>, com.alibaba.fastffi.FFIPointer, FFIType, FragmentBase<OID_T,​VID_T,​VDATA_T,​EDATA_T>, Serializable

    public interface ImmutableEdgecutFragment<OID_T,​VID_T,​VDATA_T,​EDATA_T>
    extends EdgecutFragment<OID_T,​VID_T,​VDATA_T,​EDATA_T>
    Java wrapper for grape ImmutableEdgecutFragment.

    With an edgecut partition, each vertex is assigned to a fragment. In a fragment, inner vertices are those vertices assigned to it, and the outer vertices are the remaining vertices adjacent to some of the inner vertices. The load strategy defines how to store the adjacency between inner and outer vertices.

     For example, a graph
     G = {V, E}
     V = {v0, v1, v2, v3, v4}
     E = {(v0, v2), (v0, v3), (v1, v0), (v3, v1), (v3, v4), (v4, v1), (v4, v2)}
     

    Subset V_0 = {v0, v1} is assigned to fragment_0, so InnerVertices_0 = {v0, v1}

    Subset V_0 = {v0, v1} is assigned to fragment_0, so InnerVertices_0 = {v0, v1}

    If the load strategy is kOnlyIn: All incoming edges (along with the source vertices) of inner vertices will be stored in a fragment. So,OuterVertices_0 = {v3, v4}, E_0 = {(v1, v0), (v3, v1),(v4, v1)}

    If the load strategy is kOnlyOut: All outgoing edges (along with the destination vertices) of inner vertices will be stored in a fragment. So, OuterVertices_0 = {v2, v3}, E_0 = {(v0, v2), (v0, v3), (v1, v0)} If the load strategy is kBothOutIn: All incoming edges (along with the source vertices) and outgoing edges (along with destination vertices) of inner vertices will be stored in a fragment. So, OuterVertices_0 = {v2, v3, v4}, E_0 = {(v0, v2), (v0, v3), (v1, v0), (v3, v1), (v4, v1), (v4, v2)}

    Inner vertices and outer vertices of a fragment will be given a local ID {0, 1, ..., ivnum - 1, ivnum, ..., ivnum + ovnum - 1}, then iterate on vertices can be implemented to increment the local ID. Also, the sets of inner vertices, outer vertices and all vertices are ranges of local ID.

    See Also:
    EdgecutFragment, FragmentBase