pub fn partition_by_extendable_hash_values<T: core::graph::VertexExtendableHash>(
    orbits_to_be_partitioned: &Vec<core::orbit_ops::Orbit>,
    vertices: &Vec<T::VertexType>,
    fixed_hash_values: &Vec<core::graph::VertexFixedHashValue>,
    extendable_hash_entities: &mut Vec<T>,
    extendable_hash_values: &mut Vec<core::graph::VertexExtendableHashValue>,
    numbering: &mut Vec<usize>,
    orbits_residual: &mut Vec<core::orbit_ops::Orbit>
){
    let mut orbits_to_be_partitioned_tmp = orbits_to_be_partitioned.to_vec();
    while orbits_to_be_partitioned_tmp.len() > 0 {
        if let Some(orbit_tbp) = orbits_to_be_partitioned_tmp.pop() {
            if extendable_hash_entities[orbit_tbp[0]].is_completed() {
                orbits_residual.push(orbit_tbp);
            } else {
                for &idx in orbit_tbp.iter() {
                    extendable_hash_entities[idx].extend(vertices);
                    extendable_hash_values[idx] = extendable_hash_entities[idx].value(fixed_hash_values);
                }
                partition_by_hash_values::<core::graph::VertexExtendableHashValue>(&orbit_tbp, extendable_hash_values, numbering[orbit_tbp[0]], numbering, &mut orbits_to_be_partitioned_tmp);
            }
        }
    }
}
/// Quicksort and Extension algorithm for extendable hash_values 
Quicksort and Extension algorithm for extendable hash_values
Quicksort and Extension algorithm for extendable hash_values
pub fn partition_by_extendable_hash_values<T: core::graph::VertexExtendableHash>(
    orbits_to_be_partitioned: &Vec<core::orbit_ops::Orbit>,
    vertices: &Vec<T::VertexType>,
    fixed_hash_values: &Vec<core::graph::VertexFixedHashValue>,
    extendable_hash_entities: &mut Vec<T>,
    extendable_hash_values: &mut Vec<core::graph::VertexExtendableHashValue>,
    numbering: &mut Vec<usize>,
    orbits_residual: &mut Vec<core::orbit_ops::Orbit>
){
    let mut orbits_to_be_partitioned_tmp = orbits_to_be_partitioned.to_vec();
    while orbits_to_be_partitioned_tmp.len() > 0 {
        if let Some(orbit_tbp) = orbits_to_be_partitioned_tmp.pop() {
            if extendable_hash_entities[orbit_tbp[0]].is_completed() {
                orbits_residual.push(orbit_tbp);
            } else {
                for &idx in orbit_tbp.iter() {
                    extendable_hash_entities[idx].extend(vertices);
                    extendable_hash_values[idx] = extendable_hash_entities[idx].value(fixed_hash_values);
                }
                partition_by_hash_values::<core::graph::VertexExtendableHashValue>(&orbit_tbp, extendable_hash_values, numbering[orbit_tbp[0]], numbering, &mut orbits_to_be_partitioned_tmp);
            }
        }
    }
}
pub fn partition_by_extendable_hash_values < T : core :: graph :: VertexExtendableHash > ( orbits_to_be_partitioned : & Vec < core :: orbit_ops :: Orbit > , vertices : & Vec < T :: VertexType > , fixed_hash_values : & Vec < core :: graph :: VertexFixedHashValue > , extendable_hash_entities : & mut Vec < T > , extendable_hash_values : & mut Vec < core :: graph :: VertexExtendableHashValue > , numbering : & mut Vec < usize > , orbits_residual : & mut Vec < core :: orbit_ops :: Orbit > ) { let mut orbits_to_be_partitioned_tmp = orbits_to_be_partitioned . to_vec ( ) ; while orbits_to_be_partitioned_tmp . len ( ) > 0 { if let Some ( orbit_tbp ) = orbits_to_be_partitioned_tmp . pop ( ) { if extendable_hash_entities [ orbit_tbp [ 0 ] ] . is_completed ( ) { orbits_residual . push ( orbit_tbp ) ; } else { for & idx in orbit_tbp . iter ( ) { extendable_hash_entities [ idx ] . extend ( vertices ) ; extendable_hash_values [ idx ] = extendable_hash_entities [ idx ] . value ( fixed_hash_values ) ; } partition_by_hash_values :: < core :: graph :: VertexExtendableHashValue > ( & orbit_tbp , extendable_hash_values , numbering [ orbit_tbp [ 0 ] ] , numbering , & mut orbits_to_be_partitioned_tmp ) ; } } } }
Quicksort and Extension algorithm for extendable hash_values
Quicksort and Extension algorithm for extendable hash_values
orbits_to_be_partitioned
&Vec<core::orbit_ops::Orbit>
vertices
&Vec<T::VertexType>
fixed_hash_values
&Vec<core::graph::VertexFixedHashValue>
extendable_hash_entities
&mut Vec<T>
extendable_hash_values
&mut Vec<core::graph::VertexExtendableHashValue>
numbering
&mut Vec<usize>
orbits_residual
&mut Vec<core::orbit_ops::Orbit>
orbits_to_be_partitioned
&Vec<core::orbit_ops::Orbit>
vertices
&Vec<T::VertexType>
fixed_hash_values
&Vec<core::graph::VertexFixedHashValue>
extendable_hash_entities
&mut Vec<T>
extendable_hash_values
&mut Vec<core::graph::VertexExtendableHashValue>
numbering
&mut Vec<usize>
orbits_residual
&mut Vec<core::orbit_ops::Orbit>